[automerger skipped] Merge "Fix AppBatteryPreferenceTest flaky" into main am: 5462789fae -s ours am: 7423e21ba3 -s ours
am skip reason: Merged-In I5a1753835d2d47712ea249081c9a77c455eb3291 with SHA-1 23c66d1278 is already in history
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/3077806
Change-Id: Ied279905ec1a6595f12660660cdca09c1bf3b2a3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index cb898be..d6a54f2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -85,6 +85,7 @@
"notification_flags_lib",
"securebox",
"android.os.flags-aconfig-java",
+ "//frameworks/libs/systemui:com_android_systemui_shared_flags_lib",
// Settings dependencies
"FingerprintManagerInteractor",
@@ -108,8 +109,6 @@
"telephony_flags_core_java_lib",
"setupdesign-lottie-loading-layout",
"device_policy_aconfig_flags_lib",
- "kotlinx-coroutines-core",
- "kotlinx-coroutines-android",
],
plugins: ["androidx.room_room-compiler-plugin"],
@@ -125,6 +124,9 @@
"telephony-common",
"ims-common",
],
+ flags_packages: [
+ "android.app.flags-aconfig",
+ ],
}
platform_compat_config {
@@ -155,6 +157,9 @@
optimize: {
proguard_flags_files: ["proguard.flags"],
},
+ flags_packages: [
+ "android.app.flags-aconfig",
+ ],
}
android_library_import {
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 90b42f4..b28da4f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -140,7 +140,7 @@
<uses-permission android:name="android.permission.REMAP_MODIFIER_KEYS" />
<uses-permission android:name="android.permission.ACCESS_GPU_SERVICE" />
<uses-permission android:name="android.permission.MANAGE_GAME_MODE" />
- <uses-permission android:name="android.permission.RESTART_PHONE_PROCESS" />
+ <uses-permission android:name="android.permission.RESTART_TELEPHONY_PROCESS" />
<uses-permission android:name="android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES" />
<uses-permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
@@ -1287,20 +1287,63 @@
</activity>
<activity
- android:name="Settings$ZenModeSettingsActivity"
+ android:name="Settings$ModesSettingsActivity"
android:label="@string/zen_mode_settings_title"
android:icon="@drawable/ic_homepage_notification"
android:exported="true">
- <intent-filter android:priority="1">
+ <intent-filter android:priority="1"
+ android:featureFlag="android.app.modes_ui">
<action android:name="android.settings.ZEN_MODE_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <intent-filter android:priority="1">
+ <intent-filter android:priority="1"
+ android:featureFlag="android.app.modes_ui">
<action android:name="android.settings.ZEN_MODE_PRIORITY_SETTINGS" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <intent-filter android:priority="41">
+ <intent-filter android:priority="41"
+ android:featureFlag="android.app.modes_ui">
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="com.android.settings.SHORTCUT" />
+ </intent-filter>
+ <intent-filter android:priority="10"
+ android:featureFlag="android.app.modes_ui">
+ <action android:name="android.settings.ZEN_MODE_AUTOMATION_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="10"
+ android:featureFlag="android.app.modes_ui">
+ <action android:name="android.settings.ACTION_CONDITION_PROVIDER_SETTINGS" />
+ <category android:name="android.intent.category.BROWSABLE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.notification.modes.ZenModesListFragment"/>
+ <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+ android:value="@string/menu_key_notifications"/>
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ </activity>
+
+ <activity
+ android:name="Settings$ZenModeSettingsActivity"
+ android:label="@string/zen_mode_settings_title"
+ android:icon="@drawable/ic_homepage_notification"
+ android:exported="true">
+ <intent-filter android:priority="1"
+ android:featureFlag="!android.app.modes_ui">
+ <action android:name="android.settings.ZEN_MODE_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="1"
+ android:featureFlag="!android.app.modes_ui">
+ <action android:name="android.settings.ZEN_MODE_PRIORITY_SETTINGS" />
+ <category android:name="android.intent.category.BROWSABLE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <intent-filter android:priority="41"
+ android:featureFlag="!android.app.modes_ui">
<action android:name="android.intent.action.MAIN" />
<category android:name="com.android.settings.SHORTCUT" />
</intent-filter>
@@ -1313,6 +1356,20 @@
</activity>
<activity
+ android:name="Settings$ModeSettingsActivity"
+ android:exported="true">
+ <intent-filter android:priority="1"
+ android:featureFlag="android.app.modes_ui">
+ <action android:name="android.settings.AUTOMATIC_ZEN_RULE_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.notification.modes.ZenModeFragment"/>
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ </activity>
+
+ <activity
android:name=".notification.zen.ZenSuggestionActivity"
android:label="@string/zen_mode_settings_title"
android:icon="@drawable/ic_suggestion_dnd"
@@ -1351,11 +1408,13 @@
android:label="@string/zen_mode_automation_settings_title"
android:icon="@drawable/ic_notifications"
android:exported="true">
- <intent-filter android:priority="1">
+ <intent-filter android:priority="10"
+ android:featureFlag="!android.app.modes_ui">
<action android:name="android.settings.ZEN_MODE_AUTOMATION_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <intent-filter android:priority="1">
+ <intent-filter android:priority="10"
+ android:featureFlag="!android.app.modes_ui">
<action android:name="android.settings.ACTION_CONDITION_PROVIDER_SETTINGS" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
@@ -1368,6 +1427,19 @@
android:value="true" />
</activity>
+ <activity
+ android:name=".Settings$ManageAdaptiveNotificationsActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.settings.MANAGE_ADAPTIVE_NOTIFICATIONS"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.notification.PoliteNotificationsPreferenceFragment" />
+ <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+ android:value="@string/menu_key_notifications"/>
+ </activity>
+
<activity android:name="Settings$WallpaperSettingsActivity"
android:label="@string/wallpaper_settings_fragment_title"
android:icon="@drawable/ic_wallpaper"
@@ -2832,17 +2904,20 @@
<!-- Note this must not be exported since it returns the password in the intent -->
<activity android:name=".password.ConfirmLockPattern$InternalActivity"
android:exported="false"
+ android:enableOnBackInvokedCallback="false"
android:theme="@style/GlifTheme.Light"/>
<!-- Note this must not be exported since it returns the password in the intent -->
<activity android:name=".password.ConfirmLockPassword$InternalActivity"
android:exported="false"
android:windowSoftInputMode="adjustResize"
+ android:enableOnBackInvokedCallback="false"
android:theme="@style/GlifTheme.Light"/>
<activity android:name=".password.SetupChooseLockGeneric"
android:theme="@style/GlifTheme.Light"
android:exported="true"
+ android:enableOnBackInvokedCallback="false"
android:label="@string/lock_settings_picker_title">
<intent-filter android:priority="1">
<action android:name="com.android.settings.SETUP_LOCK_SCREEN" />
@@ -2852,16 +2927,19 @@
<activity android:name=".password.SetupChooseLockGeneric$InternalActivity"
android:exported="false"
+ android:enableOnBackInvokedCallback="false"
android:excludeFromRecents="true" />
<activity android:name=".password.ChooseLockGeneric"
android:label="@string/lockpassword_choose_lock_generic_header"
android:excludeFromRecents="true"
+ android:enableOnBackInvokedCallback="false"
android:exported="false" />
<activity android:name=".password.SetNewPasswordActivity"
android:theme="@android:style/Theme.NoDisplay"
android:exported="true"
+ android:enableOnBackInvokedCallback="false"
android:excludeFromRecents="true" >
<intent-filter android:priority="1">
<action android:name="android.app.action.SET_NEW_PASSWORD" />
@@ -2907,24 +2985,29 @@
<activity android:name=".password.ChooseLockGeneric$InternalActivity"
android:exported="false"
android:label="@string/lockpassword_choose_lock_generic_header"
+ android:enableOnBackInvokedCallback="false"
android:excludeFromRecents="true" />
<activity android:name=".password.SetupChooseLockPattern"
android:exported="false"
+ android:enableOnBackInvokedCallback="false"
android:theme="@style/GlifTheme.Light" />
<activity android:name=".password.ChooseLockPattern"
android:exported="false"
+ android:enableOnBackInvokedCallback="false"
android:theme="@style/GlifTheme.Light" />
<activity android:name=".password.SetupChooseLockPassword"
android:exported="false"
android:theme="@style/GlifTheme.Light"
+ android:enableOnBackInvokedCallback="false"
android:windowSoftInputMode="stateVisible|adjustResize" />
<activity android:name=".password.ChooseLockPassword"
android:exported="false"
android:theme="@style/GlifTheme.Light"
+ android:enableOnBackInvokedCallback="false"
android:windowSoftInputMode="stateVisible|adjustResize"/>
<activity
diff --git a/aconfig/settings_connecteddevice_flag_declarations.aconfig b/aconfig/settings_connecteddevice_flag_declarations.aconfig
index 7942ccd..b255096 100644
--- a/aconfig/settings_connecteddevice_flag_declarations.aconfig
+++ b/aconfig/settings_connecteddevice_flag_declarations.aconfig
@@ -9,13 +9,26 @@
}
flag {
+ name: "rotation_connected_display_setting"
+ namespace: "display_manager"
+ description: "Allow changing rotation of the connected display."
+ bug: "294015706"
+}
+
+flag {
+ name: "resolution_and_enable_connected_display_setting"
+ namespace: "display_manager"
+ description: "Allow enabling/disabling and changing resolution of the connected display."
+ bug: "253296253"
+}
+
+flag {
name: "enable_auth_challenge_for_usb_preferences"
namespace: "safety_center"
description: "Gates whether to require an auth challenge for changing USB preferences"
bug: "317367746"
}
-
flag {
name: "enable_bonded_bluetooth_device_searchable"
namespace: "pixel_cross_device_control"
@@ -24,4 +37,14 @@
metadata {
purpose: PURPOSE_BUGFIX
}
+}
+
+flag {
+ name: "exclude_webcam_auth_challenge"
+ namespace: "safety_center"
+ description: "Gates whether to exclude webcam from USB preferences auth challenge."
+ bug: "349370229"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
}
\ No newline at end of file
diff --git a/aconfig/settings_wifi_flag_declarations.aconfig b/aconfig/settings_wifi_flag_declarations.aconfig
new file mode 100644
index 0000000..cb8007f
--- /dev/null
+++ b/aconfig/settings_wifi_flag_declarations.aconfig
@@ -0,0 +1,12 @@
+package: "com.android.settings.flags"
+container: "system_ext"
+
+# NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
+
+flag {
+ name: "enable_wifi_sharing_runtime_fragment"
+ namespace: "prism_qr"
+ description: "Use WifiFeatureProvider to get the instance of WifiDppQrCodeGeneratorFragment."
+ bug: "329012096"
+}
+
diff --git a/proguard.flags b/proguard.flags
index 492404c..d1c97f3 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -65,3 +65,6 @@
-keep class androidx.window.extensions.** { *; }
-dontwarn androidx.window.extensions.**
-keep class androidx.window.** { *; }
+
+# Keep the com.android.settings.media_drm.FakeFeatureFlagsImpl
+-keep class com.android.settings.media_drm.FakeFeatureFlagsImpl { *; }
diff --git a/res-product/values-af/strings.xml b/res-product/values-af/strings.xml
index da5e11d..9aa1a22 100644
--- a/res-product/values-af/strings.xml
+++ b/res-product/values-af/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"\'n PIN word vereis om Gesigslot op te stel.\n\n\'n PIN beskerm die foon as dit verloor of gesteel word."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"\'n Patroon word vereis om Gesigslot op te stel.\n\n\'n Patroon beskerm die foon as dit verloor of gesteel word."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"\'n Wagwoord word vereis om Gesigslot op te stel.\n\n\'n Wagwoord beskerm die foon as dit verloor of gesteel word."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"\'n PIN word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n PIN beskerm die tablet as dit verloor of gesteel word."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"\'n Patroon word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n Patroon beskerm die tablet as dit verloor of gesteel word."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"\'n Wagwoord word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n Wagwoord beskerm die tablet as dit verloor of gesteel word."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"\'n PIN word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n PIN beskerm die toestel as dit verloor of gesteel word."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"\'n Patroon word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n Patroon beskerm die toestel as dit verloor of gesteel word."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"\'n Wagwoord word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n Wagwoord beskerm die toestel as dit verloor of gesteel word."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"\'n PIN word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n PIN beskerm die foon as dit verloor of gesteel word."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"\'n Patroon word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n Patroon beskerm die foon as dit verloor of gesteel word."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"\'n Wagwoord word vereis om Gesigslot en Vingerafdrukslot op te stel.\n\n\'n Wagwoord beskerm die foon as dit verloor of gesteel word."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"’n PIN word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n PIN beskerm die tablet as dit verloor of gesteel word."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"’n Patroon word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n Patroon beskerm die tablet as dit verloor of gesteel word."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"’n Wagwoord word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n Wagwoord beskerm die tablet as dit verloor of gesteel word."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"’n PIN word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n PIN beskerm die toestel as dit verloor of gesteel word."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"’n Patroon word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n Patroon beskerm die toestel as dit verloor of gesteel word."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"’n Wagwoord word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n Wagwoord beskerm die toestel as dit verloor of gesteel word."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"’n PIN word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n PIN beskerm die foon as dit verloor of gesteel word."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"’n Patroon word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n Patroon beskerm die foon as dit verloor of gesteel word."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"’n Wagwoord word vereis om Vingerafdrukslot en Gesigslot op te stel.\n\n’n Wagwoord beskerm die foon as dit verloor of gesteel word."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Dit vee die vingerafdrukprente en -model uit wat met \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" geassosieer word en op jou foon geberg is"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Dit vee die vingerafdrukprente en -model uit wat met \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" geassosieer word en op jou tablet geberg is"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Dit vee die vingerafdrukprente en -model uit wat met \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" geassosieer word en op jou toestel geberg is"</string>
diff --git a/res-product/values-am/strings.xml b/res-product/values-am/strings.xml
index f798028..6a7d19b 100644
--- a/res-product/values-am/strings.xml
+++ b/res-product/values-am/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"በመልክ መክፈትን ለማዋቀር ፒን ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"በመልክ መክፈትን ለማዋቀር ስርዓተ ጥለት ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ ስርዓተ ጥለት ይጠብቀዋል።"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"በመልክ መክፈትን ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር ፒን ያስፈልጋል።\n\nጡባዊው ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር ስርዓተ ጥለት ያስፈልጋል።\n\nጡባዊው ከጠፋ ወይም ከተሰረቀ ስርዓተ ጥለት ይጠብቀዋል።"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nጡባዊው ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር ፒን ያስፈልጋል።\n\nመሣሪያው ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር ስርዓተ ጥለት ያስፈልጋል።\n\nመሣሪያው ከጠፋ ወይም ከተሰረቀ ስርዓተ ጥለት ይጠብቀዋል።"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nመሣሪያው ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር ፒን ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር ስርዓተ ጥለት ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ ስርዓተ ጥለት ይጠብቀዋል።"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"በመልክ መክፈት እና በጣት አሻራ መክፈቻን ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር ፒን ያስፈልጋል።\n\nጡባዊው ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር ሥርዓተ ጥለት ያስፈልጋል።\n\nጡባዊው ከጠፋ ወይም ከተሰረቀ ሥርዓተ ጥለት ይጠብቀዋል።"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nጡባዊው ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር ፒን ያስፈልጋል።\n\nመሣሪያው ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር ሥርዓተ ጥለት ያስፈልጋል።\n\nመሣሪያው ከጠፋ ወይም ከተሰረቀ ሥርዓተ ጥለት ይጠብቀዋል።"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"በጣት አሻራ መክፈቻን እና በመልክ መክፈት ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nመሣሪያው ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር ፒን ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ ፒን ይጠብቀዋል።"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር ሥርዓተ ጥለት ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ ሥርዓተ ጥለት ይጠብቀዋል።"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"በጣት አሻራ መክፈቻን እና በመልክ መክፈትን ለማዋቀር የይለፍ ቃል ያስፈልጋል።\n\nስልኩ ከጠፋ ወይም ከተሰረቀ የይለፍ ቃል ይጠብቀዋል።"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ይህ በስልክዎ ላይ የተከማቹት የጣት አሻራ ምስሎችን እና ከ«<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» ጋር የተጎዳኘውን ሞዴል ይሰርዛል"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ይህ በጡባዊዎ ላይ የተከማቹት የጣት አሻራ ምስሎችን እና ከ«<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» ጋር የተጎዳኘውን ሞዴል ይሰርዛል"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ይህ በመሣሪያዎ ላይ ከተከማቸው «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» ጋር የተጎዳኙ የጣት አሻራ ምስሎችን እና ሞዴልን ይሰርዛል"</string>
diff --git a/res-product/values-ar/strings.xml b/res-product/values-ar/strings.xml
index 3e9ddb5..b936938 100644
--- a/res-product/values-ar/strings.xml
+++ b/res-product/values-ar/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"يجب ضبط رقم تعريف شخصي لإعداد ميزة \"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي رقم التعريف الشخصي الهاتف في حال فقدانه أو سرقته."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"يجب ضبط نقش لإعداد ميزة \"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي النقش الهاتف في حال فقدانه أو سرقته."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"يجب ضبط كلمة مرور لإعداد ميزة \"فتح الجهاز بالتعرف على الوجه\".\n\nتحمي كلمة المرور الهاتف في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"يجب ضبط رقم تعريف شخصي لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nيحمي رقم التعريف الشخصي الجهاز اللوحي في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"يجب ضبط نقش لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nيحمي النقش الجهاز اللوحي في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"يجب ضبط كلمة مرور لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nتحمي كلمة المرور الجهاز اللوحي في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"يجب ضبط رقم تعريف شخصي لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nيحمي رقم التعريف الشخصي الجهاز في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"يجب ضبط نقش لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nيحمي النقش الجهاز في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"يجب ضبط كلمة مرور لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nتحمي كلمة المرور الجهاز في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"يجب ضبط رقم تعريف شخصي لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nيحمي رقم التعريف الشخصي الهاتف في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"يجب ضبط نقش لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nيحمي النقش الهاتف في حال فقدانه أو سرقته."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"يجب ضبط كلمة مرور لإعداد ميزتَي \"فتح الجهاز بالتعرف على الوجه\" و\"فتح الجهاز ببصمة الإصبع\".\n\nتحمي كلمة المرور الهاتف في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"يجب ضبط رقم تعريف شخصي لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي رقم التعريف الشخصي الجهاز اللوحي في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"يجب ضبط نقش لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي النقش الجهاز اللوحي في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"يجب ضبط كلمة مرور لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nتحمي كلمة المرور الجهاز اللوحي في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"يجب ضبط رقم تعريف شخصي لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي رقم التعريف الشخصي الجهاز في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"يجب ضبط نقش لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي النقش الجهاز في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"يجب ضبط كلمة مرور لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nتحمي كلمة المرور الجهاز في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"يجب ضبط رقم تعريف شخصي لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي رقم التعريف الشخصي الهاتف في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"يجب ضبط نقش لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nيحمي النقش الهاتف في حال فقدانه أو سرقته."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"يجب ضبط كلمة مرور لإعداد ميزتَي \"فتح الجهاز ببصمة الإصبع\" و\"فتح الجهاز بالتعرف على الوجه\".\n\nتحمي كلمة المرور الهاتف في حال فقدانه أو سرقته."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"يؤدي هذا الإجراء إلى حذف النموذج والصور المرتبطة ببصمة الإصبع \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\"، والتي تم تخزينها على هاتفك"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"يؤدي هذا الإجراء إلى حذف النموذج والصور المرتبطة ببصمة الإصبع \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\"، والتي تم تخزينها على جهازك اللوحي"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"يؤدي هذا الإجراء إلى حذف النموذج والصور المرتبطة ببصمة الإصبع \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\"، والتي تم تخزينها على جهازك"</string>
diff --git a/res-product/values-as/strings.xml b/res-product/values-as/strings.xml
index 157f78a..9d9dd51 100644
--- a/res-product/values-as/strings.xml
+++ b/res-product/values-as/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ফেচ আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে ফ’নটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ফেচ আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে ফ’নটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ফেচ আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে ফ’নটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে টেবলেটটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে টেবলেটটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ফেচ আনলক ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে টেবলেটটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে ডিভাইছটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে ডিভাইছটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে ডিভাইচটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে ফ’নটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে ফ’নটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে ফ’নটো হেৰালে অথবা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে টেবলেটটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে টেবলেটটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ফে’চ আনলক ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে টেবলেটটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে ডিভাইচটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে ডিভাইচটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে ডিভাইচটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পিনৰ আৱশ্যক।\n\nএটা পিনে ফ’নটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা আৰ্হিৰ আৱশ্যক।\n\nএটা আৰ্হিয়ে ফ’নটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিবলৈ এটা পাছৱৰ্ডৰ আৱশ্যক।\n\nএটা পাছৱৰ্ডে ফ’নটো হেৰালে বা চুৰি হ’লে সেইটো সুৰক্ষিত কৰে।"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"এইটোৱে আপোনাৰ ফ’নটোত ষ্ট’ৰ হৈ থকা \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'ৰ সৈতে জড়িত ফিংগাৰপ্ৰিণ্টৰ প্ৰতিচ্ছবি আৰু মডেল মচি পেলায়"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"এইটোৱে আপোনাৰ টেবলেটটোত ষ্ট’ৰ হৈ থকা \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'ৰ সৈতে জড়িত ফিংগাৰপ্ৰিণ্টৰ প্ৰতিচ্ছবি আৰু মডেল মচি পেলায়"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"এইটোৱে আপোনাৰ ডিভাইচত ষ্ট’ৰ হৈ থকা \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'ৰ সৈতে জড়িত ফিংগাৰপ্ৰিণ্টৰ প্ৰতিচ্ছবি আৰু মডেল মচি পেলায়"</string>
diff --git a/res-product/values-az/strings.xml b/res-product/values-az/strings.xml
index 62f2db8..b54794c 100644
--- a/res-product/values-az/strings.xml
+++ b/res-product/values-az/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Feyskontrol üçün PIN lazımdır.\n\nCihaz itəndə və ya oğurlananda məlumatları qoruyur."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Üz ilə kiliddən çıxarma ayarlamaq üçün model tələb edilir.\n\nTelefonunuz itdikdə və ya oğurlandıqda model onu qoruyur."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Üz ilə kiliddən çıxarma ayarlamaq üçün parol tələb edilir.\n\nTelefonunuz itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Feyskontrol və barmaq izi ilə kiliddən çıxarmaq üçün PIN lazımdır.\n\nCihaz itəndə və ya oğurlananda məlumatları qoruyur."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Üz ilə kiliddən çıxarma və Barmaq izi ilə kiliddən çıxarma ayarlamaq üçün model tələb edilir.\n\nPlanşetiniz itdikdə və ya oğurlandıqda model onu qoruyur."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Üz ilə kiliddən çıxarma və Barmaq izi ilə kiliddən çıxarma ayarlamaq üçün parol tələb edilir.\n\nPlanşetiniz itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Feyskontrol və barmaq izi ilə kiliddən çıxarmaq üçün PIN lazımdır.\n\nCihaz itəndə və ya oğurlananda məlumatları qoruyur."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Üz ilə kiliddən çıxarma və Barmaq izi ilə kiliddən çıxarma ayarlamaq üçün model tələb edilir.\n\nCihazınız itdikdə və ya oğurlandıqda model onu qoruyur."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Üz ilə kiliddən çıxarma və Barmaq izi ilə kiliddən çıxarma ayarlamaq üçün parol tələb edilir.\n\nCihazınız itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Feyskontrol və barmaq izi ilə kiliddən çıxarmaq üçün PIN lazımdır.\n\nCihaz itəndə və ya oğurlananda məlumatları qoruyur."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Üz ilə kiliddən çıxarma və Barmaq izi ilə kiliddən çıxarma ayarlamaq üçün model tələb edilir.\n\nTelefonunuz itdikdə və ya oğurlandıqda model onu qoruyur."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Üz ilə kiliddən çıxarma və Barmaq izi ilə kiliddən çıxarma ayarlamaq üçün parol tələb edilir.\n\nTelefonunuz itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün PIN tələb edilir.\n\nPlanşet itdikdə və ya oğurlandıqda PIN onu qoruyur."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün model tələb edilir.\n\nPlanşet itdikdə və ya oğurlandıqda model onu qoruyur."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün parol tələb edilir.\n\nPlanşet itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün PIN tələb edilir.\n\nCihaz itdikdə və ya oğurlandıqda PIN onu qoruyur."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün model tələb edilir.\n\nCihaz itdikdə və ya oğurlandıqda model onu qoruyur."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün parol tələb edilir.\n\nCihaz itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün PIN tələb edilir.\n\nTelefon itdikdə və ya oğurlandıqda PIN onu qoruyur."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün model tələb edilir.\n\nTelefon itdikdə və ya oğurlandıqda model onu qoruyur."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Barmaqla Kilidaçma və Üzlə Kilidaçma ayarlamaq üçün parol tələb edilir.\n\nTelefon itdikdə və ya oğurlandıqda parol onu qoruyur."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Bu, telefonunuzda saxlanılan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ilə əlaqəli barmaq izi şəkillərini və modelini silir"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Bu, planşetinizdə saxlanılan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ilə əlaqəli barmaq izi şəkillərini və modelini silir"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Bu, cihazınızda saxlanılan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ilə əlaqəli barmaq izi şəkillərini və modelini silir"</string>
diff --git a/res-product/values-b+sr+Latn/strings.xml b/res-product/values-b+sr+Latn/strings.xml
index bbb1d70..7926331 100644
--- a/res-product/values-b+sr+Latn/strings.xml
+++ b/res-product/values-b+sr+Latn/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Za podešavanje otključavanja licem neophodan je PIN.\n\nPIN štiti telefon ako ga izgubite ili ga neko ukrade."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Za podešavanje otključavanja licem neophodan je šablon.\n\nŠablon štiti telefon ako ga izgubite ili ga neko ukrade."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Za podešavanje otključavanja licem neophodna je lozinka.\n\nLozinka štiti telefon ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Za podešavanje otključavanja licem i otiskom prsta neophodan je PIN.\n\nPIN štiti tablet ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Za podešavanje otključavanja licem i otiskom prsta neophodan je šablon.\n\nŠablon štiti tablet ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Za podešavanje otključavanja licem i otiskom prsta neophodna je lozinka.\n\nLozinka štiti tablet ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Za podešavanje otključavanja licem i otiskom prsta neophodan je PIN.\n\nPIN štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Za podešavanje otključavanja licem i otiskom prsta neophodan je šablon.\n\nŠablon štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Za podešavanje otključavanja licem i otiskom prsta neophodna je lozinka.\n\nLozinka štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Za podešavanje otključavanja licem i otiskom prsta neophodan je PIN.\n\nPIN štiti telefon ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Za podešavanje otključavanja licem i otiskom prsta neophodan je šablon.\n\nŠablon štiti telefon ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Za podešavanje otključavanja licem i otiskom prsta neophodna je lozinka.\n\nLozinka štiti telefon ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodan je PIN.\n\nPIN štiti tablet ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodan je šablon.\n\nŠablon štiti tablet ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodna je lozinka.\n\nLozinka štiti tablet ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodan je PIN.\n\nPIN štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodan je šablon.\n\nŠablon štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodna je lozinka.\n\nLozinka štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodan je PIN.\n\nPIN štiti telefon ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodan je šablon.\n\nŠablon štiti telefon ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Za podešavanje otključavanja otiskom prsta i otključavanja licem neophodna je lozinka.\n\nLozinka štiti telefon ako ga izgubite ili ga neko ukrade."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ovim se brišu slike i model otiska prsta u vezi sa otiskom <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> koji su sačuvani na telefonu"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ovim se brišu slike i model otiska prsta u vezi sa otiskom <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> koji su sačuvani na tabletu"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ovim se brišu slike i model otiska prsta u vezi sa otiskom <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> koji su sačuvani na uređaju"</string>
diff --git a/res-product/values-be/strings.xml b/res-product/values-be/strings.xml
index 2fe5f40..d4d2f19 100644
--- a/res-product/values-be/strings.xml
+++ b/res-product/values-be/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Каб наладзіць распазнаванне твару, неабходна ўвесці PIN-код.\n\nPIN-код абараняе тэлефон у выпадку страты ці крадзяжу."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Каб наладзіць распазнаванне твару, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе тэлефон у выпадку страты ці крадзяжу."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Каб наладзіць распазнаванне твару, неабходна ўвесці пароль.\n\nПароль абараняе тэлефон у выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці PIN-код.\n\nPIN-код абараняе планшэт у выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе планшэт у выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці пароль.\n\nПароль абараняе планшэт у выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці PIN-код.\n\nPIN-код абараняе прыладу ў выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе прыладу ў выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці пароль.\n\nПароль абараняе прыладу ў выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці PIN-код.\n\nPIN-код абараняе тэлефон у выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе тэлефон у выпадку страты ці крадзяжу."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Каб наладзіць распазнаванне твару і разблакіроўку адбіткам пальца, неабходна ўвесці пароль.\n\nПароль абараняе тэлефон у выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці PIN-код.\n\nPIN-код абараняе планшэт у выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе планшэт у выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці пароль.\n\nПароль абараняе планшэт у выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці PIN-код.\n\nPIN-код абараняе прыладу ў выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе прыладу ў выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці пароль.\n\nПароль абараняе прыладу ў выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці PIN-код.\n\nPIN-код абараняе тэлефон у выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці ўзор разблакіроўкі.\n\nУзор разблакіроўкі абараняе тэлефон у выпадку страты ці крадзяжу."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Каб наладзіць разблакіроўку адбіткам пальца і распазнаванне твару, неабходна ўвесці пароль.\n\nПароль абараняе тэлефон у выпадку страты ці крадзяжу."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Відарысы і мадэль адбіткаў пальцаў, звязаныя з адбіткам \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", будуць выдалены з тэлефона"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Відарысы і мадэль адбіткаў пальцаў, звязаныя з адбіткам \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", будуць выдалены з планшэта"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Відарысы і мадэль адбіткаў пальцаў, звязаныя з адбіткам \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", будуць выдалены з прылады"</string>
diff --git a/res-product/values-bg/strings.xml b/res-product/values-bg/strings.xml
index bd8df6d..d9c1be5 100644
--- a/res-product/values-bg/strings.xml
+++ b/res-product/values-bg/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"За настройване на функцията за отключване с лице се изисква ПИН код.\n\nПИН кодът защитава телефона, ако бъде изгубен или откраднат."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"За настройване на функцията за отключване с лице се изисква фигура.\n\nФигурата защитава телефона, ако бъде изгубен или откраднат."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"За настройване на функцията за отключване с лице се изисква парола.\n\nПаролата защитава телефона, ако бъде изгубен или откраднат."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"За настройване на функциите за отключване с лице и отпечатък се изисква ПИН код.\n\nПИН кодът защитава таблета, ако бъде изгубен или откраднат."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"За настройване на функциите за отключване с лице и отпечатък се изисква фигура.\n\nФигурата защитава таблета, ако бъде изгубен или откраднат."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"За настройване на функциите за отключване с лице и отпечатък се изисква парола.\n\nПаролата защитава таблета, ако бъде изгубен или откраднат."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"За настройване на функциите за отключване с лице и отпечатък се изисква ПИН код.\n\nПИН кодът защитава устройството, ако бъде изгубено или откраднато."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"За настройване на функциите за отключване с лице и отпечатък се изисква фигура.\n\nФигурата защитава устройството, ако бъде изгубено или откраднато."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"За настройване на функциите за отключване с лице и отпечатък се изисква парола.\n\nПаролата защитава устройството, ако бъде изгубено или откраднато."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"За настройване на функциите за отключване с лице и отпечатък се изисква ПИН код.\n\nПИН кодът защитава телефона, ако бъде изгубен или откраднат."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"За настройване на функциите за отключване с лице и отпечатък се изисква фигура.\n\nФигурата защитава телефона, ако бъде изгубен или откраднат."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"За настройване на функциите за отключване с лице и отпечатък се изисква парола.\n\nПаролата защитава телефона, ако бъде изгубен или откраднат."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"За настройване на функциите за отключване с лице и отпечатък се изисква ПИН код.\n\nПИН кодът защитава таблета, ако бъде изгубен или откраднат."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"За настройване на функциите за отключване с лице и отпечатък се изисква фигура.\n\nФигурата защитава таблета, ако бъде изгубен или откраднат."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"За настройване на функциите за отключване с лице и отпечатък се изисква парола.\n\nПаролата защитава таблета, ако бъде изгубен или откраднат."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"За настройване на функциите за отключване с лице и отпечатък се изисква ПИН код.\n\nПИН кодът защитава устройството, ако бъде изгубено или откраднато."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"За настройване на функциите за отключване с лице и отпечатък се изисква фигура.\n\nФигурата защитава устройството, ако бъде изгубено или откраднато."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"За настройване на функциите за отключване с лице и отпечатък се изисква парола.\n\nПаролата защитава устройството, ако бъде изгубено или откраднато."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"За настройване на функциите за отключване с лице и отпечатък се изисква ПИН код.\n\nПИН кодът защитава телефона, ако бъде изгубен или откраднат."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"За настройване на функциите за отключване с лице и отпечатък се изисква фигура.\n\nФигурата защитава телефона, ако бъде изгубен или откраднат."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"За настройване на функциите за отключване с лице и отпечатък се изисква парола.\n\nПаролата защитава телефона, ако бъде изгубен или откраднат."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Това действие ще изтрие изображенията и модела на отпечатъка, свързани с(ъс) <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> и съхранявани на телефона ви"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Това действие ще изтрие изображенията и модела на отпечатъка, свързани с(ъс) <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> и съхранявани на таблета ви"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Това действие ще изтрие изображенията и модела на отпечатъка, свързани с(ъс) <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> и съхранявани на това устройство"</string>
diff --git a/res-product/values-bn/strings.xml b/res-product/values-bn/strings.xml
index d7e0e3a..e7187b6 100644
--- a/res-product/values-bn/strings.xml
+++ b/res-product/values-bn/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"\'ফেস আনলক\' সেট আপ করতে একটি পিন প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"\'ফেস আনলক\' সেট আপ করতে একটি প্যাটার্ন প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"\'ফেস আনলক\' সেট আপ করতে একটি পাসওয়ার্ড প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি পিন প্রয়োজন।\n\nট্যাবলেট হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি প্যাটার্ন প্রয়োজন।\n\nট্যাবলেট হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি পাসওয়ার্ড প্রয়োজন।\n\nট্যাবলেট হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি পিন প্রয়োজন।\n\nডিভাইস হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি প্যাটার্ন প্রয়োজন।\n\nডিভাইস হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি পাসওয়ার্ড প্রয়োজন।\n\nডিভাইস হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি পিন প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট-আপ করতে একটি প্যাটার্ন প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"\'ফেস আনলক\' এবং \'ফিঙ্গারপ্রিন্ট আনলক\' সেট আপ করতে একটি পাসওয়ার্ড প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে পিন প্রয়োজন।\n\nট্যাবলেট হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে প্যাটার্ন প্রয়োজন।\n\nট্যাবলেট হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে পাসওয়ার্ড প্রয়োজন।\n\nট্যাবলেট হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে পিন প্রয়োজন।\n\nডিভাইস হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে প্যাটার্ন প্রয়োজন।\n\nডিভাইস হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে পাসওয়ার্ড প্রয়োজন।\n\nডিভাইস হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে পিন প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, পিন সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে প্যাটার্ন প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, প্যাটার্ন সেটি সুরক্ষিত রাখে।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"\'ফিঙ্গারপ্রিন্ট আনলক\' এবং \'ফেস আনলক\' সেট-আপ করতে পাসওয়ার্ড প্রয়োজন।\n\nফোন হারিয়ে বা চুরি হয়ে গেলে, পাসওয়ার্ড সেটি সুরক্ষিত রাখে।"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"এটি আপনার ফোনে সেভ হয়ে থাকা \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'-এর সাথে সম্পর্কিত ফিঙ্গারপ্রিন্টের ছবি ও মডেল মুছে দেয়"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"এটি আপনার ট্যাবলেটে সেভ হয়ে থাকা ফিঙ্গারপ্রিন্টের ছবি এবং \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'-এর সাথে সম্পর্কিত অন্যান্য মডেল মুছে দেয়"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"এটি আপনার ডিভাইসে স্টোর হয়ে থাকা আঙ্গুলের ছাপের ইমেজ এবং \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'-এর সঙ্গে সম্পর্কিত অন্যান্য মডেল মুছে দেয়"</string>
diff --git a/res-product/values-bs/strings.xml b/res-product/values-bs/strings.xml
index 7586f2d..69460e5 100644
--- a/res-product/values-bs/strings.xml
+++ b/res-product/values-bs/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Za postavljanje otključavanja licem potreban je PIN.\n\nOn štiti telefon ako ga izgubite ili ga neko ukrade."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Za postavljanje otključavanja licem potreban je uzorak.\n\nOn štiti telefon ako ga izgubite ili ga neko ukrade."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Za postavljanje otključavanja licem potrebna je lozinka.\n\nOna štiti telefon ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potreban je PIN.\n\nOn štiti tablet ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potreban je uzorak.\n\nOn štiti tablet ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potrebna je lozinka.\n\nOna štiti tablet ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potreban je PIN.\n\nOn štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potreban je uzorak.\n\nOn štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potrebna je lozinka.\n\nOna štiti uređaj ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potreban je PIN.\n\nOn štiti telefon ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potreban je uzorak.\n\nOn štiti telefon ako ga izgubite ili ga neko ukrade."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Za postavljanje otključavanja licem i otključavanja otiskom prsta potrebna je lozinka.\n\nOna štiti telefon ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"PIN je obavezan da postavite otključavanje otiskom prsta i otključavanje licem.\n\nPIN štiti tablet u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Uzorak je obavezan da postavite otključavanje otiskom prsta i otključavanje licem.\n\nUzorak štiti tablet u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Lozinka je obavezna da postavite otključavanje otiskom prsta i otključavanje licem.\n\nLozinka štiti tablet u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"PIN je obavezan da postavite otključavanje otiskom prsta i otključavanje licem.\n\nPIN štiti uređaj u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Uzorak je obavezan da postavite otključavanje otiskom prsta i otključavanje licem.\n\nUzorak štiti uređaj u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Lozinka je obavezna da postavite otključavanje otiskom prsta i otključavanje licem.\n\nLozinka štiti uređaj u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"PIN je obavezan da postavite otključavanje otiskom prsta i otključavanje licem.\n\nPIN štiti telefon u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Uzorak je obavezan da postavite otključavanje otiskom prsta i otključavanje licem.\n\nUzorak štiti telefon u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Lozinka je obavezna da postavite otključavanje otiskom prsta i otključavanje licem.\n\nLozinka štiti telefon u slučaju gubitka ili krađe."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ovim će se izbrisati slike i model otiska prsta koji su povezani s ID-om \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" i pohranjeni na vašem telefonu"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ovim će se izbrisati slike i model otiska prsta koji su povezani s ID-om \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" i pohranjeni na vašem tabletu"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ovim će se izbrisati slike i model otiska prsta koji su povezani s ID-om \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" i pohranjeni na vašem uređaju"</string>
diff --git a/res-product/values-ca/strings.xml b/res-product/values-ca/strings.xml
index bf2c066..e807aa1 100644
--- a/res-product/values-ca/strings.xml
+++ b/res-product/values-ca/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Cal definir un PIN per configurar Desbloqueig facial.\n\nEl PIN protegeix el telèfon si es perd o te\'l roben."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Cal definir un patró per configurar Desbloqueig facial.\n\nEl patró protegeix el telèfon si es perd o te\'l roben."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Cal definir una contrasenya per configurar Desbloqueig facial.\n\nLa contrasenya protegeix el telèfon si es perd o te\'l roben."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Cal definir un PIN per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl PIN protegeix la tauleta si es perd o te la roben."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Cal definir un patró per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl patró protegeix la tauleta si es perd o te la roben."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Cal definir una contrasenya per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nLa contrasenya protegeix la tauleta si es perd o te la roben."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Cal definir un PIN per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl PIN protegeix el dispositiu si es perd o te\'l roben."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Cal definir un patró per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl patró protegeix el dispositiu si es perd o te\'l roben."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Cal definir una contrasenya per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nLa contrasenya protegeix el dispositiu si es perd o te\'l roben."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Cal definir un PIN per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl PIN protegeix el telèfon si es perd o te\'l roben."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Cal definir un patró per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl patró protegeix el telèfon si es perd o te\'l roben."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Cal definir una contrasenya per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nLa contrasenya protegeix el telèfon si es perd o te\'l roben."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Cal definir un PIN per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl PIN protegeix la tauleta si es perd o te la roben."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Cal definir un patró per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl patró protegeix la tauleta si es perd o te la roben."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Cal definir una contrasenya per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nLa contrasenya protegeix la tauleta si es perd o te la roben."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Cal definir un PIN per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl PIN protegeix el dispositiu si es perd o te\'l roben."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Cal definir un patró per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl patró protegeix el dispositiu si es perd o te\'l roben."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Cal definir una contrasenya per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nLa contrasenya protegeix el dispositiu si es perd o te\'l roben."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Cal definir un PIN per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl PIN protegeix el telèfon si es perd o te\'l roben."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Cal definir un patró per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nEl patró protegeix el telèfon si es perd o te\'l roben."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Cal definir una contrasenya per configurar Desbloqueig facial i Desbloqueig amb empremta digital.\n\nLa contrasenya protegeix el telèfon si es perd o te\'l roben."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Aquesta acció suprimeix les imatges i el model d\'empremta digital associats a <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que estan emmagatzemats al teu telèfon"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Aquesta acció suprimeix les imatges i el model d\'empremta digital associats a <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que estan emmagatzemats a la teva tauleta"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Aquesta acció suprimeix les imatges i el model d\'empremta digital associats a <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que estan emmagatzemats al teu dispositiu"</string>
diff --git a/res-product/values-cs/strings.xml b/res-product/values-cs/strings.xml
index 8502c24..47bd48b 100644
--- a/res-product/values-cs/strings.xml
+++ b/res-product/values-cs/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"K nastavení odemknutí obličejem je vyžadován PIN.\n\nPIN chrání telefon v případě ztráty nebo odcizení."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"K nastavení odemknutí obličejem je vyžadováno gesto.\n\nGesto chrání telefon v případě ztráty nebo odcizení."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"K nastavení odemknutí obličejem je vyžadováno heslo.\n\nHeslo chrání telefon v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadován PIN.\n\nPIN chrání tablet v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadováno gesto.\n\nGesto chrání tablet v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadováno heslo.\n\nHeslo chrání tablet v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadován PIN.\n\nPIN chrání zařízení v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadováno gesto.\n\nGesto chrání zařízení v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadováno heslo.\n\nHeslo chrání zařízení v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadován PIN.\n\nPIN chrání telefon v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadováno gesto.\n\nGesto chrání telefon v případě ztráty nebo odcizení."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"K nastavení odemknutí obličejem a odemknutí otiskem prstu je vyžadováno heslo.\n\nHeslo chrání telefon v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadován PIN.\n\nPIN chrání tablet v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadováno gesto.\n\nGesto chrání tablet v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadováno heslo.\n\nHeslo chrání tablet v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadován PIN.\n\nPIN chrání zařízení v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadováno gesto.\n\nGesto chrání zařízení v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadováno heslo.\n\nHeslo chrání zařízení v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadován PIN.\n\nPIN chrání telefon v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadováno gesto.\n\nGesto chrání telefon v případě ztráty nebo odcizení."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"K nastavení odemknutí otiskem prstu nebo obličejem je vyžadováno heslo.\n\nHeslo chrání telefon v případě ztráty nebo odcizení."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Touto akcí smažete snímky a model otisků prstů pro „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“, které jsou uloženy ve vašem telefonu."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Touto akcí vymažete snímky a model otisků prstů pro „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“, které jsou uloženy ve vašem tabletu"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Touto akcí vymažete snímky a model otisku prstu pro „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“, které jsou uloženy ve vašem zařízení"</string>
diff --git a/res-product/values-da/strings.xml b/res-product/values-da/strings.xml
index d46edcf..cf3f60c 100644
--- a/res-product/values-da/strings.xml
+++ b/res-product/values-da/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Du skal angive en pinkode for at konfigurere ansigtsoplåsning.\n\nEn pinkode beskytter telefonen, hvis den bliver væk eller stjålet."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Du skal angive et mønster for at konfigurere ansigtsoplåsning.\n\nEt mønster beskytter telefonen, hvis den bliver væk eller stjålet."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Du skal angive en adgangskode for at konfigurere ansigtsoplåsning.\n\nEn adgangskode beskytter telefonen, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Du skal angive en pinkode for at konfigurere ansigts- og fingeroplåsning.\n\nEn pinkode beskytter din tablet, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Du skal angive et mønster for at konfigurere ansigts- og fingeroplåsning.\n\nEt mønster beskytter din tablet, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Du skal angive en adgangskode for at konfigurere ansigts- og fingeroplåsning.\n\nEn adgangskode beskytter din tablet, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Du skal angive en pinkode for at konfigurere ansigts- og fingeroplåsning.\n\nEn pinkode beskytter enheden, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Du skal angive et mønster for at konfigurere ansigts- og fingeroplåsning.\n\nEt mønster beskytter enheden, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Du skal angive en adgangskode for at konfigurere ansigts- og fingeroplåsning.\n\nEn adgangskode beskytter enheden, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Du skal angive en pinkode for at konfigurere ansigts- og fingeroplåsning.\n\nEn pinkode beskytter telefonen, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Du skal angive et mønster for at konfigurere ansigts- og fingeroplåsning.\n\nEt mønster beskytter telefonen, hvis den bliver væk eller stjålet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Du skal angive en adgangskode for at konfigurere ansigts- og fingeroplåsning.\n\nEn adgangskode beskytter telefonen, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Du skal angive en pinkode for at konfigurere finger- og ansigtsoplåsning\n\nEn pinkode beskytter din tablet, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Du skal angive et mønster for at konfigurere finger- og ansigtsoplåsning.\n\nEt mønster beskytter din tablet, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Du skal angive en adgangskode for at konfigurere finger- og ansigtsoplåsning.\n\nEn adgangskode beskytter din tablet, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Du skal angive en pinkode for at konfigurere finger- og ansigtsoplåsning.\n\nEn pinkode beskytter enheden, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Du skal angive et mønster for at konfigurere finger- og ansigtsoplåsning.\n\nEt mønster beskytter enheden, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Du skal angive en adgangskode for at konfigurere finger- og ansigtsoplåsning.\n\nEn adgangskode beskytter enheden, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Du skal angive en pinkode for at konfigurere finger- og ansigtsoplåsning.\n\nEn pinkode beskytter telefonen, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Du skal angive et mønster for at konfigurere finger- og ansigtsoplåsning.\n\nEt mønster beskytter telefonen, hvis den bliver væk eller stjålet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Du skal angive en adgangskode for at konfigurere finger- og ansigtsoplåsning.\n\nEn adgangskode beskytter telefonen, hvis den bliver væk eller stjålet."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Dette sletter de fingeraftryksbilleder og den fingeraftryksmodel, der er knyttet til \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", og som er gemt på din telefon"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Dette sletter de fingeraftryksbilleder og den fingeraftryksmodel, der er knyttet til \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", og som er gemt på din tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Dette sletter de fingeraftryksbilleder og den fingeraftryksmodel, der er knyttet til \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", og som er gemt på din enhed"</string>
diff --git a/res-product/values-de/strings.xml b/res-product/values-de/strings.xml
index b736873..22613bf 100644
--- a/res-product/values-de/strings.xml
+++ b/res-product/values-de/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Zum Einrichten der Entsperrung per Gesichtserkennung ist eine PIN erforderlich.\n\nEine PIN schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Zum Einrichten der Entsperrung per Gesichtserkennung ist ein Muster erforderlich.\n\nEin Muster schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Zum Einrichten der Entsperrung per Gesichtserkennung ist ein Passwort erforderlich.\n\nEin Passwort schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist eine PIN erforderlich.\n\nEine PIN schützt das Tablet, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist ein Muster erforderlich.\n\nEin Muster schützt das Tablet, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist ein Passwort erforderlich.\n\nEin Passwort schützt das Tablet, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist eine PIN erforderlich.\n\nEine PIN schützt das Gerät, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist ein Muster erforderlich.\n\nEin Muster schützt das Gerät, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist ein Passwort erforderlich.\n\nEin Passwort schützt das Gerät, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist eine PIN erforderlich.\n\nEine PIN schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist ein Muster erforderlich.\n\nEin Muster schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Zum Einrichten der Entsperrung per Gesichtserkennung und der Entsperrung per Fingerabdruck ist ein Passwort erforderlich.\n\nEin Passwort schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist eine PIN erforderlich.\n\nEine PIN schützt das Tablet, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist ein Muster erforderlich.\n\nEin Muster schützt das Tablet, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist ein Passwort erforderlich.\n\nEin Passwort schützt das Tablet, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist eine PIN erforderlich.\n\nEine PIN schützt das Gerät, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist ein Muster erforderlich.\n\nEin Muster schützt das Gerät, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist ein Passwort erforderlich.\n\nEin Passwort schützt das Gerät, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist eine PIN erforderlich.\n\nEine PIN schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist ein Muster erforderlich.\n\nEin Muster schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Zum Einrichten der Entsperrung per Fingerabdruck und der Entsperrung per Gesichtserkennung ist ein Passwort erforderlich.\n\nEin Passwort schützt das Smartphone, falls es verloren geht oder gestohlen wird."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Dadurch werden die Aufnahmen und das Modell des Fingerabdrucks für „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ gelöscht, die auf deinem Smartphone gespeichert sind"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Dadurch werden die Aufnahmen und das Modell des Fingerabdrucks für „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ gelöscht, die auf deinem Tablet gespeichert sind"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Dadurch werden die Aufnahmen und das Modell des Fingerabdruck für „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ gelöscht, die auf deinem Gerät gespeichert sind"</string>
diff --git a/res-product/values-el/strings.xml b/res-product/values-el/strings.xml
index a36b81c..5f377d1 100644
--- a/res-product/values-el/strings.xml
+++ b/res-product/values-el/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Απαιτείται PIN για τη ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο.\n\nΤο PIN προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Απαιτείται μοτίβο για τη ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο.\n\nΤο μοτίβο προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο.\n\nΟ κωδικός πρόσβασης προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Απαιτείται PIN για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΤο PIN προστατεύει το tablet σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Απαιτείται μοτίβο για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΤο μοτίβο προστατεύει το tablet σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΟ κωδικός πρόσβασης προστατεύει το tablet σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Απαιτείται PIN για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΤο PIN προστατεύει τη συσκευή σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Απαιτείται μοτίβο για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΤο μοτίβο προστατεύει τη συσκευή σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΟ κωδικός πρόσβασης προστατεύει τη συσκευή σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Απαιτείται PIN για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΤο PIN προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Απαιτείται μοτίβο για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΤο μοτίβο προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με το πρόσωπο και Ξεκλείδωμα με δακτυλικό αποτύπωμα.\n\nΟ κωδικός πρόσβασης προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Απαιτείται PIN για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΤο PIN προστατεύει το tablet σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Απαιτείται μοτίβο για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΤο μοτίβο προστατεύει το tablet σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΟ κωδικός πρόσβασης προστατεύει το tablet σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Απαιτείται PIN για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΤο PIN προστατεύει τη συσκευή σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Απαιτείται μοτίβο για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΤο μοτίβο προστατεύει τη συσκευή σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΟ κωδικός πρόσβασης προστατεύει τη συσκευή σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Απαιτείται PIN για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΤο PIN προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Απαιτείται μοτίβο για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΤο μοτίβο προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Απαιτείται κωδικός πρόσβασης για τη ρύθμιση των λειτουργιών Ξεκλείδωμα με δακτυλικό αποτύπωμα και Ξεκλείδωμα με το πρόσωπο.\n\nΟ κωδικός πρόσβασης προστατεύει το τηλέφωνο σε περίπτωση απώλειας ή κλοπής."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Με αυτόν τον τρόπο διαγράφονται οι εικόνες και το μοντέλο δακτυλικού αποτυπώματος που έχουν αποθηκευτεί στο τηλέφωνό σας και συσχετίζονται με το <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Με αυτόν τον τρόπο διαγράφονται οι εικόνες και το μοντέλο δακτυλικού αποτυπώματος που έχουν αποθηκευτεί στο tablet και συσχετίζονται με το <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Με αυτόν τον τρόπο διαγράφονται οι εικόνες και το μοντέλο δακτυλικού αποτυπώματος που έχουν αποθηκευτεί στη συσκευή σας και συσχετίζονται με το <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>"</string>
diff --git a/res-product/values-en-rAU/strings.xml b/res-product/values-en-rAU/strings.xml
index 92368e4..d13d99e 100644
--- a/res-product/values-en-rAU/strings.xml
+++ b/res-product/values-en-rAU/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"A PIN is required to set up Face Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"A pattern is required to set up Face Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"A password is required to set up Face Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the phone if it\'s lost or stolen."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your phone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your device"</string>
diff --git a/res-product/values-en-rCA/strings.xml b/res-product/values-en-rCA/strings.xml
index fb30906..2f42e74 100644
--- a/res-product/values-en-rCA/strings.xml
+++ b/res-product/values-en-rCA/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"A PIN is required to set up Face Unlock.\n\nA PIN protects the phone if it\'s lost or stolen."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"A pattern is required to set up Face Unlock.\n\nA pattern protects the phone if it\'s lost or stolen."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"A password is required to set up Face Unlock.\n\nA password protects the phone if it\'s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the tablet if it\'s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the tablet if it\'s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the tablet if it\'s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the device if it\'s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the device if it\'s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the device if it\'s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the phone if it\'s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the phone if it\'s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the tablet if it’s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the tablet if it’s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the tablet if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the device if it’s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the device if it’s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the device if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your phone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your device"</string>
diff --git a/res-product/values-en-rGB/strings.xml b/res-product/values-en-rGB/strings.xml
index a047137..5c4ed50 100644
--- a/res-product/values-en-rGB/strings.xml
+++ b/res-product/values-en-rGB/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"A PIN is required to set up Face Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"A pattern is required to set up Face Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"A password is required to set up Face Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the phone if it\'s lost or stolen."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your phone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your device"</string>
diff --git a/res-product/values-en-rIN/strings.xml b/res-product/values-en-rIN/strings.xml
index a047137..5c4ed50 100644
--- a/res-product/values-en-rIN/strings.xml
+++ b/res-product/values-en-rIN/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"A PIN is required to set up Face Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"A pattern is required to set up Face Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"A password is required to set up Face Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the tablet if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the device if it\'s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the phone if it\'s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the phone if it\'s lost or stolen."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your phone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your device"</string>
diff --git a/res-product/values-en-rXC/strings.xml b/res-product/values-en-rXC/strings.xml
index 8569809..c096adfe 100644
--- a/res-product/values-en-rXC/strings.xml
+++ b/res-product/values-en-rXC/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"A PIN is required to set up Face Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"A pattern is required to set up Face Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"A password is required to set up Face Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the tablet if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the device if it’s lost or stolen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the tablet if it’s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the tablet if it’s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the tablet if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the device if it’s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the device if it’s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the device if it’s lost or stolen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the phone if it’s lost or stolen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the phone if it’s lost or stolen."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your phone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"This deletes the fingerprint images and model associated with \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' that are stored on your device"</string>
diff --git a/res-product/values-es-rUS/strings.xml b/res-product/values-es-rUS/strings.xml
index ed3237d..41adf52 100644
--- a/res-product/values-es-rUS/strings.xml
+++ b/res-product/values-es-rUS/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Se requiere un PIN para configurar la función Desbloqueo facial.\n\nEn caso de robo o extravío, un PIN protege el teléfono."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Se requiere un patrón para configurar la función Desbloqueo facial.\n\nEn caso de robo o extravío, un patrón protege el teléfono."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Se requiere una contraseña para configurar la función Desbloqueo facial.\n\nEn caso de robo o extravío, una contraseña protege el teléfono."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Se requiere un PIN para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, un PIN protege la tablet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Se requiere un patrón para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, un patrón protege la tablet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Se requiere una contraseña para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, una contraseña protege la tablet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Se requiere un PIN para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, un PIN protege el dispositivo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Se requiere un patrón para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, un patrón protege el dispositivo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Se requiere una contraseña para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, una contraseña protege el dispositivo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Se requiere un PIN para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, un PIN protege el teléfono."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Se requiere un patrón para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, un patrón protege el teléfono."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Se requiere una contraseña para configurar las funciones Desbloqueo facial y Desbloqueo con huellas dactilares.\n\nEn caso de robo o extravío, una contraseña protege el teléfono."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Se requiere un PIN para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, un PIN protege la tablet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Se requiere un patrón para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, un patrón protege la tablet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Se requiere una contraseña para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, una contraseña protege la tablet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Se requiere un PIN para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, un PIN protege el dispositivo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Se requiere un patrón para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, un patrón protege el dispositivo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Se requiere una contraseña para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, una contraseña protege el dispositivo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Se requiere un PIN para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, un PIN protege el teléfono."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Se requiere un patrón para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, un patrón protege el teléfono."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Se requiere una contraseña para configurar las funciones Desbloqueo con huellas dactilares y Desbloqueo facial.\n\nEn caso de robo o extravío, una contraseña protege el teléfono."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Esta opción borra las imágenes y el modelo de la huella dactilar asociados con \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que se guardaron en el teléfono."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Esta opción borra las imágenes de la huella dactilar y el modelo asociado con \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que se guardaron en la tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Esta opción borra las imágenes de la huella dactilar y el modelo asociado con \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que se guardaron en el dispositivo"</string>
diff --git a/res-product/values-es/strings.xml b/res-product/values-es/strings.xml
index da1951c..1633891 100644
--- a/res-product/values-es/strings.xml
+++ b/res-product/values-es/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Se necesita un PIN para configurar Desbloqueo facial.\n\nEl PIN protege tu teléfono si lo pierdes o te lo roban."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Se necesita un patrón para configurar Desbloqueo facial.\n\nEl patrón protege tu teléfono si lo pierdes o te lo roban."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Se necesita una contraseña para configurar Desbloqueo facial.\n\nLa contraseña protege tu teléfono si lo pierdes o te lo roban."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Se necesita un PIN para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nEl PIN protege tu tablet si lo pierdes o te lo roban."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Se necesita un patrón para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nEl patrón protege tu tablet si lo pierdes o te lo roban."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Se necesita una contraseña para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nLa contraseña protege tu tablet si la pierdes o te la roban."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Se necesita un PIN para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nEl PIN protege tu dispositivo si lo pierdes o te lo roban."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Se necesita un patrón para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nEl patrón protege tu dispositivo si lo pierdes o te lo roban."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Se necesita una contraseña para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nLa contraseña protege tu dispositivo si lo pierdes o te lo roban."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Se necesita un PIN para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nEl PIN protege tu teléfono si lo pierdes o te lo roban."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Se necesita un patrón para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nEl patrón protege tu teléfono si lo pierdes o te lo roban."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Se necesita una contraseña para configurar Desbloqueo facial y Desbloqueo con huella digital.\n\nLa contraseña protege tu teléfono si lo pierdes o te lo roban."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Se necesita un PIN para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nEl PIN protege la tablet si la pierdes o te la roban."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Se necesita un patrón para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nEl patrón protege la tablet si la pierdes o te la roban."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Se necesita una contraseña para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nLa contraseña protege la tablet si la pierdes o te la roban."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Se necesita un PIN para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nEl PIN protege el dispositivo si lo pierdes o te lo roban."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Se necesita un patrón para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nEl patrón protege el dispositivo si lo pierdes o te lo roban."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Se necesita una contraseña para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nLa contraseña protege el dispositivo si lo pierdes o te lo roban."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Se necesita un PIN para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nEl PIN protege el teléfono si lo pierdes o te lo roban."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Se necesita un patrón para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nEl patrón protege el teléfono si lo pierdes o te lo roban."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Se necesita una contraseña para configurar Desbloqueo con huella digital y Desbloqueo facial.\n\nLa contraseña protege el teléfono si lo pierdes o te lo roban."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Se eliminarán las imágenes y el modelo de huella digital asociados a <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que están almacenados en tu teléfono."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Se eliminarán las imágenes y el modelo de huella digital asociados a <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que están almacenados en tu tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Se eliminarán las imágenes y el modelo de huella digital asociados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que están almacenados en tu dispositivo"</string>
diff --git a/res-product/values-et/strings.xml b/res-product/values-et/strings.xml
index 16f5737..80a72ed 100644
--- a/res-product/values-et/strings.xml
+++ b/res-product/values-et/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Näoga avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Näoga avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Näoga avamise seadistamiseks on vaja parooli.\n\nParool kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb tahvelarvutit juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb tahvelarvutit juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja parooli.\n\nParool kaitseb tahvelarvutit juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb seadet juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb seadet juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja parooli.\n\nParool kaitseb seadet juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Näoga avamise ja sõrmejäljega avamise seadistamiseks on vaja parooli.\n\nParool kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb tahvelarvutit juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb tahvelarvutit juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja parooli.\n\nParool kaitseb tahvelarvutit juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb seadet juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb seadet juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja parooli.\n\nParool kaitseb seadet juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja PIN-koodi.\n\nPIN-kood kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja mustrit.\n\nMuster kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Sõrmejäljega avamise ja näoga avamise seadistamiseks on vaja parooli.\n\nParool kaitseb telefoni juhul, kui see läheb kaotsi või varastatakse."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"See kustutab sõrmejäljega „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ seotud sõrmejäljekujutised ja -mudeli, mis on teie telefoni salvestatud"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"See kustutab sõrmejäljega „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ seotud sõrmejäljekujutised ja -mudeli, mis on teie tahvelarvutisse salvestatud"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"See kustutab sõrmejäljega „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ seotud sõrmejäljekujutised ja -mudeli, mis on teie seadmesse salvestatud"</string>
diff --git a/res-product/values-eu/strings.xml b/res-product/values-eu/strings.xml
index bf74312..2493934 100644
--- a/res-product/values-eu/strings.xml
+++ b/res-product/values-eu/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"PIN bat behar da aurpegi bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPINak babestu egiten du telefonoa, hura galtzen baduzu edo lapurtzen badizute."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Eredu bat behar da aurpegi bidez desblokeatzeko eginbidea konfiguratzeko.\n\nEreduak babestu egiten du telefonoa, hura galtzen baduzu edo lapurtzen badizute."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPasahitzak babestu egiten du telefonoa, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPINak babestu egiten du tableta, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nEreduak babestu egiten du tableta, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPasahitzak babestu egiten du tableta, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"PIN bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPINak babestu egiten du gailua, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Eredu bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nEreduak babestu egiten du gailua, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPasahitzak babestu egiten du gailua, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"PIN bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPINak babestu egiten du telefonoa, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nEreduak babestu egiten du telefonoa, hura galtzen baduzu edo lapurtzen badizute."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Pasahitz bat behar da aurpegi bidez desblokeatzeko eginbidea eta hatz-marka bidez desblokeatzeko eginbidea konfiguratzeko.\n\nPasahitzak babestu egiten du telefonoa, hura galtzen baduzu edo lapurtzen badizute."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"PIN bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nTableta galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Eredu bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nTableta galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Pasahitz bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nTableta galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"PIN bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nGailua galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Eredu bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nGailua galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Pasahitz bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nGailua galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"PIN bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nTelefonoa galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Eredu bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nTelefonoa galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Pasahitz bat behar da hatz-marka bidez eta aurpegi bidez desblokeatzeko eginbideak konfiguratzeko.\n\nTelefonoa galtzen baduzu edo lapurtzen badizute, pasahitzarekin babestuta egongo da."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Telefonoan \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" izenarekin gordetako hatz-markaren irudiak eta eredua ezabatuko dira."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Tabletan \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" izenarekin gordetako hatz-markaren irudiak eta eredua ezabatuko dira."</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ezabatu egingo dira gailuan \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" izenarekin gordetako hatz-markaren irudiak eta eredua"</string>
diff --git a/res-product/values-fa/strings.xml b/res-product/values-fa/strings.xml
index 7bfa002..08460ba 100644
--- a/res-product/values-fa/strings.xml
+++ b/res-product/values-fa/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"برای راهاندازی «قفلگشایی با چهره»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، پین از آن محافظت میکند."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"برای راهاندازی «قفلگشایی با چهره»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، الگو از آن محافظت میکند."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"برای راهاندازی «قفلگشایی با چهره»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، گذرواژه از آن محافظت میکند."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن رایانه لوحی، پین از آن محافظت میکند."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن رایانه لوحی، الگو از آن محافظت میکند."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن رایانه لوحی، گذرواژه از آن محافظت میکند."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن دستگاه، پین از آن محافظت میکند."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن دستگاه، الگو از آن محافظت میکند."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن دستگاه، گذرواژه از آن محافظت میکند."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، پین از آن محافظت میکند."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، الگو از آن محافظت میکند."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"برای راهاندازی «قفلگشایی با چهره» و «قفلگشایی با اثر انگشت»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، گذرواژه از آن محافظت میکند."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن رایانه لوحی، پین از آن محافظت میکند."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن رایانه لوحی، الگو از آن محافظت میکند."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن رایانه لوحی، گذرواژه از آن محافظت میکند."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن دستگاه، پین از آن محافظت میکند."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن دستگاه، الگو از آن محافظت میکند."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن دستگاه، گذرواژه از آن محافظت میکند."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن پین الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، پین از آن محافظت میکند."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن الگو الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، الگو از آن محافظت میکند."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"برای راهاندازی «قفلگشایی با اثر انگشت» و «قفلگشایی با چهره»، افزودن گذرواژه الزامی است.\n\nدرصورت گم شدن یا بهسرقت رفتن تلفن، گذرواژه از آن محافظت میکند."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"با این کار مدل و تصاویر اثر انگشت مرتبط با «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» که در تلفنتان ذخیره شده حذف میشوند"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"با این کار مدل و تصاویر اثر انگشت مرتبط با «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» که در رایانه لوحیتان ذخیره شدهاند حذف میشوند"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"با این کار مدل و تصاویر اثر انگشت مرتبط با «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» که در دستگاهتان ذخیره شدهاند حذف میشوند"</string>
@@ -257,8 +257,8 @@
<string name="erase_external_storage" product="default" msgid="645024170825543458">"پاک کردن کارت SD"</string>
<string name="erase_external_storage_description" product="nosdcard" msgid="6285187323873212966">"همه دادههای موجود در حافظهٔ USB داخلی مانند موسیقی یا عکسها را پاک کنید"</string>
<string name="erase_external_storage_description" product="default" msgid="3294267929524578503">"همه دادههای موجود در کارت SD از جمله موسیقی یا عکسها حذف میشوند"</string>
- <string name="main_clear_button_text" product="tablet" msgid="3763748694468489783">"پاک کردن تمام دادهها"</string>
- <string name="main_clear_button_text" product="default" msgid="3763748694468489783">"پاک کردن تمام دادهها"</string>
+ <string name="main_clear_button_text" product="tablet" msgid="3763748694468489783">"پاک کردن همه دادهها"</string>
+ <string name="main_clear_button_text" product="default" msgid="3763748694468489783">"پاک کردن همه دادهها"</string>
<string name="usb_tethering_subtext" product="default" msgid="5969806206311342779">"همرسانی اتصال اینترنت تلفن ازطریق USB"</string>
<string name="usb_tethering_subtext" product="tablet" msgid="4550828946207155142">"همرسانی اینترنت رایانه لوحی ازطریق USB"</string>
<string name="bluetooth_tethering_subtext" product="tablet" msgid="1339730853653511849">"همرسانی اتصال اینترنت رایانه لوحی ازطریق بلوتوث"</string>
diff --git a/res-product/values-fi/strings.xml b/res-product/values-fi/strings.xml
index 895fcfe..1c42071 100644
--- a/res-product/values-fi/strings.xml
+++ b/res-product/values-fi/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Kasvojentunnistusavauksen käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa puhelinta, jos se katoaa tai varastetaan."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Kasvojentunnistusavauksen käyttöönotto edellyttää kuviota.\n\nKuvio suojaa puhelinta, jos se katoaa tai varastetaan."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Kasvojentunnistusavauksen käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa puhelinta, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa tablettia, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää kuviota.\n\nKuvio suojaa tablettia, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa tablettia, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa laitetta, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää kuviota.\n\nKuvio suojaa laitetta, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa laitetta, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa puhelinta, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää kuviota.\n\nKuvio suojaa puhelinta, jos se katoaa tai varastetaan."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Kasvojentunnistus- ja sormenjälkiavausten käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa puhelinta, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa tablettia, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää kuviota.\n\nKuvio suojaa tablettia, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa tablettia, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa laitetta, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää kuviota.\n\nKuvio suojaa laitetta, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa laitetta, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää PIN-koodia.\n\nPIN-koodi suojaa puhelinta, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää kuviota.\n\nKuvio suojaa puhelinta, jos se katoaa tai varastetaan."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Sormenjälki- ja kasvojentunnistusavausten käyttöönotto edellyttää salasanaa.\n\nSalasana suojaa puhelinta, jos se katoaa tai varastetaan."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Tämä poistaa puhelimelle tallennetut sormenjäljen kuvat ja mallit, joihin <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> liittyy"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Tämä poistaa tabletille tallennetut sormenjäljen kuvat ja mallit, joihin <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> liittyy"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Tämä poistaa laitteelle tallennetut sormenjäljen kuvat ja mallit, joihin <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> liittyy"</string>
diff --git a/res-product/values-fr-rCA/strings.xml b/res-product/values-fr-rCA/strings.xml
index c8b8e1f..580a4fa 100644
--- a/res-product/values-fr-rCA/strings.xml
+++ b/res-product/values-fr-rCA/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale.\n\nUn NIP protège le téléphone en cas de perte ou de vol de celui-ci."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale.\n\nUn schéma protège le téléphone en cas de perte ou de vol de celui-ci."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale.\n\nUn mot de passe protège le téléphone en cas de perte ou de vol de celui-ci."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn NIP protège la tablette en cas de perte ou de vol de celle-ci."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège la tablette en cas de perte ou de vol de celle-ci."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège la tablette en cas de perte ou de vol de celle-ci."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn NIP protège l\'appareil en cas de perte ou de vol de celui-ci."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège l\'appareil en cas de perte ou de vol de celui-ci."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège l\'appareil en cas de perte ou de vol de celui-ci."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn NIP protège le téléphone en cas de perte ou de vol de celui-ci."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège le téléphone en cas de perte ou de vol de celui-ci."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège le téléphone en cas de perte ou de vol de celui-ci."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn NIP protège la tablette en cas de perte ou de vol de celle-ci."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège la tablette en cas de perte ou de vol de celle-ci."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège la tablette en cas de perte ou de vol de celle-ci."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn NIP protège l\'appareil en cas de perte ou de vol de celui-ci."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège l\'appareil en cas de perte ou de vol de celui-ci."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège l\'appareil en cas de perte ou de vol de celui-ci."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Un NIP est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn NIP protège le téléphone en cas de perte ou de vol de celui-ci."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Un schéma est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège le téléphone en cas de perte ou de vol de celui-ci."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Un mot de passe est requis pour configurer la fonctionnalité de déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège le téléphone en cas de perte ou de vol de celui-ci."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Les images et le modèle d\'empreinte digitale associés à « <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> » et stockés sur votre téléphone seront supprimés"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Les images et le modèle d\'empreinte digitale associés à « <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> » et stockés sur votre tablette seront supprimés"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Les images et le modèle d\'empreinte digitale associés à « <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> » et stockés sur votre appareil seront supprimés"</string>
diff --git a/res-product/values-fr/strings.xml b/res-product/values-fr/strings.xml
index 6b7d0c8..4f4032b 100644
--- a/res-product/values-fr/strings.xml
+++ b/res-product/values-fr/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale.\n\nUn code protège votre téléphone en cas de perte ou de vol."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale.\n\nUn schéma protège votre téléphone en cas de perte ou de vol."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale.\n\nUn mot de passe protège votre téléphone en cas de perte ou de vol."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn code protège votre tablette en cas de perte ou de vol."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège votre tablette en cas de perte ou de vol."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège votre tablette en cas de perte ou de vol."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn code protège votre appareil en cas de perte ou de vol."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège votre appareil en cas de perte ou de vol."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège votre appareil en cas de perte ou de vol."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn code protège votre téléphone en cas de perte ou de vol."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège votre téléphone en cas de perte ou de vol."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège votre téléphone en cas de perte ou de vol."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn code protège votre tablette en cas de perte ou de vol."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège votre tablette en cas de perte ou de vol."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège votre tablette en cas de perte ou de vol."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn code protège votre appareil en cas de perte ou de vol."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège votre appareil en cas de perte ou de vol."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège votre appareil en cas de perte ou de vol."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Veuillez saisir un code pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn code protège votre téléphone en cas de perte ou de vol."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Veuillez dessiner un schéma pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn schéma protège votre téléphone en cas de perte ou de vol."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Veuillez saisir un mot de passe pour configurer le déverrouillage par reconnaissance faciale et par empreinte digitale.\n\nUn mot de passe protège votre téléphone en cas de perte ou de vol."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Les images et le modèle associés à \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" et stockés sur votre téléphone seront supprimés"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Les images et le modèle associés à \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" et stockés sur votre tablette seront supprimés"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Les images et le modèle associés à \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" et stockés sur votre appareil seront supprimés"</string>
diff --git a/res-product/values-gl/strings.xml b/res-product/values-gl/strings.xml
index 003e50f..d41f20d 100644
--- a/res-product/values-gl/strings.xml
+++ b/res-product/values-gl/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Para configurar o desbloqueo facial, necesítase un PIN.\n\nO teléfono estará protexido por un PIN en caso de perda ou roubo."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Para configurar o desbloqueo facial, necesítase un padrón.\n\nO teléfono estará protexido por un padrón en caso de perda ou roubo."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Para configurar o desbloqueo facial, necesítase un contrasinal.\n\nO teléfono estará protexido por un contrasinal en caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Para configurar o desbloqueo facial e dactilar, necesítase un PIN.\n\nA tableta estará protexida por un PIN en caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Para configurar o desbloqueo facial e dactilar, necesítase un padrón.\n\nA tableta estará protexida por un padrón en caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Para configurar o desbloqueo facial e dactilar, necesítase un contrasinal.\n\nA tableta estará protexida por un contrasinal en caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Para configurar o desbloqueo facial e dactilar, necesítase un PIN.\n\nO dispositivo estará protexido por un PIN en caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Para configurar o desbloqueo facial e dactilar, necesítase un padrón.\n\nO dispositivo estará protexido por un padrón en caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Para configurar o desbloqueo facial e dactilar, necesítase un contrasinal.\n\nO dispositivo estará protexido por un contrasinal en caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Para configurar o desbloqueo facial e dactilar, necesítase un PIN.\n\nO teléfono estará protexido por un PIN en caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Para configurar o desbloqueo facial e dactilar, necesítase un padrón.\n\nO teléfono estará protexido por un padrón en caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Para configurar o desbloqueo facial e dactilar, necesítase un contrasinal.\n\nO teléfono estará protexido por un contrasinal en caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Para configurar o desbloqueo facial e o dactilar, necesítase un PIN.\n\nUsarase para protexer a tableta en caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Para configurar o desbloqueo facial e o dactilar, necesítase un padrón.\n\nUsarase para protexer a tableta en caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Para configurar o desbloqueo facial e o dactilar, necesítase un contrasinal.\n\nUsarase para protexer a tableta en caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Para configurar o desbloqueo facial e o dactilar, necesítase un PIN.\n\nUsarase para protexer o dispositivo en caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Para configurar o desbloqueo facial e o dactilar, necesítase un padrón.\n\nUsarase para protexer o dispositivo en caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Para configurar o desbloqueo facial e o dactilar, necesítase un contrasinal.\n\nUsarase para protexer o dispositivo en caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Para configurar o desbloqueo facial e o dactilar, necesítase un PIN.\n\nUsarase para protexer o teléfono en caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Para configurar o desbloqueo facial e o dactilar, necesítase un padrón.\n\nUsarase para protexer o teléfono en caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Para configurar o desbloqueo facial e o dactilar, necesítase un contrasinal.\n\nUsarase para protexer o teléfono en caso de perda ou roubo."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ao realizar esta acción, eliminaranse as imaxes e o modelo da impresión dixital <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que estean almacenados no teléfono"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ao realizar esta acción, eliminaranse as imaxes e o modelo da impresión dixital <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que estean almacenados na tableta"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ao realizar esta acción, eliminaranse as imaxes e o modelo da impresión dixital <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> que estean almacenados no teu dispositivo"</string>
diff --git a/res-product/values-gu/strings.xml b/res-product/values-gu/strings.xml
index 5f9669a..d63a47d 100644
--- a/res-product/values-gu/strings.xml
+++ b/res-product/values-gu/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારું ટૅબ્લેટ ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારું ટૅબ્લેટ ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારું ટૅબ્લેટ ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારું ડિવાઇસ ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારું ડિવાઇસ ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારું ડિવાઇસ ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારું ટૅબ્લેટ ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારું ટૅબ્લેટ ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારું ટૅબ્લેટ ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારું ડિવાઇસ ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારું ડિવાઇસ ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારું ડિવાઇસ ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પિન જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પિન તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પૅટર્ન જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પૅટર્ન તેને સુરક્ષિત રાખે છે."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ફિંગરપ્રિન્ટ અનલૉક અને ફેસ અનલૉકની સુવિધાનું સેટઅપ કરવા માટે પાસવર્ડ જરૂરી છે.\n\nજો તમારો ફોન ખોવાઈ જાય કે ચોરાઈ જાય, તો પાસવર્ડ તેને સુરક્ષિત રાખે છે."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"આ તમારા ફોન પર સ્ટોર કરવામાં આવેલી ફિંગરપ્રિન્ટની છબીઓ અને \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' સાથે સંકળાયેલા મૉડલને ડિલીટ કરે છે"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"આ તમારા ટૅબ્લેટ પર સ્ટોર કરવામાં આવેલી ફિંગરપ્રિન્ટની છબીઓ અને \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' સાથે સંકળાયેલા મૉડલને ડિલીટ કરે છે"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"આ તમારા ડિવાઇસ પર સ્ટોર કરવામાં આવેલી ફિંગરપ્રિન્ટ અને \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' સાથે સંકળાયેલા મૉડલને ડિલીટ કરે છે"</string>
diff --git a/res-product/values-hi/strings.xml b/res-product/values-hi/strings.xml
index 85c6dad..3da48e8 100644
--- a/res-product/values-hi/strings.xml
+++ b/res-product/values-hi/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पैटर्न आपके फ़ोन की सुरक्षा करता है."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके फ़ोन की सुरक्षा करता है."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका टैबलेट खो जाता है या चोरी हो जाता है, तो पिन आपके टैबलेट की सुरक्षा करता है."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका टैबलेट खो जाता है या चोरी हो जाता है, तो पैटर्न आपके टैबलेट की सुरक्षा करता है."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका टैबलेट खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके टैबलेट की सुरक्षा करता है."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो पिन आपके डिवाइस की सुरक्षा करता है."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो पैटर्न आपके डिवाइस की सुरक्षा करता है."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके डिवाइस की सुरक्षा करता है."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पैटर्न आपके फ़ोन की सुरक्षा करता है."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके फ़ोन की सुरक्षा करता है."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका टैबलेट खो जाता है या चोरी हो जाता है, तो पिन आपके टैबलेट को सुरक्षित रखता है."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका टैबलेट खो जाता है या चोरी हो जाता है, तो पैटर्न आपके टैबलेट को सुरक्षित रखता है."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका टैबलेट खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके टैबलेट को सुरक्षित रखता है."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो पिन आपके डिवाइस को सुरक्षित रखता है."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो पैटर्न आपके डिवाइस को सुरक्षित रखता है."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके डिवाइस को सुरक्षित रखता है."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन को सुरक्षित रखता है."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"फ़िंगरप्रिंट अनलॉकऔर फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पैटर्न आपके फ़ोन को सुरक्षित रखता है."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"फ़िंगरप्रिंट अनलॉक और फ़ेस अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके फ़ोन को सुरक्षित रखता है."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ऐसा करने से, आपके फ़ोन पर सेव किए गए \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' से जुड़े फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ऐसा करने से, आपके टैबलेट पर मौजूद \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' से जुड़ी फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ऐसा करने से, आपके डिवाइस पर मौजूद <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> से जुड़ी फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे"</string>
diff --git a/res-product/values-hr/strings.xml b/res-product/values-hr/strings.xml
index e9a9e64a5..f1e4a0c 100644
--- a/res-product/values-hr/strings.xml
+++ b/res-product/values-hr/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Za postavljanje otključavanja licem potreban je PIN.\n\nPIN štiti telefon u slučaju gubitka ili krađe."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Za postavljanje otključavanja licem potreban je uzorak.\n\nUzorak štiti telefon u slučaju gubitka ili krađe."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Za postavljanje otključavanja licem potrebna je zaporka.\n\nZaporka štiti telefon u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potreban je PIN.\n\nPIN štiti tablet u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potreban je uzorak.\n\nUzorak štiti tablet u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potrebna je zaporka.\n\nZaporka štiti tablet u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potreban je PIN.\n\nPIN štiti uređaj u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potreban je uzorak.\n\nUzorak štiti uređaj u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potrebna je zaporka.\n\nZaporka štiti uređaj u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potreban je PIN.\n\nPIN štiti telefon u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potreban je uzorak.\n\nUzorak štiti telefon u slučaju gubitka ili krađe."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Za postavljanje otključavanja licem ili otključavanja otiskom prsta potrebna je zaporka.\n\nZaporka štiti telefon u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potreban je PIN.\n\nPIN štiti tablet u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potreban je uzorak.\n\nUzorak štiti tablet u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potrebna je zaporka.\n\nZaporka štiti tablet u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potreban je PIN.\n\nPIN štiti uređaj u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potreban je uzorak.\n\nUzorak štiti uređaj u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potrebna je zaporka.\n\nZaporka štiti uređaj u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potreban je PIN.\n\nPIN štiti telefon u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potreban je uzorak.\n\nUzorak štiti telefon u slučaju gubitka ili krađe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Za postavljanje otključavanja otiskom prsta ili otključavanja licem potrebna je zaporka.\n\nZaporka štiti telefon u slučaju gubitka ili krađe."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Time se brišu slike i model otiska prsta povezani s otiskom prsta <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> koji su pohranjeni na vašem telefonu"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Time se brišu slike i model otiska prsta povezani s otiskom prsta <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> koji su pohranjeni na vašem tabletu"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Time se brišu slike i model otiska prsta povezani s otiskom prsta <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> koji su pohranjeni na vašem uređaju"</string>
diff --git a/res-product/values-hu/strings.xml b/res-product/values-hu/strings.xml
index ae44815..f4191a2 100644
--- a/res-product/values-hu/strings.xml
+++ b/res-product/values-hu/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"PIN-kód szükséges az Arcalapú feloldás beállításához.\n\nPIN-kód védi a telefont, ha elvész vagy ellopják."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Minta szükséges az Arcalapú feloldás beállításához.\n\nMinta védi a telefont, ha elvész vagy ellopják."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Jelszó szükséges az Arcalapú feloldás beállításához.\n\nJelszó védi a telefont, ha elvész vagy ellopják."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"PIN-kód szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nPIN-kód védi a táblagépet, ha elvész vagy ellopják."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Minta szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nMinta védi a táblagépet, ha elvész vagy ellopják."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Jelszó szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nJelszó védi a táblagépet, ha elvész vagy ellopják."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"PIN-kód szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nPIN-kód védi az eszközt, ha elvész vagy ellopják."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Minta szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nMinta védi az eszközt, ha elvész vagy ellopják."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Jelszó szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nJelszó védi az eszközt, ha elvész vagy ellopják."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"PIN-kód szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nA PIN-kód megvédi a telefont, ha elvész vagy ellopják."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Minta szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nA minta megvédi a telefont, ha elvész vagy ellopják."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Jelszó szükséges az Arcalapú feloldás és a Feloldás ujjlenyomattal funkció beállításához.\n\nJelszó védi a telefont, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"PIN-kód szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nPIN-kód védi a táblagépet, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Minta szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nMinta védi a táblagépet, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Jelszó szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nJelszó védi a táblagépet, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"PIN-kód szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nPIN-kód védi az eszközt, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Minta szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nMinta védi az eszközt, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Jelszó szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nJelszó védi az eszközt, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"PIN-kód szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nPIN-kód védi a telefont, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Minta szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nMinta védi a telefont, ha elvész vagy ellopják."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Jelszó szükséges a Feloldás ujjlenyomattal és az Arcalapú feloldás funkció beállításához.\n\nJelszó védi a telefont, ha elvész vagy ellopják."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ezzel törli a telefonján tárolt „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>” ujjlenyomattal kapcsolatos ujjlenyomatképeket és -modellt."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ezzel törli a táblagépén tárolt „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>” ujjlenyomattal kapcsolatos ujjlenyomatképeket és -modellt"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ezzel törli az eszközén tárolt „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>” ujjlenyomattal kapcsolatos ujjlenyomatképeket és -modellt"</string>
diff --git a/res-product/values-hy/strings.xml b/res-product/values-hy/strings.xml
index b41bec4..3142b8a 100644
--- a/res-product/values-hy/strings.xml
+++ b/res-product/values-hy/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Դեմքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Դեմքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Դեմքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել պլանշետը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել պլանշետը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել պլանշետը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել սարքը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել սարքը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել սարքը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել պլանշետը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել պլանշետը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել պլանշետը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել սարքը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել սարքը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել սարքը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է PIN կոդ։\n\nPIN կոդի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է նախշ։\n\nՆախշի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Դեմքով և մատնահետքով ապակողպումը կարգավորելու համար անհրաժեշտ է գաղտնաբառ։\n\nԳաղտնաբառի միջոցով դուք կարող եք պաշտպանել հեռախոսը, եթե այն կորչի կամ գողանան։"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"«<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» մատնահետքի հետ կապված պատկերներն ու նմուշը, որոնք պահված են ձեր հեռախոսում, կջնջվեն"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"«<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» մատնահետքի հետ կապված պատկերներն ու նմուշը, որոնք պահված են ձեր հեռախոսում, կջնջվեն"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"«<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» մատնահետքի պատկերներն ու նմուշը, որոնք պահված են ձեր սարքում, կջնջվեն"</string>
diff --git a/res-product/values-in/strings.xml b/res-product/values-in/strings.xml
index bbdc030..08981cb 100644
--- a/res-product/values-in/strings.xml
+++ b/res-product/values-in/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Perlu PIN untuk menyiapkan Buka dengan Wajah.\n\nPIN melindungi ponsel jika hilang atau dicuri."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Perlu pola untuk menyiapkan Buka dengan Wajah.\n\nPola melindungi ponsel jika hilang atau dicuri."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Perlu sandi untuk menyiapkan Buka dengan Wajah.\n\nSandi melindungi ponsel jika hilang atau dicuri."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Perlu PIN untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nPIN melindungi tablet jika hilang atau dicuri."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Perlu pola untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nPola melindungi tablet jika hilang atau dicuri."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Perlu sandi untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nSandi melindungi tablet jika hilang atau dicuri."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Perlu PIN untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nPIN melindungi perangkat jika hilang atau dicuri."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Perlu pola untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nPola melindungi perangkat jika hilang atau dicuri."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Perlu sandi untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nSandi melindungi perangkat jika hilang atau dicuri."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Perlu PIN untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nPIN melindungi ponsel jika hilang atau dicuri."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Perlu pola untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nPola melindungi ponsel jika hilang atau dicuri."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Perlu sandi untuk menyiapkan Buka dengan Wajah dan Buka dengan Sidik Jari.\n\nSandi melindungi ponsel jika hilang atau dicuri."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Memerlukan PIN untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nPIN melindungi tablet jika tablet hilang atau dicuri."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Memerlukan pola untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nPola melindungi tablet jika tablet hilang atau dicuri."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Memerlukan sandi untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nSandi melindungi tablet jika tablet hilang atau dicuri."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Memerlukan PIN untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nPIN melindungi perangkat jika perangkat hilang atau dicuri."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Memerlukan pola untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nPola melindungi perangkat jika perangkat hilang atau dicuri."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Memerlukan sandi untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nSandi melindungi perangkat jika perangkat hilang atau dicuri."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Memerlukan PIN untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nPIN melindungi ponsel jika ponsel hilang atau dicuri."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Memerlukan pola untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nPola melindungi ponsel jika ponsel hilang atau dicuri."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Memerlukan sandi untuk menyiapkan Buka dengan Sidik Jari dan Buka dengan Wajah.\n\nSandi melindungi ponsel jika ponsel hilang atau dicuri."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Tindakan ini akan menghapus gambar dan model sidik jari yang terkait dengan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' yang disimpan di ponsel Anda"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Tindakan ini akan menghapus gambar dan model sidik jari yang terkait dengan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' yang disimpan di tablet Anda"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Tindakan ini akan menghapus gambar dan model sidik jari yang terkait dengan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' yang disimpan di perangkat Anda"</string>
diff --git a/res-product/values-is/strings.xml b/res-product/values-is/strings.xml
index 6530b7e..0b79678 100644
--- a/res-product/values-is/strings.xml
+++ b/res-product/values-is/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"PIN-númer er áskilið til að setja upp andlitskenni.\n\nPIN-númer verndar símann ef hann týnist eða ef honum er stolið."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Mynstur er áskilið til að setja upp andlitskenni.\n\nMynstur verndar símann ef hann týnist eða ef honum er stolið."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Aðgangsorð er áskilið til að setja upp andlitskenni.\n\nAðgangsorð verndar símann ef hann týnist eða ef honum er stolið."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"PIN-númer er áskilið til að setja upp andlits- og fingrafarskenni.\n\nPIN-númer verndar spjaldtölvuna ef hún týnist eða ef henni er stolið."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Mynstur er áskilið til að setja upp andlits- og fingrafarskenni.\n\nMynstur verndar spjaldtölvuna ef hún týnist eða ef henni er stolið."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Aðgangsorð er áskilið til að setja upp andlits- og fingrafarskenni.\n\nAðgangsorð verndar spjaldtölvuna ef hún týnist eða ef henni er stolið."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"PIN-númer er áskilið til að setja upp andlits- og fingrafarskenni.\n\nPIN-númer verndar tækið ef það týnist eða ef því er stolið."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Mynstur er áskilið til að setja upp andlits- og fingrafarskenni.\n\nMynstur verndar tækið ef það týnist eða ef því er stolið."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Aðgangsorð er áskilið til að setja upp andlits- og fingrafarskenni.\n\nAðgangsorð verndar tækið ef það týnist eða ef því er stolið."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"PIN-númer er áskilið til að setja upp andlits- og fingrafarskenni.\n\nPIN-númer verndar símann ef hann týnist eða ef honum er stolið."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Mynstur er áskilið til að setja upp andlits- og fingrafarskenni.\n\nMynstur verndar símann ef hann týnist eða ef honum er stolið."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Aðgangsorð er áskilið til að setja upp andlits- og fingrafarskenni.\n\nAðgangsorð verndar símann ef hann týnist eða ef honum er stolið."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"PIN-númers er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nPIN-númer verndar spjaldtölvuna ef hún týnist eða henni er stolið."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Mynsturs er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nMynstur verndar spjaldtölvuna ef hún týnist eða henni er stolið."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Aðgangsorðs er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nAðgangsorð verndar spjaldtölvuna ef hún týnist eða henni er stolið."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"PIN-númers er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nPIN-númer verndar tækið ef það týnist eða því er stolið."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Mynsturs er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nMynstur verndar tækið ef það týnist eða því er stolið."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Aðgangsorðs er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nAðgangsorð verndar tækið ef það týnist eða því er stolið."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"PIN-númers er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nPIN-númer verndar símann ef hann týnist eða honum er stolið."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Mynsturs er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nMynstur verndar símann ef hann týnist eða honum er stolið."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Aðgangsorðs er krafist fyrir uppsetningu á andlits- og fingrafarskenni.\n\nAðgangsorð verndar símann ef hann týnist eða honum er stolið."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Þetta eyðir fingrafaramyndum og -líkani sem tengist „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ og er vistað í símanum"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Þetta eyðir fingrafaramyndum og -líkani sem tengist „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ og er vistað í spjaldtölvunni"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Þetta eyðir fingrafaramyndum og -líkani sem tengjast „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ og eru vistuð í tækinu"</string>
diff --git a/res-product/values-it/strings.xml b/res-product/values-it/strings.xml
index f7671e7..b08c28f 100644
--- a/res-product/values-it/strings.xml
+++ b/res-product/values-it/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"È necessario un PIN per configurare lo Sblocco con il Volto.\n\nIl PIN protegge il telefono se viene smarrito o rubato."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"È necessaria una sequenza per configurare lo Sblocco con il Volto.\n\nLa sequenza protegge il telefono se viene smarrito o rubato."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"È necessaria una password per configurare lo Sblocco con il Volto.\n\nLa password protegge il telefono se viene smarrito o rubato."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"È necessario un PIN per configurare lo Sblocco con il Volto e con l\'impronta.\n\nIl PIN protegge il tablet se viene smarrito o rubato."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"È necessaria una sequenza per configurare lo Sblocco con il Volto e con l\'impronta.\n\nLa sequenza protegge il tablet se viene smarrito o rubato."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"È necessaria una password per configurare lo Sblocco con il Volto e con l\'impronta.\n\nLa password protegge il tablet se viene smarrito o rubato."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"È necessario un PIN per configurare lo Sblocco con il Volto e con l\'impronta.\n\nIl PIN protegge il dispositivo se viene smarrito o rubato."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"È necessaria una sequenza per configurare lo Sblocco con il Volto e l\'Impronta.\n\nLa sequenza protegge il dispositivo se viene smarrito o rubato."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"È necessaria una password per configurare lo Sblocco con il Volto e con l\'impronta.\n\nLa password protegge il dispositivo se viene smarrito o rubato."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"È necessario un PIN per configurare lo Sblocco con il Volto e con l\'impronta.\n\nIl PIN protegge il telefono se viene smarrito o rubato."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"È necessaria una sequenza per configurare lo Sblocco con il Volto e l\'Impronta.\n\nLa sequenza protegge il telefono se viene smarrito o rubato."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"È necessaria una password per configurare lo Sblocco con il Volto e con l\'impronta.\n\nLa password protegge il telefono se viene smarrito o rubato."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"È necessario un PIN per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nIl PIN protegge il tablet se viene smarrito o rubato."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"È necessaria una sequenza per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nLa sequenza protegge il tablet se viene smarrito o rubato."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"È necessaria una password per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nLa password protegge il tablet se viene smarrito o rubato."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"È necessario un PIN per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nIl PIN protegge il dispositivo se viene smarrito o rubato."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"È necessaria una sequenza per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nLa sequenza protegge il dispositivo se viene smarrito o rubato."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"È necessaria una password per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nLa password protegge il dispositivo se viene smarrito o rubato."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"È necessario un PIN per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nIl PIN protegge lo smartphone se viene smarrito o rubato."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"È necessaria una sequenza per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nLa sequenza protegge lo smartphone se viene smarrito o rubato."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"È necessaria una password per configurare lo Sblocco con l\'Impronta e con il Volto.\n\nLa password protegge lo smartphone se viene smarrito o rubato."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Vengono eliminati il modello e le immagini dell\'impronta associati a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" e memorizzati sullo smartphone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Vengono eliminati il modello e le immagini dell\'impronta associati a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" e memorizzati sul tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Vengono eliminati il modello e le immagini dell\'impronta associati a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" e memorizzati sul dispositivo"</string>
@@ -204,7 +204,7 @@
<string name="biometrics_unlock_title" product="tablet" msgid="4239121143654305269">"Puoi sbloccare il tablet usando il tuo volto o la tua impronta. Per motivi di sicurezza, questa opzione richiede un blocco schermo alternativo."</string>
<string name="biometrics_unlock_title" product="device" msgid="3342994085226864170">"Puoi sbloccare il dispositivo usando il tuo volto o la tua impronta. Per motivi di sicurezza, questa opzione richiede un blocco schermo alternativo."</string>
<string name="encrypt_title" product="tablet" msgid="8915795247786124547">"Cripta tablet"</string>
- <string name="encrypt_title" product="default" msgid="511146128799853404">"Cripta telefono"</string>
+ <string name="encrypt_title" product="default" msgid="511146128799853404">"Cripta smartphone"</string>
<string name="suggested_lock_settings_summary" product="tablet" msgid="8821254377043173267">"Imposta un blocco schermo per proteggere il tablet"</string>
<string name="suggested_lock_settings_summary" product="device" msgid="4863929838844014122">"Imposta un blocco schermo per proteggere il dispositivo"</string>
<string name="suggested_lock_settings_summary" product="default" msgid="8050809409337082738">"Imposta un blocco schermo per proteggere il telefono"</string>
diff --git a/res-product/values-iw/strings.xml b/res-product/values-iw/strings.xml
index 5c285e2..11c328f 100644
--- a/res-product/values-iw/strings.xml
+++ b/res-product/values-iw/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"כדי להגדיר את התכונה \'פתיחה ע\"י זיהוי הפנים\', נדרש קוד אימות.\n\nקוד האימות מגן על הטלפון במקרים של אובדן או גניבה."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"כדי להגדיר את התכונה \'פתיחה ע\"י זיהוי הפנים\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על הטלפון במקרים של אובדן או גניבה."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"כדי להגדיר את התכונה \'פתיחה ע\"י זיהוי הפנים\', נדרשת סיסמה.\n\nהסיסמה מגינה על הטלפון במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרש קוד אימות.\n\nקוד האימות מגן על הטאבלט במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על הטאבלט במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרשת סיסמה.\n\nהסיסמה מגינה על הטאבלט במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרש קוד אימות.\n\nקוד האימות מגן על המכשיר במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על המכשיר במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרשת סיסמה.\n\nהסיסמה מגינה על המכשיר במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרש קוד אימות.\n\nקוד האימות מגן על הטלפון במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על הטלפון במקרים של אובדן או גניבה."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"כדי להגדיר את התכונות \'פתיחה ע\"י זיהוי הפנים\' ו\'ביטול הנעילה בטביעת אצבע\', נדרשת סיסמה.\n\nהסיסמה מגינה על הטלפון במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרש קוד אימות.\n\nקוד האימות מגן על הטאבלט במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על הטאבלט במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרשת סיסמה.\n\nהסיסמה מגינה על הטאבלט במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרש קוד אימות.\n\nקוד האימות מגן על המכשיר במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על המכשיר במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרשת סיסמה.\n\nהסיסמה מגינה על המכשיר במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרש קוד אימות.\n\nקוד האימות מגן על הטלפון במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרש קו ביטול נעילה.\n\nקו ביטול הנעילה מגן על הטלפון במקרים של אובדן או גניבה."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"כדי להגדיר את התכונות \'פתיחה בזיהוי פנים\' ו\'פתיחה בטביעת אצבע\', נדרשת סיסמה.\n\nהסיסמה מגינה על הטלפון במקרים של אובדן או גניבה."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"הפעולה הזו מוחקת את התבנית והתמונות של טביעת האצבע המשויכות אל <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>, שמאוחסנות בטלפון שלך"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"הפעולה הזו מוחקת את התבנית והתמונות של טביעת האצבע המשויכות אל <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>, שמאוחסנות בטאבלט שלך"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"הפעולה הזו מוחקת את התבנית והתמונות של טביעת האצבע שמשויכות אל <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> ושמורה במכשיר שלך"</string>
diff --git a/res-product/values-ja/strings.xml b/res-product/values-ja/strings.xml
index beefc63..464d42a 100644
--- a/res-product/values-ja/strings.xml
+++ b/res-product/values-ja/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"顔認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にスマートフォンを保護します。"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"顔認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にスマートフォンを保護します。"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"顔認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にスマートフォンを保護するものです。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"顔認証と指紋認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にタブレットを保護します。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"顔認証と指紋認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にタブレットを保護します。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"顔認証と指紋認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にタブレットを保護するものです。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"顔認証と指紋認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にデバイスを保護します。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"顔認証と指紋認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にデバイスを保護します。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"顔認証と指紋認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にデバイスを保護するものです。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"顔認証と指紋認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にスマートフォンを保護します。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"顔認証と指紋認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にスマートフォンを保護します。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"顔認証と指紋認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にスマートフォンを保護するものです。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"指紋認証と顔認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にタブレットを保護します。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"指紋認証と顔認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にタブレットを保護します。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"指紋認証と顔認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にタブレットを保護するものです。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"指紋認証と顔認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にデバイスを保護します。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"指紋認証と顔認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にデバイスを保護します。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"指紋認証と顔認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にデバイスを保護するものです。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"指紋認証と顔認証を設定するには PIN が必要です。\n\nPIN は紛失・盗難時にスマートフォンを保護します。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"指紋認証と顔認証を設定するにはパターンが必要です。\n\nパターンは紛失・盗難時にスマートフォンを保護します。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"指紋認証と顔認証を設定するにはパスワードが必要です。\n\nパスワードは、紛失したり盗難に遭ったりした場合にスマートフォンを保護するものです。"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」に関連付けられた指紋の画像とモデルがスマートフォンから削除されます"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」に関連付けられた指紋の画像とモデルがタブレットから削除されます"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」に関連付けられた指紋の画像とモデルがデバイスから削除されます"</string>
diff --git a/res-product/values-ka/strings.xml b/res-product/values-ka/strings.xml
index 764d445..3c7fef4 100644
--- a/res-product/values-ka/strings.xml
+++ b/res-product/values-ka/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"სახით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს ტელეფონს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"სახით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს ტელეფონს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"სახით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს ტელეფონს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს ტაბლეტს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს ტაბლეტს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს ტაბლეტს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს მოწყობილობას, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს მოწყობილობას, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს მოწყობილობას, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს ტელეფონს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს ტელეფონს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს ტელეფონს, თუ ის დაიკარგება ან მას მოგპარავენ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს ტაბლეტს, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს ტაბლეტს, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს ტაბლეტს, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს მოწყობილობას, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს მოწყობილობას, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს მოწყობილობას, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა PIN-კოდი.\n\nPIN-კოდი დაიცავს ტელეფონს, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა ნიმუში.\n\nნიმუში დაიცავს ტელეფონს, თუ მას დაკარგავთ ან მოგპარავენ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"სახით და ანაბეჭდით განბლოკვის დასაყენებლად საჭიროა პაროლი.\n\nპაროლი დაიცავს ტელეფონს, თუ მას დაკარგავთ ან მოგპარავენ."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ამ მოქმედებით წაიშლება თითის ანაბეჭდის სურათები და თქვენს ტელეფონზე შენახული მოდელები, რომლებიც ასოცირებულია „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“-თან"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ამ მოქმედებით წაიშლება თითის ანაბეჭდის სურათები და თქვენს ტაბლეტზე შენახული მოდელები, რომლებიც ასოცირებულია „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“-თან"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ამ მოქმედებით წაიშლება თითის ანაბეჭდის სურათები და თქვენს მოწყობილობაზე შენახული მოდელები, რომლებიც ასოცირებულია „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“-თან"</string>
diff --git a/res-product/values-kk/strings.xml b/res-product/values-kk/strings.xml
index bfd8f6b..d3e2027 100644
--- a/res-product/values-kk/strings.xml
+++ b/res-product/values-kk/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Бет тану функциясын реттеу үшін PIN коды қажет.\n\nТелефон жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Бет тану функциясын реттеу үшін өрнек қажет.\n\nТелефон жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Бет тану функциясын реттеу үшін құпия сөз қажет.\n\nТелефон жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін PIN коды қажет.\n\nПланшет жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін өрнек қажет.\n\nПланшет жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін құпия сөз қажет.\n\nПланшет жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін PIN коды қажет.\n\nҚұрылғы жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін өрнек қажет.\n\nҚұрылғы жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін құпия сөз қажет.\n\nҚұрылғы жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін PIN коды қажет.\n\nТелефон жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін өрнек қажет.\n\nТелефон жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Бет тану және саусақ ізімен ашу функциясын реттеу үшін құпия сөз қажет.\n\nТелефон жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін PIN коды керек.\n\nПланшет жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін өрнек керек.\n\nПланшет жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін құпия сөз керек.\n\nПланшет жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін PIN коды керек.\n\nҚұрылғы жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін өрнек керек.\n\nҚұрылғы жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін құпия сөз керек.\n\nҚұрылғы жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін PIN коды керек.\n\nТелефон жоғалған немесе ұрланған жағдайда, PIN коды оны қорғайды."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін өрнек керек.\n\nТелефон жоғалған немесе ұрланған жағдайда, өрнек оны қорғайды."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Саусақ ізімен ашу және Бет тану функциясын реттеу үшін құпия сөз керек.\n\nТелефон жоғалған немесе ұрланған жағдайда, құпия сөз оны қорғайды."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"\"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ізінің телефонда сақталған суреттері мен үлгісі жойылады"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"\"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ізінің планшетте сақталған суреттері мен үлгісі жойылады"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"\"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ізінің құрылғыда сақталған суреттері мен үлгісі жойылады"</string>
diff --git a/res-product/values-km/strings.xml b/res-product/values-km/strings.xml
index 6190458..9c45736 100644
--- a/res-product/values-km/strings.xml
+++ b/res-product/values-km/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ។\n\nកូដ PIN ការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ។\n\nលំនាំការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ។\n\nពាក្យសម្ងាត់ការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោដោយស្កេនមុខ និងការដោះសោដោយស្កេនស្នាមម្រាមដៃ។\n\nកូដ PIN ការពារថេប្លេត ប្រសិនបើបាត់ថេប្លេត ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ និងការដោះសោដោយប្រើស្នាមម្រាមដៃ។\n\nលំនាំការពារថេប្លេត ប្រសិនបើបាត់ថេប្លេត ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ និងការដោះសោដោយប្រើស្នាមម្រាមដៃ។\n\nពាក្យសម្ងាត់ការពារថេប្លេត ប្រសិនបើបាត់ថេប្លេត ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោដោយស្កេនមុខ និងការដោះសោដោយស្កេនស្នាមម្រាមដៃ។\n\nកូដ PIN ការពារឧបករណ៍ ប្រសិនបើបាត់ឧបករណ៍ ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ និងការដោះសោដោយប្រើស្នាមម្រាមដៃ។\n\nលំនាំការពារឧបករណ៍ ប្រសិនបើបាត់ឧបករណ៍ ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោតាមទម្រង់មុខ និងការដោះសោដោយប្រើស្នាមម្រាមដៃ។\n\nពាក្យសម្ងាត់ការពារឧបករណ៍ ប្រសិនបើបាត់ឧបករណ៍ ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោដោយស្កេនមុខ និងការដោះសោដោយស្កេនស្នាមម្រាមដៃ។\n\nកូដ PIN ការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោដោយស្កេនមុខ និងការដោះសោដោយស្កេនស្នាមម្រាមដៃ។\n\nលំនាំការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោដោយស្កេនមុខ និងការដោះសោដោយស្កេនស្នាមម្រាមដៃ។\n\nពាក្យសម្ងាត់ការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nកូដ PIN ការពារថេប្លេត ប្រសិនបើបាត់ថេប្លេត ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nលំនាំការពារថេប្លេត ប្រសិនបើបាត់ថេប្លេត ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nពាក្យសម្ងាត់ការពារថេប្លេត ប្រសិនបើបាត់ថេប្លេត ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nកូដ PIN ការពារឧបករណ៍ ប្រសិនបើបាត់ឧបករណ៍ ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nលំនាំការពារឧបករណ៍ ប្រសិនបើបាត់ឧបករណ៍ ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nពាក្យសម្ងាត់ការពារឧបករណ៍ ប្រសិនបើបាត់ឧបករណ៍ ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"តម្រូវឱ្យមានកូដ PIN ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nកូដ PIN ការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"តម្រូវឱ្យមានលំនាំ ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nលំនាំការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"តម្រូវឱ្យមានពាក្យសម្ងាត់ ដើម្បីរៀបចំការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងការដោះសោដោយស្កេនមុខ។\n\nពាក្យសម្ងាត់ការពារទូរសព្ទ ប្រសិនបើបាត់ទូរសព្ទ ឬត្រូវបានគេលួច។"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"សកម្មភាពនេះលុបគំរូ និងរូបភាពស្នាមម្រាមដៃ ដែលពាក់ព័ន្ធនឹង \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ដែលត្រូវបានរក្សាទុកនៅលើទូរសព្ទរបស់អ្នក"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"សកម្មភាពនេះលុបគំរូ និងរូបភាពស្នាមម្រាមដៃ ដែលពាក់ព័ន្ធនឹង \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ដែលត្រូវបានរក្សាទុកនៅលើថេប្លេតរបស់អ្នក"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"សកម្មភាពនេះលុបគំរូ និងរូបភាពស្នាមម្រាមដៃ ដែលពាក់ព័ន្ធនឹង \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ដែលត្រូវបានរក្សាទុកនៅលើឧបករណ៍របស់អ្នក"</string>
diff --git a/res-product/values-kn/strings.xml b/res-product/values-kn/strings.xml
index cd61786..03d3fe8 100644
--- a/res-product/values-kn/strings.xml
+++ b/res-product/values-kn/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಿನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪ್ಯಾಟರ್ನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಾಸ್ವರ್ಡ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಟ್ಯಾಬ್ಲೆಟ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಿನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಟ್ಯಾಬ್ಲೆಟ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪ್ಯಾಟರ್ನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಟ್ಯಾಬ್ಲೆಟ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಾಸ್ವರ್ಡ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಸಾಧನ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಿನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಸಾಧನ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪ್ಯಾಟರ್ನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಸಾಧನ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಾಸ್ವರ್ಡ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಿನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪ್ಯಾಟರ್ನ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಅದನ್ನು ಪಾಸ್ವರ್ಡ್ ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಟ್ಯಾಬ್ಲೆಟ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪಿನ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಟ್ಯಾಬ್ಲೆಟ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪ್ಯಾಟರ್ನ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಟ್ಯಾಬ್ಲೆಟ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪಾಸ್ವರ್ಡ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಸಾಧನ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪಿನ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಸಾಧನ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪ್ಯಾಟರ್ನ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಸಾಧನ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪಾಸ್ವರ್ಡ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪಿನ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪಿನ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪ್ಯಾಟರ್ನ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪ್ಯಾಟರ್ನ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಮತ್ತು ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ.\n\nಫೋನ್ ಕಳೆದುಹೋದರೆ ಅಥವಾ ಕಳುವಾದರೆ ಪಾಸ್ವರ್ಡ್ ಅದನ್ನು ರಕ್ಷಿಸುತ್ತದೆ."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ಗೆ ಸಂಬಂಧಿಸಿದ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಚಿತ್ರಗಳು ಮತ್ತು ಮಾಡೆಲ್ ಅನ್ನು ಇದು ಅಳಿಸುತ್ತದೆ"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ಗೆ ಸಂಬಂಧಿಸಿದ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಚಿತ್ರಗಳು ಮತ್ತು ಮಾಡೆಲ್ ಅನ್ನು ಇದು ಅಳಿಸುತ್ತದೆ"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ಗೆ ಸಂಬಂಧಿಸಿದ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಚಿತ್ರಗಳು ಮತ್ತು ಮಾಡೆಲ್ ಅನ್ನು ಇದು ಅಳಿಸುತ್ತದೆ"</string>
diff --git a/res-product/values-ko/strings.xml b/res-product/values-ko/strings.xml
index c173981..15da50b939 100644
--- a/res-product/values-ko/strings.xml
+++ b/res-product/values-ko/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"얼굴 인식 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 휴대전화를 분실하거나 도난당했을 때 휴대전화를 보호할 수 있습니다."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"얼굴 인식 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 휴대전화를 분실하거나 도난당했을 때 휴대전화를 보호할 수 있습니다."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"얼굴 인식 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 휴대전화를 분실하거나 도난당했을 때 보호할 수 있습니다."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 태블릿을 분실하거나 도난당했을 때 태블릿을 보호할 수 있습니다."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 태블릿을 분실하거나 도난당했을 때 태블릿을 보호할 수 있습니다."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 태블릿을 분실하거나 도난당했을 때 태블릿을 보호할 수 있습니다."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 기기를 분실하거나 도난당했을 때 기기를 보호할 수 있습니다."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 기기를 분실하거나 도난당했을 때 기기를 보호할 수 있습니다."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 기기를 분실하거나 도난당했을 때 기기를 보호할 수 있습니다."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 휴대전화를 분실하거나 도난당했을 때 보호할 수 있습니다."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 휴대전화를 분실하거나 도난당했을 때 보호할 수 있습니다."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"얼굴 인식 잠금 해제 및 지문 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 휴대전화를 분실하거나 도난당했을 때 보호할 수 있습니다."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 태블릿을 분실하거나 도난당했을 때 태블릿을 보호할 수 있습니다."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 태블릿을 분실하거나 도난당했을 때 태블릿을 보호할 수 있습니다."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 태블릿을 분실하거나 도난당했을 때 태블릿을 보호할 수 있습니다."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 기기를 분실하거나 도난당했을 때 기기를 보호할 수 있습니다."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 기기를 분실하거나 도난당했을 때 기기를 보호할 수 있습니다."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 기기를 분실하거나 도난당했을 때 기기를 보호할 수 있습니다."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 PIN이 필요합니다.\n\nPIN을 사용하면 휴대전화를 분실하거나 도난당했을 때 휴대전화를 보호할 수 있습니다."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 패턴이 필요합니다.\n\n패턴을 사용하면 휴대전화를 분실하거나 도난당했을 때 휴대전화를 보호할 수 있습니다."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"지문 잠금 해제 및 얼굴 인식 잠금 해제를 설정하려면 비밀번호가 필요합니다.\n\n비밀번호를 사용하면 휴대전화를 분실하거나 도난당했을 때 보호할 수 있습니다."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"휴대전화에 저장된 \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' 지문과 관련된 지문 이미지와 모델이 삭제됩니다"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"태블릿에 저장된 \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' 지문과 관련된 지문 이미지와 모델이 삭제됩니다"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"기기에 저장된 \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' 지문과 관련된 지문 이미지와 모델이 삭제됩니다"</string>
diff --git a/res-product/values-ky/strings.xml b/res-product/values-ky/strings.xml
index 10d8f62..7eb25de 100644
--- a/res-product/values-ky/strings.xml
+++ b/res-product/values-ky/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Жүзүнөн таанып ачуу функциясын кошуу үчүн PIN код талап кылынат.\n\nPIN код жоголгон же уурдалган телефондогу нерселерди коргойт."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Жүзүнөн таанып ачуу функциясын кошуу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч жоголгон же уурдалган телефондогу нерселерди коргойт."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Жүзүнөн таанып ачуу функциясын кошуу үчүн сырсөз талап кылынат.\n\nСырсөз жоголгон же уурдалган телефонуңуздагы нерселерди коргойт."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн PIN код талап кылынат.\n\nPIN код планшет жоголсо же уурдалса, аны коргойт."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч планшет жоголсо же уурдалса, аны коргойт."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн сырсөз талап кылынат.\n\nСырсөз планшет жоголсо же уурдалса, аны коргойт."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн PIN код талап кылынат.\n\nPIN код түзмөк жоголсо же уурдалса, аны коргойт."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч түзмөк жоголсо же уурдалса, аны коргойт."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн сырсөз талап кылынат.\n\nСырсөз түзмөк жоголсо же уурдалса, аны коргойт."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн PIN код талап кылынат.\n\nPIN код жоголгон же уурдалган телефондогу нерселерди коргойт."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч жоголгон же уурдалган телефондогу нерселерди коргойт."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Жүзүнөн таанып ачуу жана манжа изи менен ачуу функцияларын коюу үчүн сырсөз талап кылынат.\n\nСырсөз жоголгон же уурдалган телефонуңуздагы нерселерди коргойт."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн PIN код талап кылынат.\n\nPIN код планшет жоголсо же уурдалса, аны коргойт."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч планшет жоголсо же уурдалса, аны коргойт."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн сырсөз талап кылынат.\n\nСырсөз планшет жоголсо же уурдалса, аны коргойт."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн PIN код талап кылынат.\n\nPIN код түзмөк жоголсо же уурдалса, аны коргойт."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч түзмөк жоголсо же уурдалса, аны коргойт."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн сырсөз талап кылынат.\n\nСырсөз түзмөк жоголсо же уурдалса, аны коргойт."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн PIN код талап кылынат.\n\nPIN код жоголгон же уурдалган телефондогу нерселерди коргойт."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн графикалык ачкыч талап кылынат.\n\nГрафикалык ачкыч жоголгон же уурдалган телефондогу нерселерди коргойт."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Манжа изи менен ачуу жана Жүзүнөн таанып ачуу функцияларын коюу үчүн сырсөз талап кылынат.\n\nСырсөз жоголгон же уурдалган телефонуңуздагы нерселерди коргойт."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ушуну менен телефонуңуздагы \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" менен байланышкан манжа изинин сүрөттөрү менен үлгүсү өчөт"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ушуну менен планшетиңиздеги \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" менен байланышкан манжа изинин сүрөттөрү менен үлгүсү өчөт"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ушуну менен түзмөгүңүздөгү \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" менен байланышкан манжа изинин сүрөттөрү менен үлгүсү өчөт"</string>
diff --git a/res-product/values-lo/strings.xml b/res-product/values-lo/strings.xml
index 4db22ac..44ec957 100644
--- a/res-product/values-lo/strings.xml
+++ b/res-product/values-lo/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ.\n\nPIN ຈະປົກປ້ອງໂທລະສັບຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ.\n\nຮູບແບບຈະປົກປ້ອງໂທລະສັບຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ.\n\nລະຫັດຜ່ານຈະປົກປ້ອງໂທລະສັບຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nPIN ຈະປົກປ້ອງແທັບເລັດຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nຮູບແບບຈະປົກປ້ອງແທັບເລັດຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nລະຫັດຜ່ານຈະປົກປ້ອງແທັບເລັດຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nPIN ຈະປົກປ້ອງອຸປະກອນຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nຮູບແບບຈະປົກປ້ອງອຸປະກອນຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nລະຫັດຜ່ານຈະປົກປ້ອງອຸປະກອນຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nPIN ຈະປົກປ້ອງໂທລະສັບຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nຮູບແບບຈະປົກປ້ອງໂທລະສັບຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ ແລະ ການປົດລັອກດ້ວຍລາຍນິ້ວມື.\n\nລະຫັດຜ່ານຈະປົກປ້ອງໂທລະສັບຫາກມັນເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nPIN ຈະຊ່ວຍປົກປ້ອງແທັບເລັດໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nຮູບແບບຈະຊ່ວຍປົກປ້ອງແທັບເລັດໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nລະຫັດຜ່ານຈະຊ່ວຍປົກປ້ອງແທັບເລັດໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nPIN ຈະຊ່ວຍປົກປ້ອງອຸປະກອນໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nຮູບແບບຈະຊ່ວຍປົກປ້ອງອຸປະກອນໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nລະຫັດຜ່ານຈະຊ່ວຍປົກປ້ອງອຸປະກອນໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ຕ້ອງໃຊ້ PIN ເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nPIN ຈະຊ່ວຍປົກປ້ອງໂທລະສັບໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ຕ້ອງໃຊ້ຮູບແບບເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nຮູບແບບຈະຊ່ວຍປົກປ້ອງໂທລະສັບໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ຕ້ອງໃຊ້ລະຫັດຜ່ານເພື່ອຕັ້ງຄ່າປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ການປົດລັອກດ້ວຍໜ້າ.\n\nລະຫັດຜ່ານຈະຊ່ວຍປົກປ້ອງໂທລະສັບໃນກໍລະນີທີ່ເສຍ ຫຼື ຖືກລັກ."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ນີ້ຈະລຶບຮູບ ແລະ ຮູບແບບລາຍນິ້ວມືທີ່ເຊື່ອມໂຍງກັບ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ທີ່ຈັດເກັບໄວ້ຢູ່ໂທລະສັບຂອງທ່ານອອກ"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ນີ້ຈະລຶບຮູບ ແລະ ຮູບແບບລາຍນິ້ວມືທີ່ເຊື່ອມໂຍງກັບ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ທີ່ຈັດເກັບໄວ້ຢູ່ແທັບເລັດຂອງທ່ານອອກ"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ນີ້ຈະລຶບຮູບ ແລະ ຮູບແບບລາຍນິ້ວມືທີ່ເຊື່ອມໂຍງກັບ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ທີ່ຈັດເກັບໄວ້ຢູ່ອຸປະກອນຂອງທ່ານອອກ"</string>
diff --git a/res-product/values-lt/strings.xml b/res-product/values-lt/strings.xml
index 9688a06..d9584d2 100644
--- a/res-product/values-lt/strings.xml
+++ b/res-product/values-lt/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Norint nustatyti atrakinimą pagal veidą, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą telefoną."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Norint nustatyti atrakinimą pagal veidą, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą telefoną."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Norint nustatyti atrakinimą pagal veidą, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą telefoną."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą planšetinį kompiuterį."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą planšetinį kompiuterį."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą planšetinį kompiuterį."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą įrenginį."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą įrenginį."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą įrenginį."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą telefoną."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą telefoną."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Norint nustatyti atrakinimą pagal veidą ir atrakinimą kontroliniu kodu, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą telefoną."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą planšetinį kompiuterį."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą planšetinį kompiuterį."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą planšetinį kompiuterį."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą įrenginį."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą įrenginį."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą įrenginį."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas PIN kodas.\n\nPIN kodas apsaugo pamestą ar pavogtą telefoną."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas atrakinimo piešinys.\n\nAtrakinimo piešinys apsaugo pamestą ar pavogtą telefoną."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Norint nustatyti atrakinimą piršto atspaudu ir atrakinimą pagal veidą, būtinas slaptažodis.\n\nSlaptažodis apsaugo pamestą ar pavogtą telefoną."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Bus ištrinti telefone saugomi piršto atspaudo vaizdai ir modelis, susieti su „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Bus ištrinti planšetiniame kompiuteryje saugomi kontrolinio kodo vaizdai ir modelis, susieti su „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Bus ištrinti įrenginyje saugomi kontrolinio kodo vaizdai ir modelis, susieti su „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“"</string>
diff --git a/res-product/values-lv/strings.xml b/res-product/values-lv/strings.xml
index a6ddbcf..2b86b9c 100644
--- a/res-product/values-lv/strings.xml
+++ b/res-product/values-lv/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Lai iestatītu autorizāciju pēc sejas, ir jābūt iestatītam PIN.\n\nPIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Lai iestatītu autorizāciju pēc sejas, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Lai iestatītu autorizāciju pēc sejas, ir jābūt iestatītai parolei.\n\nParole aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītam PIN.\n\nPIN aizsargā planšetdatoru, ja tas tiek nozaudēts vai nozagts."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā planšetdatoru, ja tas tiek nozaudēts vai nozagts."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītai parolei.\n\nParole aizsargā planšetdatoru, ja tas tiek nozaudēts vai nozagts."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītam PIN.\n\nPIN aizsargā ierīci, ja tā tiek nozaudēta vai nozagta."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā ierīci, ja tā tiek nozaudēta vai nozagta."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītai parolei.\n\nParole aizsargā ierīci, ja tā tiek nozaudēta vai nozagta."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītam PIN.\n\nPIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Lai iestatītu autorizāciju pēc sejas un autorizāciju ar pirksta nospiedumu, ir jābūt iestatītai parolei.\n\nParole aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītam PIN.\n\nPIN aizsargā planšetdatoru, ja tas tiek nozaudēts vai nozagts."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā planšetdatoru, ja tas tiek nozaudēts vai nozagts."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītai parolei.\n\nParole aizsargā planšetdatoru, ja tas tiek nozaudēts vai nozagts."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītam PIN.\n\nPIN aizsargā ierīci, ja tā tiek nozaudēta vai nozagta."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā ierīci, ja tā tiek nozaudēta vai nozagta."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītai parolei.\n\nParole aizsargā ierīci, ja tā tiek nozaudēta vai nozagta."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītam PIN.\n\nPIN aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītai kombinācijai.\n\nKombinācija aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Lai iestatītu autorizāciju ar pirksta nospiedumu un autorizāciju pēc sejas, ir jābūt iestatītai parolei.\n\nParole aizsargā tālruni, ja tas tiek nozaudēts vai nozagts."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Tādējādi tiks dzēsti jūsu tālrunī saglabātie pirksta nospieduma attēli un modelis, kas saistīti ar pirksta nospiedumu “<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Tādējādi tiks dzēsti jūsu planšetdatorā saglabātie pirksta nospieduma attēli un modelis, kas saistīti ar pirksta nospiedumu “<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Tādējādi tiks dzēsti jūsu ierīcē glabātie pirksta nospieduma attēli un modelis, kas saistīti ar “<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”"</string>
diff --git a/res-product/values-mk/strings.xml b/res-product/values-mk/strings.xml
index 1e03880..8e1548f 100644
--- a/res-product/values-mk/strings.xml
+++ b/res-product/values-mk/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Потребен е PIN-код за да поставите „Отклучување со лик“.\n\nPIN-кодот го заштитува телефонот ако го изгубите или ви го украдат."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Потребна е шема за да поставите „Отклучување со лик“.\n\nШемата го заштитува телефонот ако го изгубите или ви го украдат."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Потребна е лозинка за да поставите „Отклучување со лик“.\n\nЛозинката го заштитува телефонот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Потребен е PIN-код за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nPIN-кодот го заштитува таблетот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Потребна е шема за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nШемата го заштитува таблетот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Потребна е лозинка за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nЛозинката го заштитува таблетот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Потребен е PIN-код за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nPIN-кодот го заштитува уредот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Потребна е шема за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nШемата го заштитува уредот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Потребна е лозинка за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nЛозинката го заштитува уредот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Потребен е PIN-код за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nPIN-кодот го заштитува телефонот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Потребна е шема за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nШемата го заштитува телефонот ако го изгубите или ви го украдат."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Потребна е лозинка за да поставите „Отклучување со лик“ и „Отклучување со отпечаток“.\n\nЛозинката го заштитува телефонот ако го изгубите или ви го украдат."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Потребен е PIN-код за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nPIN-кодот го штити таблетот при губење или кражба."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Потребна е шема за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nШемата го штити таблетот при губење или кражба."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Потребна е лозинка за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nЛозинката го штити таблетот при губење или кражба."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Потребен е PIN-код за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nPIN-кодот го штити уредот при губење или кражба."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Потребна е шема за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nШемата го штити уредот при губење или кражба."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Потребна е лозинка за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nЛозинката го штити уредот при губење или кражба."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Потребен е PIN-код за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nPIN-кодот го штити телефонот при губење или кражба."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Потребна е шема за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nШемата го штити телефонот при губење или кражба."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Потребна е лозинка за да поставите „Отклучување со отпечаток“ и „Отклучување со лик“.\n\nЛозинката го штити телефонот при губење или кражба."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ова ги брише сликите и моделот на отпечатокот „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ што се складирани на телефонот"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ова ги брише сликите и моделот на отпечатокот „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ што се складирани на таблетот"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ова ги брише сликите и моделот на отпечатокот „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“ што се складирани на уредот"</string>
diff --git a/res-product/values-ml/strings.xml b/res-product/values-ml/strings.xml
index e0d09ea..00c732a 100644
--- a/res-product/values-ml/strings.xml
+++ b/res-product/values-ml/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ഫെയ്സ് അൺലോക്ക് സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ഫെയ്സ് അൺലോക്ക് സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ഫെയ്സ് അൺലോക്ക് സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nടാബ്ലെറ്റ് നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nടാബ്ലെറ്റ് നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nടാബ്ലെറ്റ് നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nഉപകരണം നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nഉപകരണം നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nഉപകരണം നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ഫെയ്സ് അൺലോക്കും ഫിംഗർപ്രിന്റ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nടാബ്ലെറ്റ് നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nടാബ്ലെറ്റ് നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nടാബ്ലെറ്റ് നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nഉപകരണം നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nഉപകരണം നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nഉപകരണം നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പിൻ ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പിൻ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാറ്റേൺ ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാറ്റേൺ അതിനെ പരിരക്ഷിക്കുന്നു."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ഫിംഗർപ്രിന്റ് അൺലോക്കും ഫെയ്സ് അൺലോക്കും സജ്ജീകരിക്കാൻ പാസ്വേഡ് ആവശ്യമാണ്.\n\nഫോൺ നഷ്ടപ്പെടുകയോ മോഷ്ടിക്കപ്പെടുകയോ ചെയ്താൽ പാസ്വേഡ് അതിനെ പരിരക്ഷിക്കുന്നു."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' എന്നതുമായി ബന്ധപ്പെട്ട് നിങ്ങളുടെ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഫിംഗർപ്രിന്റ് ചിത്രങ്ങളും മോഡലും ഇത് ഇല്ലാതാക്കുന്നു"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' എന്നതുമായി ബന്ധപ്പെട്ട് നിങ്ങളുടെ ടാബ്ലെറ്റിൽ സംഭരിച്ചിരിക്കുന്ന ഫിംഗർപ്രിന്റ് ചിത്രങ്ങളും മോഡലും ഇത് ഇല്ലാതാക്കുന്നു"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' എന്നതുമായി ബന്ധപ്പെട്ട് നിങ്ങളുടെ ഉപകരണത്തിൽ സംഭരിച്ചിരിക്കുന്ന ഫിംഗർപ്രിന്റ് ചിത്രങ്ങളും മോഡലും ഇത് ഇല്ലാതാക്കുന്നു"</string>
diff --git a/res-product/values-mn/strings.xml b/res-product/values-mn/strings.xml
index e7ad331..48d5e42 100644
--- a/res-product/values-mn/strings.xml
+++ b/res-product/values-mn/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Царайгаар түгжээ тайлахыг тохируулахын тулд ПИН шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Царайгаар түгжээ тайлахыг тохируулахын тулд хээ шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ үүнийг хамгаалдаг."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Царайгаар түгжээ тайлахыг тохируулахын тулд нууц үг шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг үүнийг хамгаалдаг."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд ПИН шаардлагатай.\n\nТаблетыг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд хээ шаардлагатай.\n\nТаблетыг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ үүнийг хамгаалдаг."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд нууц үг шаардлагатай.\n\nТаблетыг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг үүнийг хамгаалдаг."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд ПИН шаардлагатай.\n\nТөхөөрөмжийг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд хээ шаардлагатай.\n\nТөхөөрөмжийг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ үүнийг хамгаалдаг."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд нууц үг шаардлагатай.\n\nТөхөөрөмжийг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг үүнийг хамгаалдаг."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд ПИН шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН үүнийг хамгаалдаг."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд хээ шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ үүнийг хамгаалдаг."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Царайгаар түгжээ тайлах болон Хурууны хээгээр түгжээ тайлахыг тохируулахын тулд нууц үг шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг үүнийг хамгаалдаг."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад ПИН шаардлагатай.\n\nТаблетыг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН хамгаалдаг."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад хээ шаардлагатай.\n\nТаблетыг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ хамгаалдаг."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад нууц үг шаардлагатай.\n\nТаблетыг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг хамгаалдаг."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад ПИН шаардлагатай.\n\nТөхөөрөмжийг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН хамгаалдаг."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад хээ шаардлагатай.\n\nТөхөөрөмжийг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ хамгаалдаг."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад нууц үг шаардлагатай.\n\nТөхөөрөмжийг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг хамгаалдаг."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад ПИН шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд ПИН хамгаалдаг."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад хээ шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд хээ хамгаалдаг."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Хурууны хээгээр түгжээ тайлах болон Царайгаар түгжээ тайлахыг тохируулахад нууц үг шаардлагатай.\n\nУтсыг гээсэн эсвэл хулгайд алдсан тохиолдолд нууц үг хамгаалдаг."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Энэ нь таны утсан дээр хадгалсан \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'-тай холбоотой хурууны хээний зургууд болон загварыг устгана"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Энэ нь таны таблет дээр хадгалсан \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'-тай холбоотой хурууны хээний зургууд болон загварыг устгана"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Энэ нь таны төхөөрөмж дээр хадгалсан \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'-тай холбоотой хурууны хээний зургууд болон загварыг устгана"</string>
diff --git a/res-product/values-mr/strings.xml b/res-product/values-mr/strings.xml
index a210786..ef8e745 100644
--- a/res-product/values-mr/strings.xml
+++ b/res-product/values-mr/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"फेस अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nफोन हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"फेस अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nफोन हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करते."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"फेस अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nफोन हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nटॅबलेट हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nटॅबलेट हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करते."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nटॅबलेट हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nडिव्हाइस हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nडिव्हाइस हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करते."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nडिव्हाइस हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nफोन हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nफोन हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करते."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"फेस अनलॉक आणि फिंगरप्रिंट अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nफोन हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nतुमचा टॅबलेट हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nतुमचा टॅबलेट हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nतुमचा टॅबलेट हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nतुमचे डिव्हाइस हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nतुमचे डिव्हाइस हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nतुमचे डिव्हाइस हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पिन आवश्यक आहे.\n\nतुमचा फोन हरवल्यास किंवा चोरीला गेल्यास, पिन त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पॅटर्न आवश्यक आहे.\n\nतुमचा फोन हरवल्यास किंवा चोरीला गेल्यास, पॅटर्न त्याचे संरक्षण करतो."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"फिंगरप्रिंट अनलॉक आणि फेस अनलॉक सेट करण्यासाठी पासवर्ड आवश्यक आहे.\n\nतुमचा फोन हरवल्यास किंवा चोरीला गेल्यास, पासवर्ड त्याचे संरक्षण करतो."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"हे तुमच्या फोनवर स्टोअर केलेल्या फिंगरप्रिंट इमेज आणि \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' शी संबंधित असलेले मॉडेल हटवते"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"हे तुमच्या टॅबलेटवर स्टोअर केलेल्या फिंगरप्रिंट इमेज आणि \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' शी संबंधित असलेले मॉडेल हटवते"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"हे तुमच्या डिव्हाइसवर स्टोअर केलेल्या फिंगरप्रिंट इमेज आणि \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' शी संबंधित असलेले मॉडेल हटवते"</string>
diff --git a/res-product/values-ms/strings.xml b/res-product/values-ms/strings.xml
index ec25e3d..d44395e 100644
--- a/res-product/values-ms/strings.xml
+++ b/res-product/values-ms/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"PIN diperlukan untuk menyediakan Buka Kunci Wajah.\n\nPIN melindungi telefon jika telefon hilang atau dicuri."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Corak diperlukan untuk menyediakan Buka Kunci Wajah.\n\nCorak melindungi telefon jika telefon hilang atau dicuri."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Kata laluan diperlukan untuk menyediakan Buka Kunci Wajah.\n\nKata laluan melindungi telefon jika telefon hilang atau dicuri."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"PIN diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nPIN melindungi tablet jika tablet hilang atau dicuri."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Corak diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nCorak melindungi tablet jika tablet hilang atau dicuri."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Kata laluan diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nKata laluan melindungi tablet jika tablet hilang atau dicuri."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"PIN diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nPIN melindungi peranti jika peranti hilang atau dicuri."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Corak diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nCorak melindungi peranti jika peranti hilang atau dicuri."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Kata laluan diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nKata laluan melindungi peranti jika peranti hilang atau dicuri."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"PIN diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nPIN melindungi telefon jika telefon hilang atau dicuri."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Corak diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nCorak melindungi telefon jika telefon hilang atau dicuri."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Kata laluan diperlukan untuk menyediakan Buka Kunci Wajah dan Buka Kunci Cap Jari.\n\nKata laluan melindungi telefon jika telefon hilang atau dicuri."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"PIN diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nPIN melindungi tablet jika tablet hilang atau dicuri."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Corak diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nCorak melindungi tablet jika tablet hilang atau dicuri."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Kata laluan diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nKata laluan melindungi tablet jika tablet hilang atau dicuri."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"PIN diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nPIN melindungi peranti jika peranti hilang atau dicuri."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Corak diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nCorak melindungi peranti jika peranti hilang atau dicuri."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Kata laluan diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nKata laluan melindungi peranti jika peranti hilang atau dicuri."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"PIN diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nPIN melindungi telefon jika telefon hilang atau dicuri."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Corak diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nCorak melindungi telefon jika telefon hilang atau dicuri."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Kata laluan diperlukan untuk menyediakan Buka Kunci Cap Jari dan Buka Kunci Wajah.\n\nKata laluan melindungi telefon jika telefon hilang atau dicuri."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Tindakan ini akan memadamkan imej dan model cap jari yang berkaitan dengan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' yang disimpan dalam telefon anda"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Tindakan ini akan memadamkan imej dan model cap jari yang berkaitan dengan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' yang disimpan dalam tablet anda"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ini akan memadamkan imej cap jari dan model yang berkaitan dengan \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' yang disimpan dalam peranti anda"</string>
diff --git a/res-product/values-my/strings.xml b/res-product/values-my/strings.xml
index 21799ca..5a3e4bc 100644
--- a/res-product/values-my/strings.xml
+++ b/res-product/values-my/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံစံ လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံစံက ကာကွယ်ပေးသည်။"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤတက်ဘလက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံစံ လိုအပ်သည်။\n\nဤတက်ဘလက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံစံက ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤတက်ဘလက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤစက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံစံ လိုအပ်သည်။\n\nဤစက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံစံက ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤစက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံစံ လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံစံက ကာကွယ်ပေးသည်။"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤတက်ဘလက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံဖော်ခြင်း လိုအပ်သည်။\n\nဤတက်ဘလက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံဖော်ခြင်းက ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤတက်ဘလက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤစက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံဖော်ခြင်း လိုအပ်သည်။\n\nဤစက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံဖော်ခြင်းက ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤစက်ပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပင်နံပါတ် လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပင်နံပါတ်က ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် ပုံဖော်ခြင်း လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို ပုံဖော်ခြင်းက ကာကွယ်ပေးသည်။"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ နှင့် ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ကို ထည့်သွင်းရန် စကားဝှက် လိုအပ်သည်။\n\nဤဖုန်းပျောက်သွားလျှင် (သို့) ခိုးခံရလျှင် ၎င်းကို စကားဝှက်က ကာကွယ်ပေးသည်။"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"သင့်ဖုန်းတွင်သိုလှောင်ထားသည့် ‘<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>’ နှင့် ဆက်စပ်သည့် လက်ဗွေပုံများနှင့် နမူနာကို ဖျက်ပါမည်"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"သင့်တက်ဘလက်တွင်သိုလှောင်ထားသည့် ‘<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>’ နှင့် ဆက်စပ်သည့် လက်ဗွေပုံများနှင့် နမူနာကို ဖျက်ပါမည်"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"သင့်စက်တွင်သိုလှောင်ထားသည့် \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' နှင့် ဆက်စပ်သည့် လက်ဗွေပုံများနှင့် နမူနာကို ဖျက်ပါမည်"</string>
diff --git a/res-product/values-nb/strings.xml b/res-product/values-nb/strings.xml
index b5a9df0..3da2ea8 100644
--- a/res-product/values-nb/strings.xml
+++ b/res-product/values-nb/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"En PIN-kode kreves for å konfigurere ansiktslås.\n\nEn PIN-kode beskytter telefonen hvis den blir mistet eller stjålet."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Et mønster kreves for å konfigurere ansiktslås.\n\nEt mønster beskytter telefonen hvis den blir mistet eller stjålet."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Et passord kreves for å konfigurere ansiktslås.\n\nEt passord beskytter telefonen hvis den blir mistet eller stjålet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"En PIN-kode kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEn PIN-kode beskytter nettbrettet hvis det blir mistet eller stjålet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Et mønster kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEt mønster beskytter nettbrettet hvis det blir mistet eller stjålet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Et passord kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEt passord beskytter nettbrettet hvis det blir mistet eller stjålet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"En PIN-kode kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEn PIN-kode beskytter enheten hvis den blir mistet eller stjålet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Et mønster kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEt mønster beskytter enheten hvis den blir mistet eller stjålet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Et passord kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEt passord beskytter enheten hvis den blir mistet eller stjålet."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"En PIN-kode kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEn PIN-kode beskytter telefonen hvis den blir mistet eller stjålet."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Et mønster kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEt mønster beskytter telefonen hvis den blir mistet eller stjålet."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Et passord kreves for å konfigurere ansiktslås og opplåsing med fingeravtrykk.\n\nEt passord beskytter telefonen hvis den blir mistet eller stjålet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"En PIN-kode kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har en PIN-kode, er nettbrettet beskyttet hvis du mister det eller det blir stjålet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Et mønster kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har et mønster, er nettbrettet beskyttet hvis du mister det eller det blir stjålet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Et passord kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har et passord, er nettbrettet beskyttet hvis du mister det eller det blir stjålet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"En PIN-kode kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har en PIN-kode, er enheten beskyttet hvis du mister den eller den blir stjålet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Et mønster kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har et mønster, er enheten beskyttet hvis du mister den eller den blir stjålet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Et passord kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har et passord, er enheten beskyttet hvis du mister den eller den blir stjålet."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"En PIN-kode kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har en PIN-kode, er telefonen beskyttet hvis du mister den eller den blir stjålet."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Et mønster kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har et mønster, er telefonen beskyttet hvis du mister den eller den blir stjålet."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Et passord kreves for å konfigurere opplåsing med fingeravtrykk og ansiktslås.\n\nNår du har et passord, er telefonen beskyttet hvis du mister den eller den blir stjålet."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Dette sletter fingeravtrykkbildene og -modellen tilknyttet «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» som er lagret på telefonen"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Dette sletter fingeravtrykkbildene og -modellen tilknyttet «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» som er lagret på nettbrettet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Dette sletter fingeravtrykkbildene og -modellen tilknyttet «<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>» som er lagret på enheten"</string>
diff --git a/res-product/values-ne/strings.xml b/res-product/values-ne/strings.xml
index fa40d6c..5e5b965 100644
--- a/res-product/values-ne/strings.xml
+++ b/res-product/values-ne/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"फेस अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा PIN ले उक्त फोन सुरक्षित राख्छ।"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"फेस अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त फोन सुरक्षित राख्छ।"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"फेस अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त फोन सुरक्षित राख्छ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको ट्याब्लेट हराएको वा चोरी भएको खण्डमा PIN ले उक्त ट्याब्लेट सुरक्षित राख्छ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको ट्याब्लेट हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त ट्याब्लेट सुरक्षित राख्छ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको ट्याब्लेट हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त ट्याब्लेट सुरक्षित राख्छ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको डिभाइस हराएको वा चोरी भएको खण्डमा PIN ले उक्त डिभाइस सुरक्षित राख्छ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको डिभाइस हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त डिभाइस सुरक्षित राख्छ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको डिभाइस हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त डिभाइस सुरक्षित राख्छ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा PIN ले उक्त फोन सुरक्षित राख्छ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त फोन सुरक्षित राख्छ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"फेस अनलक र फिंगरप्रिन्ट अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त फोन सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको ट्याब्लेट हराएको वा चोरी भएको खण्डमा PIN ले उक्त ट्याब्लेट सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको ट्याब्लेट हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त ट्याब्लेट सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको ट्याब्लेट हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त ट्याब्लेट सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको डिभाइस हराएको वा चोरी भएको खण्डमा PIN ले उक्त डिभाइस सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको डिभाइस हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त डिभाइस सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको डिभाइस हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त डिभाइस सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले PIN सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा PIN ले उक्त फोन सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले प्याटर्न सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा प्याटर्नले उक्त फोन सुरक्षित राख्छ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"फिंगरप्रिन्ट अनलक र फेस अनलक सेटअप गर्न तपाईंले पासवर्ड सेटअप गर्नु पर्ने हुन्छ।\n\nतपाईंको फोन हराएको वा चोरी भएको खण्डमा पासवर्डले उक्त फोन सुरक्षित राख्छ।"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"यो फिंगरप्रिन्ट मेटाइयो भने तपाईंको फोनमा भण्डारण गरिएका \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' सँग सम्बन्धित फिंगरप्रिन्टका फोटो र मोडेल मेटाइन्छन्"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"यो फिंगरप्रिन्ट मेटाइयो भने तपाईंको ट्याब्लेटमा भण्डारण गरिएका \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' सँग सम्बन्धित फिंगरप्रिन्टका फोटो र मोडेल मेटाइन्छन्"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"यो फिंगरप्रिन्ट मेटाइयो भने तपाईंको डिभाइसमा भण्डारण गरिएका \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' सँग सम्बन्धित फिंगरप्रिन्टका फोटो र मोडेल मेटाइन्छन्"</string>
diff --git a/res-product/values-nl/strings.xml b/res-product/values-nl/strings.xml
index bdd1ba5..ee1b141 100644
--- a/res-product/values-nl/strings.xml
+++ b/res-product/values-nl/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Je hebt een pincode nodig voor het instellen van Ontgrendelen via gezichtsherkenning.\n\nEen pincode beschermt de telefoon bij verlies of diefstal."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Je hebt een patroon nodig voor het instellen van Ontgrendelen via gezichtsherkenning.\n\nEen patroon beschermt de telefoon bij verlies of diefstal."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen via gezichtsherkenning.\n\nEen wachtwoord beschermt de telefoon bij verlies of diefstal."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Je hebt een pincode nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen pincode beschermt de tablet bij verlies of diefstal."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Je hebt een patroon nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen patroon beschermt de tablet bij verlies of diefstal."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen wachtwoord beschermt de tablet bij verlies of diefstal."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Je hebt een pincode nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen pincode beschermt het apparaat bij verlies of diefstal."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Je hebt een patroon nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen patroon beschermt het apparaat bij verlies of diefstal."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen wachtwoord beschermt het apparaat bij verlies of diefstal."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Je hebt een pincode nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen pincode beschermt de telefoon bij verlies of diefstal."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Je hebt een patroon nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen patroon beschermt de telefoon bij verlies of diefstal."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen via gezichtsherkenning en Ontgrendelen met vingerafdruk.\n\nEen wachtwoord beschermt de telefoon bij verlies of diefstal."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Je hebt een pincode nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen pincode beschermt de tablet bij verlies of diefstal."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Je hebt een patroon nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen patroon beschermt de tablet bij verlies of diefstal."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen wachtwoord beschermt de tablet bij verlies of diefstal."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Je hebt een pincode nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen pincode beschermt het apparaat bij verlies of diefstal."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Je hebt een patroon nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen patroon beschermt het apparaat bij verlies of diefstal."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen wachtwoord beschermt het apparaat bij verlies of diefstal."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Je hebt een pincode nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen pincode beschermt de telefoon bij verlies of diefstal."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Je hebt een patroon nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen patroon beschermt de telefoon bij verlies of diefstal."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Je hebt een wachtwoord nodig voor het instellen van Ontgrendelen met vingerafdruk en Ontgrendelen via gezichtsherkenning.\n\nEen wachtwoord beschermt de telefoon bij verlies of diefstal."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Hiermee verwijder je de afbeeldingen en het model van je vingerafdruk die aan <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> zijn gekoppeld en op je telefoon zijn opgeslagen"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Hiermee verwijder je de afbeeldingen en het model van je vingerafdruk die aan <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> zijn gekoppeld en op je tablet zijn opgeslagen"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Hiermee verwijder je de afbeeldingen en het model van je vingerafdruk die aan <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> zijn gekoppeld en op je apparaat zijn opgeslagen"</string>
diff --git a/res-product/values-or/strings.xml b/res-product/values-or/strings.xml
index 732f99a..3b8fb8a 100644
--- a/res-product/values-or/strings.xml
+++ b/res-product/values-or/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ଫେସ୍ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ PIN ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ଫେସ୍ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାଟର୍ନ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ଫେସ୍ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ PIN ଆବଶ୍ୟକ।\n\nଯଦି ଟାବଲେଟଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାଟର୍ନ ଆବଶ୍ୟକ।\n\nଯଦି ଟାବଲେଟଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଟାବଲେଟଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ PIN ଆବଶ୍ୟକ।\n\nଯଦି ଡିଭାଇସଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାଟର୍ନ ଆବଶ୍ୟକ।\n\nଯଦି ଡିଭାଇସଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଡିଭାଇସଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ PIN ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ଫେସ୍ ଅନଲକ୍ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ଏକ ପାଟର୍ନ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ଫେସ ଅନଲକ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏହି ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଟାବଲେଟଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଟାବଲେଟଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଟାବଲେଟଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଡିଭାଇସଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଡିଭାଇସଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଡିଭାଇସଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ PIN ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାଟର୍ନ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ଏବଂ ଫେସ ଅନଲକ ସେଟ ଅପ କରିବା ପାଇଁ ଏକ ପାସୱାର୍ଡ ଆବଶ୍ୟକ।\n\nଯଦି ଫୋନଟି ହଜିଯାଏ କିମ୍ବା ଚୋରି ହୋଇଯାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ଏହାକୁ ସୁରକ୍ଷିତ ରଖେ।"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ଏହା ଆପଣଙ୍କ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ସହ ସମ୍ବନ୍ଧିତ ଟିପଚିହ୍ନର ଇମେଜ ଏବଂ ମଡେଲଗୁଡ଼ିକୁ ଡିଲିଟ କରେ"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ଏହା ଆପଣଙ୍କ ଟାବଲେଟରେ ଷ୍ଟୋର କରାଯାଇଥିବା \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ସହ ସମ୍ବନ୍ଧିତ ଟିପଚିହ୍ନର ଇମେଜ ଏବଂ ମଡେଲଗୁଡ଼ିକୁ ଡିଲିଟ କରେ"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ଏହା ଆପଣଙ୍କ ଡିଭାଇସରେ ଷ୍ଟୋର କରାଯାଇଥିବା \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ସହ ସମ୍ବନ୍ଧିତ ଟିପଚିହ୍ନର ଇମେଜ ଏବଂ ମଡେଲଗୁଡ଼ିକୁ ଡିଲିଟ କରେ"</string>
diff --git a/res-product/values-pa/strings.xml b/res-product/values-pa/strings.xml
index eb57ca7..546d2e0 100644
--- a/res-product/values-pa/strings.xml
+++ b/res-product/values-pa/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਦੇ ਗੁੰਮ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਦੇ ਗੁੰਮ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਟੈਬਲੈੱਟ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਟੈਬਲੈੱਟ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਟੈਬਲੈੱਟ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਡੀਵਾਈਸ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਡੀਵਾਈਸ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਡੀਵਾਈਸ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਦੇ ਗੁੰਮ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ਫ਼ੇਸ ਅਣਲਾਕ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਟੈਬਲੈੱਟ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਟੈਬਲੈੱਟ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਟੈਬਲੈੱਟ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਡੀਵਾਈਸ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਡੀਵਾਈਸ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਡੀਵਾਈਸ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਿੰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਿੰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪੈਟਰਨ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਦੇ ਗੁੰਮ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪੈਟਰਨ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਲੋੜੀਂਦਾ ਹੈ।\n\nਫ਼ੋਨ ਦੇ ਗੁਆਚਣ ਜਾਂ ਚੋਰੀ ਹੋਣ \'ਤੇ ਪਾਸਵਰਡ ਇਸਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ।"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ਇਹ ਤੁਹਾਡੇ ਫ਼ੋਨ \'ਤੇ ਸਟੋਰ ਕੀਤੇ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ਨਾਲ ਸੰਬੰਧਿਤ ਫਿੰਗਰਪ੍ਰਿੰਟ ਚਿੱਤਰਾਂ ਅਤੇ ਮਾਡਲ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ਇਹ ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ \'ਤੇ ਸਟੋਰ ਕੀਤੇ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ਨਾਲ ਸੰਬੰਧਿਤ ਫਿੰਗਰਪ੍ਰਿੰਟ ਚਿੱਤਰਾਂ ਅਤੇ ਮਾਡਲ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ਇਹ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਸਟੋਰ ਕੀਤੇ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ਨਾਲ ਸੰਬੰਧਿਤ ਫਿੰਗਰਪ੍ਰਿੰਟ ਚਿੱਤਰਾਂ ਅਤੇ ਮਾਡਲ ਨੂੰ ਮਿਟਾ ਦਿੰਦੀ ਹੈ"</string>
diff --git a/res-product/values-pl/strings.xml b/res-product/values-pl/strings.xml
index 198cc31..67be811 100644
--- a/res-product/values-pl/strings.xml
+++ b/res-product/values-pl/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Do skonfigurowania rozpoznawania twarzy wymagany jest kod PIN.\n\nKod PIN ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Do skonfigurowania rozpoznawania twarzy wymagany jest wzór.\n\nWzór ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Do skonfigurowania rozpoznawania twarzy wymagane jest hasło.\n\nHasło ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagany jest kod PIN.\n\nKod PIN ochroni tablet, jeśli zostanie zgubiony lub skradziony."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagany jest wzór.\n\nWzór ochroni tablet, jeśli zostanie zgubiony lub skradziony."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagane jest hasło.\n\nHasło ochroni tablet, jeśli zostanie zgubiony lub skradziony."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagany jest kod PIN.\n\nKod PIN ochroni urządzenie, jeśli zostanie zgubione lub skradzione."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagany jest wzór.\n\nWzór ochroni urządzenie, jeśli zostanie zgubione lub skradzione."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagane jest hasło.\n\nHasło ochroni urządzenie, jeśli zostanie zgubione lub skradzione."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagany jest kod PIN.\n\nKod PIN ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagany jest wzór.\n\nWzór ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Do skonfigurowania rozpoznawania twarzy i odblokowywania odciskiem palca wymagane jest hasło.\n\nHasło ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagany jest kod PIN.\n\nKod PIN ochroni tablet, jeśli zostanie zgubiony lub skradziony."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagany jest wzór.\n\nWzór ochroni tablet, jeśli zostanie zgubiony lub skradziony."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagane jest hasło.\n\nHasło ochroni tablet, jeśli zostanie zgubiony lub skradziony."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagany jest kod PIN.\n\nKod PIN ochroni urządzenie, jeśli zostanie zgubione lub skradzione."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagany jest wzór.\n\nWzór ochroni urządzenie, jeśli zostanie zgubione lub skradzione."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagane jest hasło.\n\nHasło ochroni urządzenie, jeśli zostanie zgubione lub skradzione."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagany jest kod PIN.\n\nKod PIN ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagany jest wzór.\n\nWzór ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Do skonfigurowania odblokowywania odciskiem palca i rozpoznawania twarzy wymagane jest hasło.\n\nHasło ochroni telefon, jeśli zostanie zgubiony lub skradziony."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Ta czynność usuwa zapisane na telefonie obrazy i model odcisku palca powiązane z identyfikatorem „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Ta czynność usuwa zapisane na tablecie obrazy i model odcisku palca powiązane z identyfikatorem „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Ta czynność usuwa zapisane na urządzeniu obrazy i model odcisku palca powiązane z identyfikatorem „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”"</string>
diff --git a/res-product/values-pt-rBR/strings.xml b/res-product/values-pt-rBR/strings.xml
index 6f4c0f3..79b14c4 100644
--- a/res-product/values-pt-rBR/strings.xml
+++ b/res-product/values-pt-rBR/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Você precisa usar um PIN para poder configurar o Desbloqueio facial.\n\nO uso de um PIN protege o smartphone em caso de perda ou roubo."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Você precisa usar um padrão para poder configurar o Desbloqueio facial.\n\nO uso de um padrão protege o smartphone em caso de perda ou roubo."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Você precisa usar uma senha para poder configurar o Desbloqueio facial.\n\nO uso de uma senha protege o smartphone em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Você precisa usar um PIN para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um PIN protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Você precisa usar um padrão para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um padrão protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Você precisa usar uma senha para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de uma senha protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Você precisa usar um PIN para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um PIN protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Você precisa usar um padrão para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um padrão protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Você precisa usar uma senha para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de uma senha protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Você precisa usar um PIN para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um PIN protege o smartphone em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Você precisa usar um padrão para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um padrão protege o smartphone em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Você precisa usar uma senha para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de uma senha protege o smartphone em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Você precisa usar um PIN para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um PIN protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Você precisa usar um padrão para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um padrão protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Você precisa usar uma senha para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de uma senha protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Você precisa usar um PIN para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um PIN protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Você precisa usar um padrão para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um padrão protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Você precisa usar uma senha para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de uma senha protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Você precisa usar um PIN para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um PIN protege o smartphone em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Você precisa usar um padrão para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um padrão protege o smartphone em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Você precisa usar uma senha para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de uma senha protege o smartphone em caso de perda ou roubo."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Essa ação exclui as imagens e o modelo de impressão digital associados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no seu smartphone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Essa ação exclui as imagens e o modelo de impressão digital associados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no seu tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Essa ação exclui as imagens e o modelo de impressão digital associados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no seu dispositivo"</string>
diff --git a/res-product/values-pt-rPT/strings.xml b/res-product/values-pt-rPT/strings.xml
index 4c9f391..75795e0 100644
--- a/res-product/values-pt-rPT/strings.xml
+++ b/res-product/values-pt-rPT/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"É necessário um PIN para configurar o Desbloqueio facial.\n\nUm PIN protege o telemóvel em caso de perda ou roubo."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"É necessário um padrão para configurar o Desbloqueio facial.\n\nUm padrão protege o telemóvel em caso de perda ou roubo."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"É necessária uma palavra-passe para configurar o Desbloqueio facial.\n\nUma palavra-passe protege o telemóvel em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"É necessário um PIN para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm PIN protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"É necessário um padrão para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm padrão protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"É necessária uma palavra-passe para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUma palavra-passe protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"É necessário um PIN para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm PIN protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"É necessário um padrão para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm padrão protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"É necessária uma palavra-passe para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUma palavra-passe protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"É necessário um PIN para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm PIN protege o telemóvel em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"É necessário um padrão para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm padrão protege o telemóvel em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"É necessária uma palavra-passe para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUma palavra-passe protege o telemóvel em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"É necessário um PIN para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm PIN protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"É necessário um padrão para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm padrão protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"É necessária uma palavra-passe para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUma palavra-passe protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"É necessário um PIN para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm PIN protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"É necessário um padrão para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm padrão protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"É necessária uma palavra-passe para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUma palavra-passe protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"É necessário um PIN para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm PIN protege o telemóvel em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"É necessário um padrão para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUm padrão protege o telemóvel em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"É necessária uma palavra-passe para configurar o Desbloqueio facial e o Desbloqueio por impressão digital.\n\nUma palavra-passe protege o telemóvel em caso de perda ou roubo."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Esta ação elimina as imagens da impressão digital e o modelo associado ao \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no telemóvel"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Esta ação elimina as imagens da impressão digital e o modelo associado ao \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Esta ação elimina as imagens da impressão digital e o modelo associado ao \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no dispositivo"</string>
diff --git a/res-product/values-pt/strings.xml b/res-product/values-pt/strings.xml
index 6f4c0f3..79b14c4 100644
--- a/res-product/values-pt/strings.xml
+++ b/res-product/values-pt/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Você precisa usar um PIN para poder configurar o Desbloqueio facial.\n\nO uso de um PIN protege o smartphone em caso de perda ou roubo."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Você precisa usar um padrão para poder configurar o Desbloqueio facial.\n\nO uso de um padrão protege o smartphone em caso de perda ou roubo."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Você precisa usar uma senha para poder configurar o Desbloqueio facial.\n\nO uso de uma senha protege o smartphone em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Você precisa usar um PIN para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um PIN protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Você precisa usar um padrão para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um padrão protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Você precisa usar uma senha para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de uma senha protege o tablet em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Você precisa usar um PIN para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um PIN protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Você precisa usar um padrão para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um padrão protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Você precisa usar uma senha para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de uma senha protege o dispositivo em caso de perda ou roubo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Você precisa usar um PIN para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um PIN protege o smartphone em caso de perda ou roubo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Você precisa usar um padrão para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de um padrão protege o smartphone em caso de perda ou roubo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Você precisa usar uma senha para poder configurar o Desbloqueio facial e por impressão digital.\n\nO uso de uma senha protege o smartphone em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Você precisa usar um PIN para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um PIN protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Você precisa usar um padrão para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um padrão protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Você precisa usar uma senha para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de uma senha protege o tablet em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Você precisa usar um PIN para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um PIN protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Você precisa usar um padrão para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um padrão protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Você precisa usar uma senha para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de uma senha protege o dispositivo em caso de perda ou roubo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Você precisa usar um PIN para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um PIN protege o smartphone em caso de perda ou roubo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Você precisa usar um padrão para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de um padrão protege o smartphone em caso de perda ou roubo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Você precisa usar uma senha para poder configurar o \"Desbloqueio por impressão digital\" e o \"Desbloqueio facial\".\n\nO uso de uma senha protege o smartphone em caso de perda ou roubo."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Essa ação exclui as imagens e o modelo de impressão digital associados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no seu smartphone"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Essa ação exclui as imagens e o modelo de impressão digital associados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no seu tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Essa ação exclui as imagens e o modelo de impressão digital associados a \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" que estão armazenados no seu dispositivo"</string>
diff --git a/res-product/values-ro/strings.xml b/res-product/values-ro/strings.xml
index 0b5d920..597f058 100644
--- a/res-product/values-ro/strings.xml
+++ b/res-product/values-ro/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Pentru a configura Deblocarea facială, este necesar un PIN.\n\nPIN-ul îți protejează telefonul dacă este pierdut sau furat."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Pentru a configura Deblocarea facială, este necesar un model.\n\nModelul îți protejează telefonul dacă este pierdut sau furat."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Pentru a configura Deblocarea facială, este necesară o parolă.\n\nParola îți protejează telefonul dacă este pierdut sau furat."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesar un PIN.\n\nPIN-ul îți protejează tableta dacă este pierdută sau furată."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesar un model.\n\nModelul îți protejează tableta dacă este pierdută sau furată."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesară o parolă.\n\nParola îți protejează tableta dacă este pierdută sau furată."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesar un PIN.\n\nPIN-ul îți protejează dispozitivul dacă este pierdut sau furat."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesar un model.\n\nModelul îți protejează dispozitivul dacă este pierdut sau furat."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesară o parolă.\n\nParola îți protejează dispozitivul dacă este pierdut sau furat."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesar un PIN.\n\nPIN-ul îți protejează telefonul dacă este pierdut sau furat."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesar un model.\n\nModelul îți protejează telefonul dacă este pierdut sau furat."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Pentru a configura Deblocarea facială și Deblocarea cu amprenta, este necesară o parolă.\n\nParola îți protejează telefonul dacă este pierdut sau furat."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesar un PIN.\n\nPIN-ul îți protejează tableta dacă este pierdută sau furată."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesar un model.\n\nModelul îți protejează tableta dacă este pierdută sau furată."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesară o parolă.\n\nParola îți protejează tableta dacă este pierdută sau furată."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesar un PIN.\n\nPIN-ul îți protejează dispozitivul dacă este pierdut sau furat."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesar un model.\n\nModelul îți protejează dispozitivul dacă este pierdut sau furat."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesară o parolă.\n\nParola îți protejează dispozitivul dacă este pierdut sau furat."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesar un PIN.\n\nPIN-ul îți protejează telefonul dacă este pierdut sau furat."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesar un model.\n\nModelul îți protejează telefonul dacă este pierdut sau furat."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Pentru a configura Deblocarea cu amprenta și Deblocarea facială, este necesară o parolă.\n\nParola îți protejează telefonul dacă este pierdut sau furat."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Astfel, imaginile amprentelor și modelul de amprentă asociate cu <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> stocate pe telefon vor fi șterse"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Astfel, imaginile amprentelor și modelul de amprentă asociate cu <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> stocate pe tabletă vor fi șterse"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Astfel, imaginile amprentelor și modelul de amprentă asociate cu <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> stocate pe acest dispozitiv vor fi șterse"</string>
diff --git a/res-product/values-ru/strings.xml b/res-product/values-ru/strings.xml
index f6d3ebb..cc7f255 100644
--- a/res-product/values-ru/strings.xml
+++ b/res-product/values-ru/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Чтобы настроить фейсконтроль, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи телефона."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Чтобы настроить фейсконтроль, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи телефона."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Чтобы настроить фейсконтроль, нужен пароль.\n\nОн защитит данные в случае потери или кражи телефона."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи планшета."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи планшета."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен пароль.\n\nОн защитит данные в случае потери или кражи планшета."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи устройства."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи устройства."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен пароль.\n\nОн защитит данные в случае потери или кражи устройства."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи телефона."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи телефона."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен пароль.\n\nОн защитит данные в случае потери или кражи телефона."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи планшета."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи планшета."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен пароль.\n\nОн защитит данные в случае потери или кражи планшета."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи устройства."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи устройства."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен пароль.\n\nОн защитит данные в случае потери или кражи устройства."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен PIN-код.\n\nОн защитит данные в случае потери или кражи телефона."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен графический ключ.\n\nОн защитит данные в случае потери или кражи телефона."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Чтобы настроить фейсконтроль и разблокировку по отпечатку пальца, нужен пароль.\n\nОн защитит данные в случае потери или кражи телефона."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Изображения и модель отпечатка \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" будут удалены с телефона."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Изображения и модель отпечатка \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" будут удалены с планшета"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Изображения и модель отпечатка \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" будут удалены с устройства"</string>
diff --git a/res-product/values-si/strings.xml b/res-product/values-si/strings.xml
index e766758..97177f1 100644
--- a/res-product/values-si/strings.xml
+++ b/res-product/values-si/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"මුහුණෙන් අගුළු හැරීම පිහිටුවීමට PIN එකක් අවශ්යයි.\n\nPIN එකක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"මුහුණෙන් අගුළු හැරීම පිහිටුවීමට රටාවක් අවශ්යයි.\n\nරටාවක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට PIN එකක් අවශ්යයි.\n\nPIN එකක් ටැබ්ලටය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට රටාවක් අවශ්යයි.\n\nරටාවක් ටැබ්ලටය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් ටැබ්ලටය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට PIN එකක් අවශ්යයි.\n\nPIN එකක් උපාංගය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට රටාවක් අවශ්යයි.\n\nරටාවක් උපාංගය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් උපාංගය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට PIN එකක් අවශ්යයි.\n\nPIN එකක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට රටාවක් අවශ්යයි.\n\nරටාවක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"මුහුණෙන් අගුළු හැරීම සහ ඇඟිලි සලකුණු අගුලු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කළහොත් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nPIN එකක් ටැබ්ලටය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nරටාවක් ටැබ්ලටය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් ටැබ්ලටය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nPIN එකක් උපාංගය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nරටාවක් උපාංගය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් උපාංගය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nPIN එකක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nරටාවක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ඇඟිලි සලකුණු අගුළු හැරීම සහ මුහුණෙන් අගුළු හැරීම පිහිටුවීමට මුරපදයක් අවශ්යයි.\n\nමුරපදයක් දුරකථනය නැති වුවහොත් හෝ සොරකම් කර ඇත්නම් එය ආරක්ෂා කරයි."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"මෙය ඔබේ දුරකථනයෙහි ගබඩා වී ඇති ඇඟිලි සලකුණු රූප සහ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' සමග ආශ්රිත ආකෘතිය මකයි"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"මෙය ඔබේ ටැබ්ලටයෙහි ගබඩා වී ඇති ඇඟිලි සලකුණු රූප සහ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' සමග ආශ්රිත ආකෘතිය මකයි"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"මෙය ඔබගේ උපාංගයෙහි ගබඩා වී ඇති ඇඟිලි සලකුණු රූප සහ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' හා ආශ්රිත මාදිලි මකයි"</string>
diff --git a/res-product/values-sk/strings.xml b/res-product/values-sk/strings.xml
index 8cf56de..2ccac36 100644
--- a/res-product/values-sk/strings.xml
+++ b/res-product/values-sk/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Na nastavenie odomknutia tvárou sa vyžaduje PIN.\n\nPIN chráni telefón v prípade jeho straty alebo odcudzenia."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Na nastavenie odomknutia tvárou sa vyžaduje vzor.\n\nVzor chráni telefón v prípade jeho straty alebo odcudzenia."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Na nastavenie odomknutia tvárou sa vyžaduje heslo.\n\nHeslo chráni telefón v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje PIN.\n\nPIN chráni tablet v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje vzor.\n\nVzor chráni tablet v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje heslo.\n\nHeslo chráni tablet v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje PIN.\n\nPIN chráni zariadenie v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje vzor.\n\nVzor chráni zariadenie v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje heslo.\n\nHeslo chráni zariadenie v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje PIN.\n\nPIN chráni telefón v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje vzor.\n\nVzor chráni telefón v prípade jeho straty alebo odcudzenia."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Na nastavenie odomknutia tvárou a odtlačkom prsta sa vyžaduje heslo.\n\nHeslo chráni telefón v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje PIN.\n\nPIN chráni tablet v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje vzor.\n\nVzor chráni tablet v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje heslo.\n\nHeslo chráni tablet v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje PIN.\n\nPIN chráni zariadenie v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje vzor.\n\nVzor chráni zariadenie v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Na nastavenie odomknutia odtlačkom prsta a tvárou sa vyžaduje heslo.\n\nHeslo chráni zariadenie v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje PIN.\n\nPIN chráni telefón v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje vzor.\n\nVzor chráni telefón v prípade jeho straty alebo odcudzenia."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Na nastavenie odomknutia odtlačkom prsta alebo tvárou sa vyžaduje heslo.\n\nHeslo chráni telefón v prípade jeho straty alebo odcudzenia."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Týmto odstránite snímky a model odtlačku prsta „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“, ktoré sú uložené vo vašom telefóne."</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Týmto odstránite snímky a model odtlačku prsta „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“, ktoré sú uložené vo vašom tablete"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Týmto odstránite snímky a model odtlačku prsta „<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>“, ktoré sú uložené vo vašom zariadení"</string>
diff --git a/res-product/values-sl/strings.xml b/res-product/values-sl/strings.xml
index 248e278..e51fa9b 100644
--- a/res-product/values-sl/strings.xml
+++ b/res-product/values-sl/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Za nastavitev odklepanja z obrazom je potrebna koda PIN.\n\nKoda PIN ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Za nastavitev odklepanja z obrazom je potreben vzorec.\n\nVzorec ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Za nastavitev odklepanja z obrazom je potrebno geslo.\n\nGeslo ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potrebna koda PIN.\n\nKoda PIN ščiti tablični računalnik, če ga izgubite ali vam ga ukradejo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potreben vzorec.\n\nVzorec ščiti tablični računalnik, če ga izgubite ali vam ga ukradejo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potrebno geslo.\n\nGeslo ščiti tablični računalnik, če ga izgubite ali vam ga ukradejo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potrebna koda PIN.\n\nKoda PIN ščiti napravo, če jo izgubite ali vam jo ukradejo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potreben vzorec.\n\nVzorec ščiti napravo, če jo izgubite ali vam jo ukradejo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potrebno geslo.\n\nGeslo ščiti napravo, če jo izgubite ali vam jo ukradejo."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potrebna koda PIN.\n\nKoda PIN ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potreben vzorec.\n\nVzorec ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Za nastavitev odklepanja z obrazom in prstnim odtisom je potrebno geslo.\n\nGeslo ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potrebna koda PIN.\n\nKoda PIN ščiti tablični računalnik, če ga izgubite ali vam ga ukradejo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potreben vzorec.\n\nVzorec ščiti tablični računalnik, če ga izgubite ali vam ga ukradejo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potrebno geslo.\n\nGeslo ščiti tablični računalnik, če ga izgubite ali vam ga ukradejo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potrebna koda PIN.\n\nKoda PIN ščiti napravo, če jo izgubite ali vam jo ukradejo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potreben vzorec.\n\nVzorec ščiti napravo, če jo izgubite ali vam jo ukradejo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potrebno geslo.\n\nGeslo ščiti napravo, če jo izgubite ali vam jo ukradejo."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potrebna koda PIN.\n\nKoda PIN ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potreben vzorec.\n\nVzorec ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Za nastavitev odklepanja s prstnim odtisom in odklepanja z obrazom je potrebno geslo.\n\nGeslo ščiti telefon, če ga izgubite ali vam ga ukradejo."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"S tem boste izbrisali v telefonu shranjene slike in model prstnega odtisa, povezane z odtisom »<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>«"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"S tem boste izbrisali v tabličnem računalniku shranjene slike in model prstnega odtisa, povezane z odtisom »<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>«"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"S tem boste izbrisali v napravi shranjene slike in model prstnega odtisa, povezan z odtisom »<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>«"</string>
diff --git a/res-product/values-sq/strings.xml b/res-product/values-sq/strings.xml
index 216751f..96bfd3f 100644
--- a/res-product/values-sq/strings.xml
+++ b/res-product/values-sq/strings.xml
@@ -179,15 +179,24 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Kërkohet një kod PIN për të konfiguruar \"Shkyçjen me fytyrë\".\n\nKodi PIN e mbron telefonin nëse të humbet apo ta vjedhin."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Kërkohet një motiv për të konfiguruar \"Shkyçjen me fytyrë\".\n\nMotivi e mbron telefonin nëse të humbet apo ta vjedhin."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Kërkohet një fjalëkalim për të konfiguruar \"Shkyçjen me fytyrë\".\n\nFjalëkalimi e mbron telefonin nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Kërkohet një kod PIN për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nKodi PIN e mbron tabletin nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Kërkohet një motiv për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nMotivi e mbron tabletin nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Kërkohet një fjalëkalim për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nFjalëkalimi e mbron tabletin nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Kërkohet një kod PIN për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nKodi PIN e mbron pajisjen nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Kërkohet një motiv për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nMotivi e mbron pajisjen nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Kërkohet një fjalëkalim për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nFjalëkalimi e mbron pajisjen nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Kërkohet një kod PIN për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nKodi PIN e mbron telefonin nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Kërkohet një motiv për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nMotivi e mbron telefonin nëse të humbet apo ta vjedhin."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Kërkohet një fjalëkalim për të konfiguruar \"Shkyçjen me fytyrë\" dhe \"Shkyçjen me gjurmën e gishtit\".\n\nFjalëkalimi e mbron telefonin nëse të humbet apo ta vjedhin."</string>
+ <!-- no translation found for lock_screen_pin_skip_biometrics_message (6016574209955764097) -->
+ <skip />
+ <!-- no translation found for lock_screen_pattern_skip_biometrics_message (5193008948766756870) -->
+ <skip />
+ <!-- no translation found for lock_screen_password_skip_biometrics_message (2157871617774498976) -->
+ <skip />
+ <!-- no translation found for lock_screen_pin_skip_biometrics_message (3023595865822720071) -->
+ <skip />
+ <!-- no translation found for lock_screen_pattern_skip_biometrics_message (3039110875534893916) -->
+ <skip />
+ <!-- no translation found for lock_screen_password_skip_biometrics_message (6506194961404887073) -->
+ <skip />
+ <!-- no translation found for lock_screen_pin_skip_biometrics_message (6614355211073480369) -->
+ <skip />
+ <!-- no translation found for lock_screen_pattern_skip_biometrics_message (969489650005656159) -->
+ <skip />
+ <!-- no translation found for lock_screen_password_skip_biometrics_message (2934343185175325368) -->
+ <skip />
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Kjo fshin imazhet e gjurmës së gishtit dhe modelin e lidhur me \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" që ruhen në telefonin tënd"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Kjo fshin imazhet e gjurmës së gishtit dhe modelin e lidhur me \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" që ruhen në tabletin tënd"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Kjo fshin imazhet e gjurmës së gishtit dhe modelin e lidhur me \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" që ruhen në pajisjen tënde"</string>
diff --git a/res-product/values-sr/strings.xml b/res-product/values-sr/strings.xml
index ffd40f1..5b78557 100644
--- a/res-product/values-sr/strings.xml
+++ b/res-product/values-sr/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"За подешавање откључавања лицем неопходан је PIN.\n\nPIN штити телефон ако га изгубите или га неко украде."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"За подешавање откључавања лицем неопходан је шаблон.\n\nШаблон штити телефон ако га изгубите или га неко украде."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"За подешавање откључавања лицем неопходна је лозинка.\n\nЛозинка штити телефон ако га изгубите или га неко украде."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"За подешавање откључавања лицем и отиском прста неопходан је PIN.\n\nPIN штити таблет ако га изгубите или га неко украде."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"За подешавање откључавања лицем и отиском прста неопходан је шаблон.\n\nШаблон штити таблет ако га изгубите или га неко украде."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"За подешавање откључавања лицем и отиском прста неопходна је лозинка.\n\nЛозинка штити таблет ако га изгубите или га неко украде."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"За подешавање откључавања лицем и отиском прста неопходан је PIN.\n\nPIN штити уређај ако га изгубите или га неко украде."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"За подешавање откључавања лицем и отиском прста неопходан је шаблон.\n\nШаблон штити уређај ако га изгубите или га неко украде."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"За подешавање откључавања лицем и отиском прста неопходна је лозинка.\n\nЛозинка штити уређај ако га изгубите или га неко украде."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"За подешавање откључавања лицем и отиском прста неопходан је PIN.\n\nPIN штити телефон ако га изгубите или га неко украде."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"За подешавање откључавања лицем и отиском прста неопходан је шаблон.\n\nШаблон штити телефон ако га изгубите или га неко украде."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"За подешавање откључавања лицем и отиском прста неопходна је лозинка.\n\nЛозинка штити телефон ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"За подешавање откључавања отиском прста и откључавања лицем неопходан је PIN.\n\nPIN штити таблет ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"За подешавање откључавања отиском прста и откључавања лицем неопходан је шаблон.\n\nШаблон штити таблет ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"За подешавање откључавања отиском прста и откључавања лицем неопходна је лозинка.\n\nЛозинка штити таблет ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"За подешавање откључавања отиском прста и откључавања лицем неопходан је PIN.\n\nPIN штити уређај ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"За подешавање откључавања отиском прста и откључавања лицем неопходан је шаблон.\n\nШаблон штити уређај ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"За подешавање откључавања отиском прста и откључавања лицем неопходна је лозинка.\n\nЛозинка штити уређај ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"За подешавање откључавања отиском прста и откључавања лицем неопходан је PIN.\n\nPIN штити телефон ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"За подешавање откључавања отиском прста и откључавања лицем неопходан је шаблон.\n\nШаблон штити телефон ако га изгубите или га неко украде."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"За подешавање откључавања отиском прста и откључавања лицем неопходна је лозинка.\n\nЛозинка штити телефон ако га изгубите или га неко украде."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Овим се бришу слике и модел отиска прста у вези са отиском <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> који су сачувани на телефону"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Овим се бришу слике и модел отиска прста у вези са отиском <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> који су сачувани на таблету"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Овим се бришу слике и модел отиска прста у вези са отиском <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> који су сачувани на уређају"</string>
diff --git a/res-product/values-sv/strings.xml b/res-product/values-sv/strings.xml
index e112315..fb0f3ef 100644
--- a/res-product/values-sv/strings.xml
+++ b/res-product/values-sv/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Det krävs en pinkod för att konfigurera ansiktslås.\n\nEn pinkod skyddar telefonen om den kommer bort eller blir stulen."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Det krävs ett mönster för att konfigurera ansiktslås.\n\nEtt mönster skyddar telefonen om den kommer bort eller blir stulen."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Det krävs ett lösenord för att konfigurera ansiktslås.\n\nEtt lösenord skyddar telefonen om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Det krävs en pinkod för att konfigurera ansiktslås och fingeravtryckslås.\n\nEn pinkod skyddar surfplattan om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Det krävs ett mönster för att konfigurera ansiktslås och fingeravtryckslås.\n\nEtt mönster skyddar surfplattan om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Det krävs ett lösenord för att konfigurera ansiktslås och fingeravtryckslås.\n\nEtt lösenord skyddar surfplattan om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Det krävs en pinkod för att konfigurera ansiktslås och fingeravtryckslås.\n\nEn pinkod skyddar enheten om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Det krävs ett mönster för att konfigurera ansiktslås och fingeravtryckslås.\n\nEtt mönster skyddar enheten om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Det krävs ett lösenord för att konfigurera ansiktslås och fingeravtryckslås.\n\nEtt lösenord skyddar enheten om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Det krävs en pinkod för att konfigurera ansiktslås och fingeravtryckslås.\n\nEn pinkod skyddar telefonen om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Det krävs ett mönster för att konfigurera ansiktslås och fingeravtryckslås.\n\nEtt mönster skyddar telefonen om den kommer bort eller blir stulen."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Det krävs ett lösenord för att konfigurera ansiktslås och fingeravtryckslås.\n\nEtt lösenord skyddar telefonen om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Det krävs en pinkod för att ställa in fingeravtryckslås och ansiktslås.\n\nEn pinkod skyddar surfplattan om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Det krävs ett mönster för att ställa in fingeravtryckslås och ansiktslås.\n\nEtt mönster skyddar surfplattan om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Det krävs ett lösenord för att ställa in fingeravtryckslås och ansiktslås.\n\nEtt lösenord skyddar surfplattan om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Det krävs en pinkod för att ställa in fingeravtryckslås och ansiktslås.\n\nEn pinkod skyddar enheten om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Det krävs ett mönster för att ställa in fingeravtryckslås och ansiktslås.\n\nEtt mönster skyddar enheten om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Det krävs ett lösenord för att ställa in fingeravtryckslås och ansiktslås.\n\nEtt lösenord skyddar enheten om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Det krävs en pinkod för att ställa in fingeravtryckslås och ansiktslås.\n\nEn pinkod skyddar telefonen om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Det krävs ett mönster för att ställa in fingeravtryckslås och ansiktslås.\n\nEtt mönster skyddar telefonen om den kommer bort eller blir stulen."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Det krävs ett lösenord för att ställa in fingeravtryckslås och ansiktslås.\n\nEtt lösenord skyddar telefonen om den kommer bort eller blir stulen."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Om du gör detta raderas fingeravtrycksbilderna och fingeravtrycksmodellen som har kopplats till <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> och lagras på telefonen"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Om du gör detta raderas fingeravtrycksbilderna och fingeravtrycksmodellen som har kopplats till <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> och lagras på surfplattan"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Om du gör detta raderas fingeravtrycksbilderna och fingeravtrycksmodellen som har kopplats till <xliff:g id="FINGERPRINT_ID">%1$s</xliff:g> och lagras på enheten"</string>
diff --git a/res-product/values-sw/strings.xml b/res-product/values-sw/strings.xml
index dbf833e..ab5d352 100644
--- a/res-product/values-sw/strings.xml
+++ b/res-product/values-sw/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"PIN inahitajika ili kuweka mipangilio ya Kufungua kwa uso.\n\nPIN hulinda simu ikipotea au ikiibwa."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Mchoro unahitajika ili kuweka mipangilio ya Kufungua kwa uso.\n\nMchoro hulinda simu ikipotea au ikiibwa."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Nenosiri linahitajika ili kuweka mipangilio ya Kufungua kwa uso.\n\nNenosiri hulinda simu ikipotea au ikiibwa."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"PIN inahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nPIN hulinda kompyuta kibao ikipotea au ikiibwa."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Mchoro unahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nMchoro hulinda kompyuta kibao ikipotea au ikiibwa."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Nenosiri linahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nNenosiri hulinda kompyuta kibao ikipotea au ikiibwa."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"PIN inahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nPIN hulinda kifaa kikipotea au kikiibwa."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Mchoro unahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nMchoro hulinda kifaa kikipotea au kikiibwa."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Nenosiri linahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nNenosiri hulinda kifaa kikipotea au kikiibwa."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"PIN inahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nPIN hulinda simu ikipotea au ikiibwa."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Mchoro unahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nMchoro hulinda simu ikipotea au ikiibwa."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Nenosiri linahitajika ili kuweka mipangilio ya Kufungua kwa uso na Kufungua kwa alama ya kidole.\n\nNenosiri hulinda simu ikipotea au ikiibwa."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"PIN inatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nPIN hulinda kishikwambi kikipotea au kikiibwa."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Mchoro unatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nMchoro hulinda kishikwambi kikipotea au kikiibwa."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Nenosiri linatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nNenosiri hulinda kishikwambi kikipotea au kikiibwa."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"PIN inatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nPIN hulinda kifaa kikipotea au kikiibwa."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Mchoro unatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nMchoro hulinda kifaa kikipotea au kikiibwa."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Nenosiri linatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nNenosiri hulinda kifaa kikipotea au kikiibwa."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"PIN inatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nPIN hulinda simu ikipotea au ikiibwa."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Mchoro unatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nMchoro hulinda simu ikipotea au ikiibwa."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Nenosiri linatakikana ili kuweka mipangilio ya Kufungua kwa Alama ya Kidole na Kufungua kwa Uso.\n\nNenosiri hulinda simu ikipotea au ikiibwa."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Hatua hii hufuta miundo na picha za alama ya kidole zinazohusiana na \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' zilizohifadhiwa kwenye simu yako"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Hatua hii hufuta miundo na picha za alama za kidole zinazohusiana na \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' zilizohifadhiwa kwenye kishikwambi chako"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Hatua hii hufuta miundo na picha za alama za kidole zinazohusiana na \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' zilizohifadhiwa kwenye kifaa chako"</string>
diff --git a/res-product/values-ta/strings.xml b/res-product/values-ta/strings.xml
index 0f10934..33dd0f8 100644
--- a/res-product/values-ta/strings.xml
+++ b/res-product/values-ta/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"முகம் காட்டித் திறத்தல் அம்சத்தை அமைக்க \'பின்\' தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவை \'பின்\' பாதுகாக்கும்."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"முகம் காட்டித் திறத்தல் அம்சத்தை அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"முகம் காட்டித் திறத்தல் அம்சத்தை அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க \'பின்\' தேவை.\n\nஉங்கள் டேப்லெட் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவை \'பின்\' பாதுகாக்கும்."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் டேப்லெட் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் டேப்லெட் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க \'பின்\' தேவை.\n\nஉங்கள் சாதனம் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவை \'பின்\' பாதுகாக்கும்."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் சாதனம் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் சாதனம் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க \'பின்\' தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவை \'பின்\' பாதுகாக்கும்."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"முகம் காட்டித் திறத்தல் அம்சத்தையும் கைரேகை அன்லாக் அம்சத்தையும் அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க பின் (PIN) தேவை.\n\nஉங்கள் டேப்லெட் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பின் (PIN) பாதுகாக்கும்."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் டேப்லெட் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் டேப்லெட் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க பின் (PIN) தேவை.\n\nஉங்கள் சாதனம் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பின் (PIN) பாதுகாக்கும்."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் சாதனம் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் சாதனம் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க பின் (PIN) தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பின் (PIN) பாதுகாக்கும்."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க பேட்டர்ன் தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைப் பேட்டர்ன் பாதுகாக்கும்."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"கைரேகை அன்லாக் அம்சத்தையும் முகம் காட்டித் திறத்தல் அம்சத்தையும் அமைக்க கடவுச்சொல் தேவை.\n\nஉங்கள் மொபைல் தொலைந்துபோனாலோ திருடுபோனாலோ அதிலுள்ள தரவைக் கடவுச்சொல் பாதுகாக்கும்."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"உங்கள் மொபைலில் சேமிக்கப்பட்டுள்ள, \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' உடன் தொடர்புடைய கைரேகைப் படங்களையும் பதிவையும் இது நீக்கும்"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"உங்கள் டேப்லெட்டில் சேமிக்கப்பட்டுள்ள, \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' உடன் தொடர்புடைய கைரேகைப் படங்களையும் பதிவுவையும் இது நீக்கும்"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"இந்தச் சாதனத்தில் சேமித்து வைக்கப்பட்டிருக்கும் \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' உடன் தொடர்புடைய கைரேகைப் படங்களையும் பதிவுகளையும் இது நீக்கிவிடும்"</string>
diff --git a/res-product/values-te/strings.xml b/res-product/values-te/strings.xml
index cb66d2e..3486980 100644
--- a/res-product/values-te/strings.xml
+++ b/res-product/values-te/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ఫేస్ అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nఫోన్ పోయినా లేదా దొంగిలించబడినా దాన్ని PIN రక్షిస్తుంది."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ఫేస్ అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nఫోన్ పోయినా లేదా దొంగిలించబడినా దాన్ని ఆకృతి రక్షిస్తుంది."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ఫేస్ అన్లాక్ను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nఫోన్ పోయినా లేదా దొంగిలించబడినా దాన్ని పాస్వర్డ్ రక్షిస్తుంది."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nటాబ్లెట్ పోయినా లేదా దొంగిలించబడినా దాన్ని PIN రక్షిస్తుంది."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nటాబ్లెట్ పోయినా లేదా దొంగిలించబడినా దాన్ని ఆకృతి రక్షిస్తుంది."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nటాబ్లెట్ పోయినా లేదా దొంగిలించబడినా దాన్ని పాస్వర్డ్ రక్షిస్తుంది."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nపరికరం పోయినా లేదా దొంగిలించబడినా దాన్ని PIN రక్షిస్తుంది."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nపరికరం పోయినా లేదా దొంగిలించబడినా దాన్ని ఆకృతి రక్షిస్తుంది."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్లను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nపరికరం పోయినా లేదా దొంగిలించబడినా, పాస్వర్డ్ దాన్ని రక్షిస్తుంది."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nఫోన్ పోయినా లేదా దొంగిలించబడినా దాన్ని PIN రక్షిస్తుంది."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nఫోన్ పోయినా లేదా దొంగిలించబడినా దాన్ని ఆకృతి రక్షిస్తుంది."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ఫేస్ అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nఫోన్ పోయినా లేదా దొంగిలించబడినా దాన్ని పాస్వర్డ్ రక్షిస్తుంది."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nటాబ్లెట్ను పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, PIN దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nటాబ్లెట్ను పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, ఆకృతి దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"వేలిముద్ర అన్లాక్, వేలిముద్ర అన్లాక్ను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nటాబ్లెట్ను పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, పాస్వర్డ్ దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nపరికరాన్ని పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, PIN దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nపరికరాన్ని పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, ఆకృతి దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nపరికరాన్ని పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, పాస్వర్డ్ దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి PIN అవసరం.\n\nఫోన్ను పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, PIN దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి ఆకృతి అవసరం.\n\nఫోన్ను పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, ఆకృతి దానిని రక్షిస్తుంది."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"వేలిముద్ర అన్లాక్, ఫేస్ అన్లాక్ను సెటప్ చేయడానికి పాస్వర్డ్ అవసరం.\n\nఫోన్ను పోగొట్టుకున్నా లేదా ఎవరైనా దానిని దొంగిలించినా, పాస్వర్డ్ దానిని రక్షిస్తుంది."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"ఇది మీ ఫోన్లో స్టోర్ చేయబడిన \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'తో అనుబంధించబడిన వేలిముద్ర ఇమేజ్లను, మోడల్ను తొలగిస్తుంది"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"ఇది మీ టాబ్లెట్లో స్టోర్ చేయబడిన \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'తో అనుబంధించబడిన వేలిముద్ర ఇమేజ్లను, మోడల్ను తొలగిస్తుంది"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"ఇది మీ పరికరంలో స్టోర్ చేయబడిన \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\'తో అనుబంధించబడిన వేలిముద్ర ఇమేజ్లను, మోడల్ను తొలగిస్తుంది"</string>
diff --git a/res-product/values-th/strings.xml b/res-product/values-th/strings.xml
index 0655b5d..7578091 100644
--- a/res-product/values-th/strings.xml
+++ b/res-product/values-th/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยใบหน้า\n\nPIN จะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยใบหน้า\n\nรูปแบบจะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยใบหน้า\n\nรหัสผ่านจะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nPIN จะช่วยปกป้องแท็บเล็ตในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nรูปแบบจะช่วยปกป้องแท็บเล็ตในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nรหัสผ่านจะช่วยปกป้องแท็บเล็ตในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nPIN จะช่วยปกป้องอุปกรณ์ในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nรูปแบบจะช่วยปกป้องอุปกรณ์ในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nรหัสผ่านจะช่วยปกป้องอุปกรณ์ในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nPIN จะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nรูปแบบจะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยใบหน้าและลายนิ้วมือ\n\nรหัสผ่านจะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nPIN จะช่วยปกป้องแท็บเล็ตในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nรูปแบบจะช่วยปกป้องแท็บเล็ตในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nรหัสผ่านจะช่วยปกป้องแท็บเล็ตในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nPIN จะช่วยปกป้องอุปกรณ์ในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nรูปแบบจะช่วยปกป้องอุปกรณ์ในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nรหัสผ่านจะช่วยปกป้องอุปกรณ์ในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"ต้องมี PIN เพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nPIN จะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"ต้องมีรูปแบบเพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nรูปแบบจะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"ต้องมีรหัสผ่านเพื่อตั้งค่าการปลดล็อกด้วยลายนิ้วมือและการปลดล็อกด้วยใบหน้า\n\nรหัสผ่านจะช่วยปกป้องโทรศัพท์ในกรณีที่สูญหายหรือถูกขโมย"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"การดำเนินการนี้จะลบรูปภาพและรูปแบบลายนิ้วมือที่เชื่อมโยงกับ \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ซึ่งจัดเก็บในโทรศัพท์ของคุณ"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"การดำเนินการนี้จะลบรูปภาพและรูปแบบลายนิ้วมือที่เชื่อมโยงกับ \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ซึ่งจัดเก็บในแท็บเล็ตของคุณ"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"การดำเนินการนี้จะลบรูปภาพและรูปแบบลายนิ้วมือที่เชื่อมโยงกับ \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ซึ่งจัดเก็บในอุปกรณ์ของคุณ"</string>
diff --git a/res-product/values-tl/strings.xml b/res-product/values-tl/strings.xml
index 565cc51..af56959 100644
--- a/res-product/values-tl/strings.xml
+++ b/res-product/values-tl/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng PIN ang telepono kung mawala o manakaw ito."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng pattern ang telepono kung mawala o manakaw ito."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng password ang telepono kung mawala o manakaw ito."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng PIN ang tablet kung mawala o manakaw ito."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng pattern ang tablet kung mawala o manakaw ito."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng password ang tablet kung mawala o manakaw ito."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng PIN ang device kung mawala o manakaw ito."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng pattern ang device kung mawala o manakaw ito."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng password ang device kung mawala o manakaw ito."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng PIN ang telepono kung mawala o manakaw ito."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng pattern ang telepono kung mawala o manakaw ito."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Mukha at Pag-unlock Gamit ang Fingerprint.\n\nPinoprotektahan ng password ang telepono kung mawala o manakaw ito."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng PIN ang tablet kung mawala o manakaw ito."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng pattern ang tablet kung mawala o manakaw ito."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng password ang tablet kung mawala o manakaw ito."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng PIN ang device kung mawala o manakaw ito."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng pattern ang device kung mawala o manakaw ito."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng password ang device kung mawala o manakaw ito."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Kinakailangan ang PIN para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng PIN ang telepono kung mawala o manakaw ito."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Kinakailangan ang pattern para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng pattern ang telepono kung mawala o manakaw ito."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Kinakailangan ang password para ma-set up ang Pag-unlock Gamit ang Fingerprint at Pag-unlock Gamit ang Mukha.\n\nPinoprotektahan ng password ang telepono kung mawala o manakaw ito."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Dine-delete nito ang mga larawan at modelo ng fingerprint na nauugnay sa \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' na naka-store sa iyong telepono"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Dine-delete nito ang mga larawan at modelo ng fingerprint na nauugnay sa \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' na naka-store sa iyong tablet"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Dine-delete nito ang mga larawan at modelo ng fingerprint na nauugnay sa \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' na naka-store sa iyong device"</string>
diff --git a/res-product/values-tr/strings.xml b/res-product/values-tr/strings.xml
index 843e330..986d173 100644
--- a/res-product/values-tr/strings.xml
+++ b/res-product/values-tr/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Yüz Tanıma Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde telefonu korur."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Yüz Tanıma Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde telefonu korur."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Yüz Tanıma Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde telefonu korur."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde tableti korur."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde tableti korur."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde tableti korur."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde cihazı korur."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde cihazı korur."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde cihazı korur."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde telefonu korur."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde telefonu korur."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Yüz Tanıma Kilidi ve Parmak İzi Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde telefonu korur."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde tableti korur."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde tableti korur."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde tableti korur."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde cihazı korur."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde cihazı korur."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde cihazı korur."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için PIN gereklidir.\n\nPIN, kaybolması veya çalınması halinde telefonu korur."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için desen gereklidir.\n\nDesen, kaybolması veya çalınması halinde telefonu korur."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Parmak İzi Kilidi ve Yüz Tanıma Kilidi kurulumu için şifre gereklidir.\n\nŞifre, kaybolması veya çalınması halinde telefonu korur."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Bu işlem, telefonunuzda saklanan \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ile ilişkilendirilmiş parmak izi resimlerini ve modeli siler"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Bu işlem, tabletinizde saklanan \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ile ilişkilendirilmiş parmak izi resimlerini ve modeli siler"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Bu işlem, cihazınızda saklanan \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" ile ilişkilendirilmiş parma izi resimlerini ve modeli siler"</string>
diff --git a/res-product/values-uk/strings.xml b/res-product/values-uk/strings.xml
index 1fbb698..e664519 100644
--- a/res-product/values-uk/strings.xml
+++ b/res-product/values-uk/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Щоб налаштувати фейс-контроль, потрібен PIN-код.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Щоб налаштувати фейс-контроль, потрібен ключ.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Щоб налаштувати фейс-контроль, потрібен пароль.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен PIN-код.\n\nВін захищає планшет у разі його втрати чи викрадення."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен ключ.\n\nВін захищає планшет у разі його втрати чи викрадення."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен пароль.\n\nВін захищає планшет у разі його втрати чи викрадення."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен PIN-код.\n\nВін захищає пристрій у разі його втрати чи викрадення."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен ключ.\n\nВін захищає пристрій у разі його втрати чи викрадення."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен пароль.\n\nВін захищає пристрій у разі його втрати чи викрадення."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен PIN-код.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен ключ.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Щоб налаштувати фейс-контроль або розблокування відбитком пальця, потрібен пароль.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен PIN-код.\n\nВін захищає планшет у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен ключ.\n\nВін захищає планшет у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен пароль.\n\nВін захищає планшет у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен PIN-код.\n\nВін захищає пристрій у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен ключ.\n\nВін захищає пристрій у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен пароль.\n\nВін захищає пристрій у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен PIN-код.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен ключ.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Щоб налаштувати розблокування відбитком пальця або фейс-контроль, потрібен пароль.\n\nВін захищає телефон у разі його втрати чи викрадення."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Буде видалено зображення й модель відбитка пальця \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", що зберігаються на вашому телефоні"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Буде видалено зображення й модель відбитка пальця \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", що зберігаються на вашому планшеті"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Буде видалено зображення й модель відбитка пальця \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\", що зберігаються на вашому пристрої"</string>
diff --git a/res-product/values-ur/strings.xml b/res-product/values-ur/strings.xml
index 7b413ad..a63da6f 100644
--- a/res-product/values-ur/strings.xml
+++ b/res-product/values-ur/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"فیس اَنلاک سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"فیس اَنلاک سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"فیس اَنلاک سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN ٹیبلیٹ کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن ٹیبلیٹ کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ ٹیبلیٹ کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN آلے کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن آلے کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ آلے کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"فیس اَنلاک اور فنگر پرنٹ اَنلاک کو سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"فنگر پرنٹ ان لاک اور فیس اَنلاک کو سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN ٹیبلیٹ کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"فنگر پرنٹ ان لاک اور فیس اَنلاک کو سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن ٹیبلیٹ کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"فنگر پرنٹ ان لاک اور فیس اَنلاک کو سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ ٹیبلیٹ کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"فنگر پرنٹ ان لاک اور فیس اَنلاک کو سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN آلے کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"فنگر پرنٹ ان لاک اور فیس ان لاک کو سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن آلے کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"فیس اَنلاک اور فنگر پرنٹ اَن لاک کو سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ آلے کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"فنگر پرنٹ ان لاک اور فیس اَنلاک کو سیٹ اپ کرنے کے لیے PIN درکار ہوتا ہے۔\n\nPIN فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"فنگر پرنٹ ان لاک اور فیس اَنلاک کو سیٹ اپ کرنے کے لیے پیٹرن درکار ہوتا ہے۔\n\nپیٹرن فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"فنگر پرنٹ ان لاک اور فیس اَن لاک کو سیٹ اپ کرنے کے لیے پاس ورڈ درکار ہوتا ہے۔\n\nپاس ورڈ فون کے گم یا چوری ہونے پر اس کی حفاظت کرتا ہے۔"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"اس سے آپ کے فون پر اسٹور کردہ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' سے وابستہ فنگر پرنٹ کی تصاویر اور ماڈل حذف ہو جائیں گے"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"اس سے آپ کے ٹیبلیٹ پر اسٹور کردہ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' سے وابستہ فنگر پرنٹ کی تصاویر اور ماڈل حذف ہو جائیں گے"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"اس سے آپ کے آلے پر اسٹور کردہ \'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' سے وابستہ فنگر پرنٹ کی تصاویر اور ماڈل حذف ہو جائیں گے"</string>
diff --git a/res-product/values-uz/strings.xml b/res-product/values-uz/strings.xml
index 70f4c8b..430886b 100644
--- a/res-product/values-uz/strings.xml
+++ b/res-product/values-uz/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Yuz bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Yuz bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Yuz bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nPlanshet yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nPlanshet yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nPlanshet yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nQurilma yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nQurilma yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nQurilma yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Yuz va barmoq izi bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nPlanshet yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nPlanshet yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nPlanshet yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nQurilma yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nQurilma yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nQurilma yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun PIN kod belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, PIN kod undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun grafik kalit belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, grafik kalit undagi maʼlumotlarni himoyalaydi."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Barmoq izi va yuz bilan ochish funksiyalarini sozlash uchun parol belgilanishi zarur.\n\nTelefon yoʻqolib qolsa yoki oʻgʻirlansa, parol undagi maʼlumotlarni himoyalaydi."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Bunda telefoningizga saqlangan “<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>” barmoq iziga oid tasvir va modellar oʻchirib tashlanadi"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Bunda planshetingizga saqlangan “<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>” barmoq iziga oid tasvir va modellar oʻchirib tashlanadi"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Bunda qurilmangizga saqlangan “<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>” barmoq iziga oid tasvir va modellar oʻchirib tashlanadi"</string>
diff --git a/res-product/values-vi/strings.xml b/res-product/values-vi/strings.xml
index e47a4e0..6d24645 100644
--- a/res-product/values-vi/strings.xml
+++ b/res-product/values-vi/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Bạn cần phải nhập mã PIN để thiết lập tính năng Mở khóa bằng khuôn mặt.\n\nMã PIN giúp bảo vệ điện thoại trong trường hợp bị mất hoặc bị đánh cắp."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Bạn cần phải nhập hình mở khóa để thiết lập tính năng Mở khóa bằng khuôn mặt.\n\nHình mở khóa giúp bảo vệ điện thoại trong trường hợp bị mất hoặc bị đánh cắp."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Bạn cần phải nhập mật khẩu để thiết lập tính năng Mở khóa bằng khuôn mặt.\n\nMật khẩu giúp bảo vệ điện thoại trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Bạn cần phải nhập mã PIN để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nMã PIN giúp bảo vệ máy tính bảng trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Bạn cần phải nhập hình mở khóa để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nHình mở khóa giúp bảo vệ máy tính bảng trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Bạn cần phải nhập mật khẩu để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nMật khẩu giúp bảo vệ máy tính bảng trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Bạn cần phải nhập mã PIN để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nMã PIN giúp bảo vệ thiết bị trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Bạn cần phải nhập hình mở khóa để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nHình mở khóa giúp bảo vệ thiết bị trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Bạn cần phải nhập mật khẩu để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nMật khẩu giúp bảo vệ thiết bị trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Bạn cần phải nhập mã PIN để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nMã PIN giúp bảo vệ điện thoại trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Bạn cần phải nhập hình mở khóa để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nHình mở khóa giúp bảo vệ điện thoại trong trường hợp bị mất hoặc bị đánh cắp."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Bạn cần phải nhập mật khẩu để thiết lập tính năng Mở khóa bằng khuôn mặt và Mở khóa bằng vân tay.\n\nMật khẩu giúp bảo vệ điện thoại trong trường hợp bị mất hoặc bị đánh cắp."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Bạn cần phải nhập mã PIN để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nMã PIN giúp bảo vệ máy tính bảng trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Bạn cần phải nhập hình mở khoá để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nHình mở khoá giúp bảo vệ máy tính bảng trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Bạn cần phải nhập mật khẩu để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nMật khẩu giúp bảo vệ máy tính bảng trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Bạn cần phải nhập mã PIN để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nMã PIN giúp bảo vệ thiết bị trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Bạn cần phải nhập hình mở khoá để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nHình mở khoá giúp bảo vệ thiết bị trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Bạn cần phải nhập mật khẩu để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nMật khẩu giúp bảo vệ thiết bị trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Bạn cần phải nhập mã PIN để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nMã PIN giúp bảo vệ điện thoại trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Bạn cần phải nhập hình mở khoá để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nHình mở khoá giúp bảo vệ điện thoại trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Bạn cần phải nhập mật khẩu để thiết lập các tính năng Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt.\n\nMật khẩu giúp bảo vệ điện thoại trong trường hợp bị thất lạc hoặc bị mất cắp."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Thao tác này sẽ xoá các hình ảnh và mẫu vân tay liên kết với \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" được lưu trữ trên điện thoại của bạn"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Thao tác này sẽ xoá các hình ảnh và mẫu vân tay liên kết với \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" được lưu trữ trên máy tính bảng của bạn"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Thao tác này sẽ xoá các hình ảnh và mẫu vân tay liên kết với \"<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\" được lưu trữ trên thiết bị của bạn"</string>
diff --git a/res-product/values-zh-rCN/strings.xml b/res-product/values-zh-rCN/strings.xml
index e37febd..f83cc07 100644
--- a/res-product/values-zh-rCN/strings.xml
+++ b/res-product/values-zh-rCN/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"必须设置 PIN 码,才能设置人脸解锁。\n\n手机丢失或被盗时,PIN 码可为其提供保护。"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"必须设置解锁图案,才能设置人脸解锁。\n\n手机丢失或被盗时,解锁图案可为其提供保护。"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"必须设置密码,才能设置人脸解锁。\n\n手机丢失或被盗时,密码可为其提供保护。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"必须设置 PIN 码,才能设置人脸解锁和指纹解锁。\n\n平板电脑丢失或被盗时,PIN 码可为其提供保护。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"必须设置解锁图案,才能设置人脸解锁和指纹解锁。\n\n平板电脑丢失或被盗时,解锁图案可为其提供保护。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"必须设置密码,才能设置人脸解锁和指纹解锁。\n\n平板电脑丢失或被盗时,密码可为其提供保护。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"必须设置 PIN 码,才能设置人脸解锁和指纹解锁。\n\n设备丢失或被盗时,PIN 码可为其提供保护。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"必须设置解锁图案,才能设置人脸解锁和指纹解锁。\n\n设备丢失或被盗时,解锁图案可为其提供保护。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"必须设置密码,才能设置人脸解锁和指纹解锁。\n\n设备丢失或被盗时,密码可为其提供保护。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"必须设置 PIN 码,才能设置人脸解锁和指纹解锁。\n\n手机丢失或被盗时,PIN 码可为其提供保护。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"必须设置解锁图案,才能设置人脸解锁和指纹解锁。\n\n手机丢失或被盗时,解锁图案可为其提供保护。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"必须设置密码,才能设置人脸解锁和指纹解锁。\n\n手机丢失或被盗时,密码可为其提供保护。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"必须设置 PIN 码,才能设置指纹解锁和人脸解锁。\n\n平板电脑丢失或被盗时,PIN 码可为其提供保护。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"必须设置解锁图案,才能设置指纹解锁和人脸解锁。\n\n平板电脑丢失或被盗时,解锁图案可为其提供保护。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"必须设置密码,才能设置指纹解锁和人脸解锁。\n\n平板电脑丢失或被盗时,密码可为其提供保护。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"必须设置 PIN 码,才能设置指纹解锁和人脸解锁。\n\n设备丢失或被盗时,PIN 码可为其提供保护。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"必须设置解锁图案,才能设置指纹解锁和人脸解锁。\n\n设备丢失或被盗时,解锁图案可为其提供保护。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"必须设置密码,才能设置指纹解锁和人脸解锁。\n\n设备丢失或被盗时,密码可为其提供保护。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"必须设置 PIN 码,才能设置指纹解锁和人脸解锁。\n\n手机丢失或被盗时,PIN 码可为其提供保护。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"必须设置解锁图案,才能设置指纹解锁和人脸解锁。\n\n手机丢失或被盗时,解锁图案可为其提供保护。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"必须设置密码,才能设置指纹解锁和人脸解锁。\n\n手机丢失或被盗时,密码可为其提供保护。"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"确认删除后,手机上存储的与“<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”关联的指纹图像和模型将被删除"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"确认删除后,平板电脑上存储的与“<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”关联的指纹图像和模型将被删除"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"确认删除后,设备上存储的与“<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>”关联的指纹图像和模型将被删除"</string>
diff --git a/res-product/values-zh-rHK/strings.xml b/res-product/values-zh-rHK/strings.xml
index 82941ca..be82269 100644
--- a/res-product/values-zh-rHK/strings.xml
+++ b/res-product/values-zh-rHK/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"你必須先設定 PIN,才能設定「面孔解鎖」。\n\n手機遺失或被盜時,PIN 可保護手機中的資料。"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"你必須先設定圖案,才能設定「面孔解鎖」。\n\n手機遺失或被盜時,圖案可保護手機中的資料。"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"你必須先設定密碼,才能設定「面孔解鎖」。\n\n手機遺失或被盜時,密碼可保護手機中的資料。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"你必須先設定 PIN,才能設定「面孔解鎖」和「指紋解鎖」。\n\n平板電腦遺失或被盜時,PIN 可保護平板電腦中的資料。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"你必須先設定圖案,才能設定「面孔解鎖」和「指紋解鎖」。\n\n平板電腦遺失或被盜時,圖案可保護平板電腦中的資料。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"你必須先設定密碼,才能設定「面孔解鎖」和「指紋解鎖」。\n\n平板電腦遺失或被盜時,密碼可保護平板電腦中的資料。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"你必須先設定 PIN,才能設定「面孔解鎖」和「指紋解鎖」。\n\n裝置遺失或被盜時,PIN 可保護裝置中的資料。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"你必須先設定圖案,才能設定「面孔解鎖」和「指紋解鎖」。\n\n裝置遺失或被盜時,圖案可保護裝置中的資料。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"你必須先設定密碼,才能設定「面孔解鎖」和「指紋解鎖」。\n\n裝置遺失或被盜時,密碼可保護裝置中的資料。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"你必須先設定 PIN,才能設定「面孔解鎖」和「指紋解鎖」。\n\n手機遺失或被盜時,PIN 可保護手機中的資料。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"你必須先設定圖案,才能設定「面孔解鎖」和「指紋解鎖」。\n\n手機遺失或被盜時,圖案可保護手機中的資料。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"你必須先設定密碼,才能設定「面孔解鎖」和「指紋解鎖」。\n\n手機遺失或被盜時,密碼可保護手機中的資料。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"你需要先設定 PIN,才能設定「指紋解鎖」和「面孔解鎖」。\n\n平板電腦遺失或被盜時,PIN 可保護平板電腦中的資料。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"你需要先設定圖案,才能設定「指紋解鎖」和「面孔解鎖」。\n\n平板電腦遺失或被盜時,圖案可保護平板電腦中的資料。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"你需要先設定密碼,才能設定「指紋解鎖」和「面孔解鎖」。\n\n平板電腦遺失或被盜時,密碼可保護平板電腦中的資料。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"你需要先設定 PIN,才能設定「指紋解鎖」和「面孔解鎖」。\n\n裝置遺失或被盜時,PIN 可保護裝置中的資料。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"你需要先設定圖案,才能設定「指紋解鎖」和「面孔解鎖」。\n\n裝置遺失或被盜時,圖案可保護裝置中的資料。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"你需要先設定密碼,才能設定「指紋解鎖」和「面孔解鎖」。\n\n裝置遺失或被盜時,密碼可保護裝置中的資料。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"你需要先設定 PIN,才能設定「指紋解鎖」和「面孔解鎖」。\n\n手機遺失或被盜時,PIN 可保護手機中的資料。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"你需要先設定圖案,才能設定「指紋解鎖」和「面孔解鎖」。\n\n手機遺失或被盜時,圖案可保護手機中的資料。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"你需要先設定密碼,才能設定「指紋解鎖」和「面孔解鎖」。\n\n手機遺失或被盜時,密碼可保護手機中的資料。"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"此操作會刪除與手機上儲存的「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」相關聯的指紋圖像和模型"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"此操作會刪除與平板電腦上儲存的「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」相關聯的指紋圖像和模型"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"此操作會刪除與裝置上儲存的「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」相關聯的指紋圖像和模型"</string>
diff --git a/res-product/values-zh-rTW/strings.xml b/res-product/values-zh-rTW/strings.xml
index 85d560e..d521710 100644
--- a/res-product/values-zh-rTW/strings.xml
+++ b/res-product/values-zh-rTW/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"你必須先設定 PIN 碼,才能設定人臉解鎖功能。\n\n手機遺失或遭竊時,PIN 碼可以保護手機。"</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"你必須先設定解鎖圖案,才能設定人臉解鎖功能。\n\n手機遺失或遭竊時,解鎖圖案可以保護手機。"</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"你必須先設定密碼,才能設定人臉解鎖功能。\n\n手機遺失或遭竊時,密碼可以保護手機。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"你必須先設定 PIN 碼,才能設定人臉解鎖和指紋解鎖功能。\n\n平板電腦遺失或遭竊時,PIN 碼可以保護平板電腦。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"你必須先設定解鎖圖案,才能設定人臉解鎖和指紋解鎖功能。\n\n平板電腦遺失或遭竊時,解鎖圖案可以保護平板電腦。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"你必須先設定密碼,才能設定人臉解鎖和指紋解鎖功能。\n\n平板電腦遺失或遭竊時,密碼可以保護平板電腦。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"你必須先設定 PIN 碼,才能設定人臉解鎖和指紋解鎖功能。\n\n裝置遺失或遭竊時,PIN 碼可以保護裝置。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"你必須先設定解鎖圖案,才能設定人臉解鎖和指紋解鎖功能。\n\n裝置遺失或遭竊時,解鎖圖案可以保護裝置。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"你必須先設定密碼,才能設定人臉解鎖和指紋解鎖功能。\n\n裝置遺失或遭竊時,密碼可以保護裝置。"</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"你必須先設定 PIN 碼,才能設定人臉解鎖和指紋解鎖功能。\n\n手機遺失或遭竊時,PIN 碼可以保護手機。"</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"你必須先設定解鎖圖案,才能設定人臉解鎖和指紋解鎖功能。\n\n手機遺失或遭竊時,解鎖圖案可以保護手機。"</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"你必須先設定密碼,才能設定人臉解鎖和指紋解鎖功能。\n\n手機遺失或遭竊時,密碼可以保護手機。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"必須先設定 PIN 碼,才能設定指紋解鎖和人臉解鎖功能。\n\n平板電腦遺失或遭竊時,PIN 碼可以保護平板電腦中的資料。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"必須先設定解鎖圖案,才能設定指紋解鎖和人臉解鎖功能。\n\n平板電腦遺失或遭竊時,解鎖圖案可以保護平板電腦中的資料。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"必須先設定密碼,才能設定指紋解鎖和人臉解鎖功能。\n\n平板電腦遺失或遭竊時,密碼可以保護平板電腦中的資料。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"必須先設定 PIN 碼,才能設定指紋解鎖和人臉解鎖功能。\n\n裝置遺失或遭竊時,PIN 碼可以保護裝置中的資料。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"必須先設定解鎖圖案,才能設定指紋解鎖和人臉解鎖功能。\n\n裝置遺失或遭竊時,解鎖圖案可以保護裝置中的資料。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"必須先設定密碼,才能設定指紋解鎖和人臉解鎖功能。\n\n裝置遺失或遭竊時,密碼可以保護裝置中的資料。"</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"必須先設定 PIN 碼,才能設定指紋解鎖和人臉解鎖功能。\n\n手機遺失或遭竊時,PIN 碼可以保護手機中的資料。"</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"必須先設定解鎖圖案,才能設定指紋解鎖和人臉解鎖功能。\n\n手機遺失或遭竊時,解鎖圖案可以保護手機中的資料。"</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"必須先設定密碼,才能設定指紋解鎖和人臉解鎖功能。\n\n手機遺失或遭竊時,密碼可以保護手機中的資料。"</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"這項操作會刪除手機上儲存的「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」相關指紋圖像和模型"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"如果指紋圖像和模型與平板電腦上儲存的「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」相關聯,系統也將一併刪除"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"系統會一併刪除裝置上與「<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>」連結的指紋圖像和模型"</string>
diff --git a/res-product/values-zu/strings.xml b/res-product/values-zu/strings.xml
index 5ead8ab..2d97aa9 100644
--- a/res-product/values-zu/strings.xml
+++ b/res-product/values-zu/strings.xml
@@ -179,15 +179,15 @@
<string name="lock_screen_pin_skip_face_message" product="default" msgid="358903382559327157">"Iphinikhodi iyadingeka ukusetha Ukuvula ngobuso.\n\nIphinikhodi ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
<string name="lock_screen_pattern_skip_face_message" product="default" msgid="6400426500859622964">"Iphethini iyadingeka ukusetha Ukuvula ngobuso.\n\nIphethini ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
<string name="lock_screen_password_skip_face_message" product="default" msgid="1555954661782997039">"Iphasiwedi iyadingeka ukusetha Ukuvula ngobuso.\n\nIphasiwedi ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="3792419626110520922">"Iphinikhodi iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphinikhodi ivikela ithebulethi uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="2937217199563914791">"Iphethini iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphethini ivikela ithebulethi uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="1988360407507443804">"Iphasiwedi iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphasiwedi ivikela ithebulethi uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="4423227124669516582">"Iphinikhodi iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphinikhodi ivikela idivayisi uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="6409777941433213751">"Iphethini iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphethini ivikela idivayisi uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="7939217127900065677">"Iphasiwedi iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphasiwedi ivikela idivayisi uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="2717938545326672010">"Iphinikhodi iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphinikhodi ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="6067309080610183546">"Iphethini iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphethini ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
- <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="4739690336878613804">"Iphasiwedi iyadingeka ukusetha Ukuvula ngobuso Nokuvula Ngesigxivizo Seminwe.\n\nIphasiwedi ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet" msgid="6016574209955764097">"Iphinikhodi iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphinikhodi ivikela ithebulethi uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet" msgid="5193008948766756870">"Iphethini iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphethini ivikela ithebulethi uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet" msgid="2157871617774498976">"Iphasiwedi iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphasiwedi ivikela ithebulethi uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device" msgid="3023595865822720071">"Iphinikhodi iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphinikhodi ivikela idivayisi uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device" msgid="3039110875534893916">"Iphethini iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphethini ivikela idivayisi uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device" msgid="6506194961404887073">"Iphasiwedi iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphasiwedi ivikela idivayisi uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default" msgid="6614355211073480369">"Iphinikhodi iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphinikhodi ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default" msgid="969489650005656159">"Iphethini iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphethini ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default" msgid="2934343185175325368">"Iphasiwedi iyadingeka ukuze usethe Ukuvula ngesigxivizo somunwe kanye Nokuvula Ngobuso.\n\nIphasiwedi ivikela ifoni uma ilahlekile noma intshontshiwe."</string>
<string name="fingerprint_v2_delete_message" product="default" msgid="8723083814238510088">"Lokhu kusula imifanekiso yesigxivizo somunwe nemodeli ehambisana ne-\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' egcinwe kufoni yakho"</string>
<string name="fingerprint_v2_delete_message" product="tablet" msgid="527375244730792698">"Lokhu kusula imifanekiso yesigxivizo somunwe nemodeli ehambisana ne-\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' egcinwe kwithebulethi yakho"</string>
<string name="fingerprint_v2_delete_message" product="device" msgid="4549780655045100171">"Lokhu kusula izithombe zezigxivizo zeminwe nemodeli ehambisana ne-\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' ezigcinwe kwidivayisi yakho"</string>
diff --git a/res-product/values/strings.xml b/res-product/values/strings.xml
index 987548a..83963cb 100644
--- a/res-product/values/strings.xml
+++ b/res-product/values/strings.xml
@@ -338,23 +338,23 @@
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face. (default) [CHAR LIMIT=NONE] -->
<string name="lock_screen_password_skip_face_message" product="default">A password is required to set up Face Unlock.\n\nA password protects the phone if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (tablet) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_pin_skip_biometrics_message" product="tablet">A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the tablet if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="tablet">A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the tablet if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (tablet) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_pattern_skip_biometrics_message" product="tablet">A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the tablet if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="tablet">A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the tablet if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (tablet) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_password_skip_biometrics_message" product="tablet">A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the tablet if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="tablet">A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the tablet if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (device) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_pin_skip_biometrics_message" product="device">A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the device if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="device">A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the device if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (device) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_pattern_skip_biometrics_message" product="device">A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the device if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="device">A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the device if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (device) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_password_skip_biometrics_message" product="device">A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the device if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="device">A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the device if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (default) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_pin_skip_biometrics_message" product="default">A PIN is required to set up Face Unlock and Fingerprint Unlock.\n\nA PIN protects the phone if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_pin_skip_biometrics_message" product="default">A PIN is required to set up Fingerprint Unlock and Face Unlock.\n\nA PIN protects the phone if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (default) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_pattern_skip_biometrics_message" product="default">A pattern is required to set up Face Unlock and Fingerprint Unlock.\n\nA pattern protects the phone if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_pattern_skip_biometrics_message" product="default">A pattern is required to set up Fingerprint Unlock and Face Unlock.\n\nA pattern protects the phone if it\u2019s lost or stolen.</string>
<!-- Dialog text shown when the user tries to skip setting up a screen lock, warning that they can't continue to set up face or fingerprint. (default) [CHAR LIMIT=NONE] -->
- <string name="lock_screen_password_skip_biometrics_message" product="default">A password is required to set up Face Unlock and Fingerprint Unlock.\n\nA password protects the phone if it\u2019s lost or stolen.</string>
+ <string name="lock_screen_password_skip_biometrics_message" product="default">A password is required to set up Fingerprint Unlock and Face Unlock.\n\nA password protects the phone if it\u2019s lost or stolen.</string>
<!-- Message shown in a dialog which asks the user to confirm when a single fingerprint gets deleted. [CHAR LIMIT=NONE]-->
<string name="fingerprint_v2_delete_message" product="default">This deletes the fingerprint images and model associated with \'<xliff:g id="fingerprint_id" example="Fingerprint 2">%1$s</xliff:g>\' that are stored on your phone</string>
<!-- Message shown in a dialog which asks the user to confirm when a single fingerprint gets deleted. [CHAR LIMIT=NONE]-->
diff --git a/res/color/modes_icon_picker_item_background.xml b/res/color/modes_icon_picker_item_background.xml
new file mode 100644
index 0000000..f9280c6
--- /dev/null
+++ b/res/color/modes_icon_picker_item_background.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ 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.
+ -->
+
+<!-- Color list for the background in each item in the icon picker list. -->
+<selector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+
+ <item android:state_pressed="true" android:color="?androidprv:attr/materialColorPrimary" />
+ <item android:state_selected="true" android:color="?androidprv:attr/materialColorPrimary" />
+ <item android:color="?androidprv:attr/materialColorSecondaryContainer" />
+</selector>
diff --git a/res/color/modes_icon_picker_item_icon.xml b/res/color/modes_icon_picker_item_icon.xml
new file mode 100644
index 0000000..8a517d5
--- /dev/null
+++ b/res/color/modes_icon_picker_item_icon.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ 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.
+ -->
+
+<!-- Color list for the icon in each item in the icon picker list. -->
+<selector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+
+ <item android:state_pressed="true" android:color="?androidprv:attr/materialColorOnPrimary" />
+ <item android:state_selected="true" android:color="?androidprv:attr/materialColorOnPrimary" />
+ <item android:color="?androidprv:attr/materialColorOnSecondaryContainer" />
+</selector>
diff --git a/res/drawable/external_display_mirror_landscape.xml b/res/drawable/external_display_mirror_landscape.xml
new file mode 100644
index 0000000..4272ddb
--- /dev/null
+++ b/res/drawable/external_display_mirror_landscape.xml
@@ -0,0 +1,55 @@
+<?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:height="232.02106dp"
+ android:viewportHeight="214"
+ android:viewportWidth="380"
+ android:width="412dp">
+ <path
+ android:pathData="M16,0L364,0A16,16 0,0 1,380 16L380,198A16,16 0,0 1,364 214L16,214A16,16 0,0 1,0 198L0,16A16,16 0,0 1,16 0z"
+ android:fillColor="#00000000"/>
+ <path
+ android:pathData="M150.5,38L327.5,38A5.5,5.5 0,0 1,333 43.5L333,138.5A5.5,5.5 0,0 1,327.5 144L150.5,144A5.5,5.5 0,0 1,145 138.5L145,43.5A5.5,5.5 0,0 1,150.5 38z"
+ android:fillColor="#80868B"/>
+ <path
+ android:pathData="M150.58,39L327.42,39A4.58,4.58 0,0 1,332 43.58L332,138.42A4.58,4.58 0,0 1,327.42 143L150.58,143A4.58,4.58 0,0 1,146 138.42L146,43.58A4.58,4.58 0,0 1,150.58 39z"
+ android:fillColor="#000000"/>
+ <path
+ android:pathData="M254.25,144H223.75L221.52,173.34C221.48,173.82 221.08,174.18 220.6,174.18H211.37C211.25,174.18 211.12,174.21 211.01,174.26C210.11,174.65 210.39,176 211.37,176H266.63C267.61,176 267.89,174.65 266.99,174.26C266.88,174.21 266.75,174.18 266.63,174.18H257.4C256.92,174.18 256.52,173.82 256.48,173.34L254.25,144Z"
+ android:fillColor="#5F6368"/>
+ <path
+ android:pathData="M330,53L330,129A3,3 0,0 1,327 132L151,132A3,3 0,0 1,148 129L148,53A3,3 0,0 1,151 50L327,50A3,3 0,0 1,330 53z"
+ android:strokeWidth="2"
+ android:fillColor="#00000000"
+ android:strokeColor="#E0E994"/>
+ <path
+ android:pathData="M113,91.08V86.55C113,86.25 112.88,85.96 112.67,85.75C112.45,85.54 112.17,85.42 111.86,85.41V61.64C111.84,60.15 111.24,58.72 110.17,57.66C109.1,56.61 107.66,56.01 106.16,56H53.71C52.2,56.01 50.75,56.61 49.68,57.67C48.62,58.73 48.01,60.17 48,61.66V170.34C48.01,171.83 48.62,173.27 49.68,174.33C50.75,175.39 52.2,175.99 53.71,176H106.16C107.67,175.99 109.11,175.39 110.18,174.33C111.25,173.27 111.85,171.83 111.86,170.34V114.86C112.16,114.86 112.45,114.74 112.67,114.52C112.88,114.31 113,114.03 113,113.73V102.4C113,102.1 112.88,101.82 112.67,101.6C112.45,101.39 112.17,101.27 111.86,101.27V92.21C112.16,92.21 112.45,92.09 112.67,91.88C112.88,91.67 113,91.38 113,91.08ZM110.72,170.34C110.72,171.54 110.24,172.69 109.38,173.54C108.53,174.39 107.37,174.87 106.16,174.87H53.71C52.5,174.87 51.34,174.39 50.48,173.54C49.62,172.69 49.14,171.54 49.14,170.34V61.64C49.14,60.44 49.62,59.29 50.48,58.44C51.34,57.59 52.5,57.11 53.71,57.11H106.16C107.37,57.11 108.53,57.59 109.38,58.44C110.24,59.29 110.72,60.44 110.72,61.64V170.34Z"
+ android:fillColor="#80868B"/>
+ <path
+ android:pathData="M54,59L106,59A3,3 0,0 1,109 62L109,170A3,3 0,0 1,106 173L54,173A3,3 0,0 1,51 170L51,62A3,3 0,0 1,54 59z"
+ android:strokeColor="#E0E994"
+ android:strokeWidth="2"
+ android:fillColor="#000000"/>
+ <path
+ android:pathData="M80,184.72V189.7C80,193.73 83.27,197 87.3,197H164.7C168.73,197 172,193.73 172,189.7V144"
+ android:strokeColor="#5F6368"
+ android:strokeWidth="0.684"
+ android:fillColor="#00000000"/>
+ <path
+ android:pathData="M77,176H83V184.09C83,184.59 82.59,185 82.09,185H77.91C77.41,185 77,184.59 77,184.09V176Z"
+ android:fillColor="#5F6368"/>
+</vector>
diff --git a/res/drawable/external_display_mirror_portrait.xml b/res/drawable/external_display_mirror_portrait.xml
new file mode 100644
index 0000000..0fe7f93
--- /dev/null
+++ b/res/drawable/external_display_mirror_portrait.xml
@@ -0,0 +1,55 @@
+<?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:height="232.02106dp"
+ android:viewportHeight="214"
+ android:viewportWidth="380"
+ android:width="412dp" >
+ <path
+ android:pathData="M16,0L364,0A16,16 0,0 1,380 16L380,198A16,16 0,0 1,364 214L16,214A16,16 0,0 1,0 198L0,16A16,16 0,0 1,16 0z"
+ android:fillColor="#00000000"/>
+ <path
+ android:pathData="M150.5,38L327.5,38A5.5,5.5 0,0 1,333 43.5L333,138.5A5.5,5.5 0,0 1,327.5 144L150.5,144A5.5,5.5 0,0 1,145 138.5L145,43.5A5.5,5.5 0,0 1,150.5 38z"
+ android:fillColor="#80868B"/>
+ <path
+ android:pathData="M150.58,39L327.42,39A4.58,4.58 0,0 1,332 43.58L332,138.42A4.58,4.58 0,0 1,327.42 143L150.58,143A4.58,4.58 0,0 1,146 138.42L146,43.58A4.58,4.58 0,0 1,150.58 39z"
+ android:fillColor="#000000"/>
+ <path
+ android:pathData="M254.25,144H223.75L221.52,173.34C221.48,173.82 221.08,174.18 220.6,174.18H211.37C211.25,174.18 211.12,174.21 211.01,174.26C210.11,174.65 210.39,176 211.37,176H266.63C267.61,176 267.89,174.65 266.99,174.26C266.88,174.21 266.75,174.18 266.63,174.18H257.4C256.92,174.18 256.52,173.82 256.48,173.34L254.25,144Z"
+ android:fillColor="#5F6368"/>
+ <path
+ android:pathData="M216,41L262,41A3,3 0,0 1,265 44L265,138A3,3 0,0 1,262 141L216,141A3,3 0,0 1,213 138L213,44A3,3 0,0 1,216 41z"
+ android:strokeWidth="2"
+ android:fillColor="#00000000"
+ android:strokeColor="#E0E994"/>
+ <path
+ android:pathData="M113,91.08V86.55C113,86.25 112.88,85.96 112.67,85.75C112.45,85.54 112.17,85.42 111.86,85.41V61.64C111.84,60.15 111.24,58.72 110.17,57.66C109.1,56.61 107.66,56.01 106.16,56H53.71C52.2,56.01 50.75,56.61 49.68,57.67C48.62,58.73 48.01,60.17 48,61.66V170.34C48.01,171.83 48.62,173.27 49.68,174.33C50.75,175.39 52.2,175.99 53.71,176H106.16C107.67,175.99 109.11,175.39 110.18,174.33C111.25,173.27 111.85,171.83 111.86,170.34V114.86C112.16,114.86 112.45,114.74 112.67,114.52C112.88,114.31 113,114.03 113,113.73V102.4C113,102.1 112.88,101.82 112.67,101.6C112.45,101.39 112.17,101.27 111.86,101.27V92.21C112.16,92.21 112.45,92.09 112.67,91.88C112.88,91.67 113,91.38 113,91.08ZM110.72,170.34C110.72,171.54 110.24,172.69 109.38,173.54C108.53,174.39 107.37,174.87 106.16,174.87H53.71C52.5,174.87 51.34,174.39 50.48,173.54C49.62,172.69 49.14,171.54 49.14,170.34V61.64C49.14,60.44 49.62,59.29 50.48,58.44C51.34,57.59 52.5,57.11 53.71,57.11H106.16C107.37,57.11 108.53,57.59 109.38,58.44C110.24,59.29 110.72,60.44 110.72,61.64V170.34Z"
+ android:fillColor="#80868B"/>
+ <path
+ android:pathData="M54,59L106,59A3,3 0,0 1,109 62L109,170A3,3 0,0 1,106 173L54,173A3,3 0,0 1,51 170L51,62A3,3 0,0 1,54 59z"
+ android:strokeColor="#E0E994"
+ android:strokeWidth="2"
+ android:fillColor="#000000"/>
+ <path
+ android:pathData="M80,184.72V189.7C80,193.73 83.27,197 87.3,197H164.7C168.73,197 172,193.73 172,189.7V144"
+ android:strokeColor="#5F6368"
+ android:strokeWidth="0.684"
+ android:fillColor="#00000000"/>
+ <path
+ android:pathData="M77,176H83V184.09C83,184.59 82.59,185 82.09,185H77.91C77.41,185 77,184.59 77,184.09V176Z"
+ android:fillColor="#5F6368"/>
+</vector>
diff --git a/res/drawable/ic_do_not_disturb_on_24dp.xml b/res/drawable/ic_do_not_disturb_on_24dp.xml
deleted file mode 100644
index cace8d4..0000000
--- a/res/drawable/ic_do_not_disturb_on_24dp.xml
+++ /dev/null
@@ -1,28 +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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0"
- android:tint="?android:attr/colorControlNormal">
- <path
- android:fillColor="#FFFFFFFF"
- android:pathData="M12,2C6.48,2 2,6.48 2,12c0,5.52 4.48,10 10,10c5.52,0 10,-4.48 10,-10C22,6.48 17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8c0,-4.41 3.59,-8 8,-8c4.41,0 8,3.59 8,8C20,16.41 16.41,20 12,20z"/>
- <path
- android:fillColor="#FFFFFFFF"
- android:pathData="M7,11h10v2h-10z"/>
-</vector>
diff --git a/res/drawable/ic_external_display_32dp.xml b/res/drawable/ic_external_display_32dp.xml
new file mode 100644
index 0000000..3e18282
--- /dev/null
+++ b/res/drawable/ic_external_display_32dp.xml
@@ -0,0 +1,32 @@
+<?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="32dp"
+ android:height="32dp"
+ android:viewportWidth="32"
+ android:viewportHeight="32">
+ <path
+ android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0"
+ android:fillColor="#FAFBD8"/>
+ <group>
+ <clip-path
+ android:pathData="M5.333,5.332h21.333v21.333h-21.333z"/>
+ <path
+ android:pathData="M12.689,23.288V21.643H14.333V19.976H9C8.555,19.976 8.17,19.813 7.844,19.488C7.518,19.162 7.355,18.769 7.355,18.31V9.665C7.355,9.206 7.518,8.814 7.844,8.488C8.17,8.162 8.555,7.999 9,7.999H23C23.444,7.999 23.829,8.162 24.155,8.488C24.481,8.814 24.644,9.206 24.644,9.665V18.31C24.644,18.769 24.481,19.162 24.155,19.488C23.829,19.813 23.444,19.976 23,19.976H17.666V21.643H19.311V23.288H12.689ZM9,18.31H23V9.665H9V18.31ZM9,18.31V9.665V18.31Z"
+ android:fillColor="#8E964B"/>
+ </group>
+</vector>
diff --git a/res/drawable/ic_zen_mode_new_option_custom.xml b/res/drawable/ic_zen_mode_new_option_custom.xml
new file mode 100644
index 0000000..c3a45cc
--- /dev/null
+++ b/res/drawable/ic_zen_mode_new_option_custom.xml
@@ -0,0 +1,25 @@
+<!--
+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">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M620,440Q645,440 662.5,422.5Q680,405 680,380Q680,355 662.5,337.5Q645,320 620,320Q595,320 577.5,337.5Q560,355 560,380Q560,405 577.5,422.5Q595,440 620,440ZM340,440Q365,440 382.5,422.5Q400,405 400,380Q400,355 382.5,337.5Q365,320 340,320Q315,320 297.5,337.5Q280,355 280,380Q280,405 297.5,422.5Q315,440 340,440ZM480,700Q548,700 603.5,661.5Q659,623 684,560L618,560Q596,597 559.5,618.5Q523,640 480,640Q437,640 400.5,618.5Q364,597 342,560L276,560Q301,623 356.5,661.5Q412,700 480,700ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800Z" />
+</vector>
\ No newline at end of file
diff --git a/res/layout-land/request_manage_credentials.xml b/res/layout-land/request_manage_credentials.xml
index fbe0bd0..f6bfa0e 100644
--- a/res/layout-land/request_manage_credentials.xml
+++ b/res/layout-land/request_manage_credentials.xml
@@ -16,6 +16,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
diff --git a/res/layout-sw600dp/request_manage_credentials.xml b/res/layout-sw600dp/request_manage_credentials.xml
index 42facd3..529edf1 100644
--- a/res/layout-sw600dp/request_manage_credentials.xml
+++ b/res/layout-sw600dp/request_manage_credentials.xml
@@ -17,6 +17,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
diff --git a/res/layout/modes_icon_list_item.xml b/res/layout/modes_icon_list_item.xml
index aa45de3..72aef52 100644
--- a/res/layout/modes_icon_list_item.xml
+++ b/res/layout/modes_icon_list_item.xml
@@ -24,8 +24,8 @@
<ImageView
android:id="@+id/icon_image_view"
- android:layout_width="@dimen/zen_mode_icon_list_circle_diameter"
- android:layout_height="@dimen/zen_mode_icon_list_circle_diameter"
+ android:layout_width="@dimen/zen_mode_icon_list_item_circle_diameter"
+ android:layout_height="@dimen/zen_mode_icon_list_item_circle_diameter"
android:importantForAccessibility="no"
android:layout_gravity="center" />
</FrameLayout>
diff --git a/res/layout/request_manage_credentials.xml b/res/layout/request_manage_credentials.xml
index ee697f7..c25a35d 100644
--- a/res/layout/request_manage_credentials.xml
+++ b/res/layout/request_manage_credentials.xml
@@ -18,7 +18,8 @@
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"
+ android:layout_height="match_parent"
+ android:fitsSystemWindows="true"
android:clipChildren="true">
<RelativeLayout
diff --git a/res/layout/search_bar_unified_version.xml b/res/layout/search_bar_unified_version.xml
index a8ad6fc..dbcf266 100644
--- a/res/layout/search_bar_unified_version.xml
+++ b/res/layout/search_bar_unified_version.xml
@@ -45,6 +45,6 @@
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:paddingEnd="8dp"
- android:text="@string/search_settings"/>
+ android:text="@string/homepage_search"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
diff --git a/res/layout/settings_homepage_container_v2.xml b/res/layout/settings_homepage_container_v2.xml
index 5ae5fbd..b244579 100644
--- a/res/layout/settings_homepage_container_v2.xml
+++ b/res/layout/settings_homepage_container_v2.xml
@@ -69,8 +69,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:paddingTop="8dp"
- android:paddingBottom="24dp"
+ android:paddingVertical="8dp"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
diff --git a/res/layout/zen_mode_type_item.xml b/res/layout/zen_mode_type_item.xml
new file mode 100644
index 0000000..841ca00
--- /dev/null
+++ b/res/layout/zen_mode_type_item.xml
@@ -0,0 +1,62 @@
+<?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:background="?android:attr/selectableItemBackground"
+ android:gravity="center_vertical"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_gravity="center" />
+
+ <RelativeLayout
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:paddingStart="16dp"
+ android:layout_weight="1">
+
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ android:singleLine="true"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
+ android:textSize="16sp" />
+
+ <TextView
+ android:id="@+id/subtitle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignStart="@id/title"
+ android:layout_below="@id/title"
+ android:maxLines="2"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"
+ android:textColor="?android:attr/textColorSecondary"
+ android:textSize="14sp" />
+
+ </RelativeLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
index 882b5e0..6db2759 100644
--- a/res/values-af/arrays.xml
+++ b/res/values-af/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Slaaptyd"</item>
+ <item msgid="4152450357280759894">"Bestuur"</item>
+ <item msgid="7096549258219399423">"Meesleurend"</item>
+ <item msgid="2760716776980432977">"Bestuur"</item>
+ <item msgid="601734478369121764">"Ster"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Tyd"</item>
+ <item msgid="3653377604690057780">"Teater"</item>
+ <item msgid="3843711267408385410">"Blom"</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 1d9a295..afeef0f 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Gehoortoestelinstellings"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Kortpad, gehoortoestel-versoenbaarheid"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Voorafstelling"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Geen voorafstellings deur jou oudioloog geprogrammeer nie"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Kon nie voorafstelling opdateer nie"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Oudio-uitvoer"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Meer oor oudio-uitvoer"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Kom meer te wete oor Horlosieontsluiting"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Voeg horlosie by"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Verwyder horlosie"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Gesig- en Vingerafdrukslot"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Gesigslot en vingerafdrukslot"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Gesig- en Vingerafdrukslot vir werk"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Opstelling is nodig"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Gesig en vingerafdrukke is bygevoeg"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installeer apps"</b>\n"Installeer apps wat jy privaat in jou ruimte wil hou"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Hou in gedagte"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps stop wanneer jy jou ruimte sluit"</b>\n"Wanneer jy jou ruimte sluit, word apps in jou ruimte gestop en sal jy nie kennisgewing van hulle af ontvang nie"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privaat ruimtes is nie geskik vir apps, soos mediese apps, wat in die agtergrond moet werk of kritieke kennisgewings moet stuur nie. Dit is omdat kennisgewings en agtergrondaktiwiteit gestop word wanneer jou ruimte gesluit word.\n\nApps in jou privaat ruimte sal nie in toestemmingbestuurder, privaatheidkontroleskerm en ander instellings verskyn wanneer jou privaat ruimte gesluit word nie.\n\nJou privaat ruimte kan nie na ’n nuwe toestel geskuif word nie. Jy sal ’n ander privaat ruimte moet opstel as jy dit op ’n ander toestel wil gebruik.\n\nEnigiemand wat jou toestel aan ’n rekenaar koppel of skadelike apps op jou toestel installeer, sal moontlik toegang tot jou privaat ruimte kan kry."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privaat ruimtes is nie geskik vir apps, soos mediese apps, wat in die agtergrond moet werk of kritieke kennisgewings moet stuur nie. Dit is omdat kennisgewings en agtergrondaktiwiteit gestop word wanneer jou ruimte gesluit word.\n\nApps in jou privaat ruimte sal nie in toestemmingbestuurder, privaatheidkontroleskerm en ander instellings verskyn wanneer jou privaat ruimte gesluit word nie.\n\nJou privaat ruimte kan nie na ’n nuwe toestel geskuif word nie. Jy sal ’n ander ruimte moet opstel as jy dit op ’n ander toestel wil gebruik.\n\nEnigiemand wat jou toestel aan ’n rekenaar koppel of kwaadwillige apps op jou toestel installeer, sal moontlik toegang tot jou privaat ruimte kan kry."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Meer inligting oor privaat ruimte"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Dit sal ’n paar oomblikke neem"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Stel tans privaat ruimte op …"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Herbegin toestel?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Gedetailleerde NFC-loglêers is slegs vir ontwikkelingdoeleindes bedoel. Bykomende NFC-data is by foutverslae ingesluit, wat privaat inligting kan bevat. Herbegin jou toestel om hierdie instelling te verander."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Herbegin"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Saai uit"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"weerspieël"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Aktiveer draadlose skermdeling"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Aanpasbaar"</string>
<string name="brightness" msgid="6216871641021779698">"Helderheidsvlak"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Aanpasbare helderheid"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Meer oor aanpasbare helderheid"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Jou skermhelderheid sal outomaties by jou omgewing en aktiwiteite aanpas. Jy kan die glyer self skuif om aanpasbare helderheid te help om te leer wat jy verkies."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Aan"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Af"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Gebruikergekose: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Spraak"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Wyserspoed"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Speletjiekontroleerder"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Herlei vibrasie"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Stuur vibrasie na speletjiebeheerder wanneer dit gekoppel is"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Gaan in elk geval voort"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Kanselleer"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Vergrotinginstellings"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Beeldrol met een vinger"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Skuif die vergrotingarea deur een vinger te sleep."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Skuif die vergrotingarea deur twee vingers te sleep."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Onbeskikbaar terwyl net ’n deel van die skerm vergroot word"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tik op \'n knoppie om te zoem"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zoem vinnig op die skerm in om inhoud groter te maak"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Zoem só in:</b><br/> {0,number,integer}. Gebruik kortpad om vergroting te begin<br/> {1,number,integer}. Tik op die skerm<br/> {2,number,integer}. Sleep 2 vingers om op die skerm rond te beweeg<br/> {3,number,integer}. Knyp met 2 vingers om die zoem te verstel<br/> {4,number,integer}. Gebruik kortpad om vergroting te stop<br/><br/> <b>Zoem só tydelik in:</b><br/> {0,number,integer}. Maak seker dat jou vergrotingtipe op volskerm gestel is<br/> {1,number,integer}. Gebruik kortpad om vergroting te begin<br/> {2,number,integer}. Raak en hou enige plek op die skerm<br/> {3,number,integer}. Sleep vinger om op die skerm rond te beweeg<br/> {4,number,integer}. Lig vinger om vergroting te stop"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Wanneer vergroting aangeskakel is, kan jy op jou skerm inzoem.\n\n"<b>"Om te zoem"</b>", moet jy vergroting begin en dan op enige plek op die skerm tik.\n"<ul><li>"Sleep 2 of meer vingers om te rollees"</li>\n<li>"Knyp 2 of meer vingers om zoem te verstel"</li></ul>\n\n<b>"Om tydelik te zoem"</b>", moet jy vergroting begin en dan enige plek op die skerm raak en hou.\n"<ul><li>"Sleep om op die skerm rond te beweeg"</li>\n<li>"Lig jou vinger op om uit te zoem"</li></ul>\n\n"Jy kan nie op die sleutelbord of die navigasiebalk inzoem nie."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Bladsy <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> van <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Toeganklikheidknoppiekortpad"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Geen}=1{1 skedule gestel}other{# skedules gestel}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Moenie Steur Nie"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioriteitmodusse"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Word net deur belangrike mense en apps in kennis gestel"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Kies aktiveringtipe"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Tyd"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Bv. \"09:30-17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Bv. \"Persoonlike kalender\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Beperk onderbrekings"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Skakel Moenie steur nie aan"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Wekkers en mediaklanke kan onderbreek"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Skedules"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Vee skedules uit"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Vee uit"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Wysig"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Skedules"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Skedule"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Voeg ’n kalender by"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Gebruik jou kalender"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Skedule"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Stel ’n skedule"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Skedule"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> uur, <xliff:g id="MINUTES">%2$d</xliff:g> min."</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Skedule"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Maak foon op sekere tye stil"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Laat onderbrekings wat klanke maak toe"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokkeer visuele steurings"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Laat visuele tekens toe"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Kennisgewings wat jou kan bereik"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Bly gefokus"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Bykomende handelinge"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Vertooninstellings"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Vertoon opsies"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"aktiveer donkertema"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Wissel die bedryfstelsel en apps om ligte teks op ’n donker agtergrond te verkies, wat makliker vir die oë kan wees en aansienlike batterybesparings op sekere toestelle bied"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Geen skermveranderinge nie}=1{{effect_1}}=2{{effect_1} en {effect_2}}=3{{effect_1}, {effect_2} en {effect_3}}other{{effect_1}, {effect_2}, en nog #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter onderbrekings"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Geen onderbrekings is gefilter nie"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Vertoon opsies vir gefiltreerde kennisgewings"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Wanneer Moenie Steur Nie aan is"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Geen klank van kennisgewings af nie"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorieë"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Ander"</string>
<string name="no_channels" msgid="4716199078612071915">"Hierdie program het nie enige kennisgewings geplaas nie"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Wys ongebruikte kategorieë"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Bykomende instellings in die app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Wys ongebruikte kategorieë"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Versteek ongebruikte kategorieë"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Geselekteerde apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Geen"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Alles"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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_add_header" msgid="3201829605075172536">"Kies meer apps"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Verandering aan wekkers vir slegs een uur tot {time}}other{Verandering aan wekkers vir slegs # uur tot {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Verander tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> na net wekkers"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Verander na onderbreek altyd"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Hernoem"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Verander ikoon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Verander ikoon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Waarskuwing"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Maak toe"</string>
<string name="device_feedback" msgid="5351614458411688608">"Stuur terugvoer oor hierdie toestel"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Hierdie toestel se data-afdeling moet na ext4 omgeskakel word voordat die 16KB-ontwikkelaaropsie gebruik word. Die sagteware se integriteit kan nie in hierdie modus gewaarborg word nie, en enige data wat op die foon gestoor word terwyl die selflaaiprogram ontsluit is, is dalk in gevaar. Die aktivering van die 16KB-opsie sal daarna nog een herselflaai vereis. Sodra jy in hierdie modus is, kan jy heen en weer oorskakel tussen 4KB- en 16KB-modus met ’n enkele herselflaai. Sommige kenmerke sal gedeaktiveer word in hierdie modusse, so sommige apps sal dalk nie werk nie. Jy sal moet terugskakel na die 4KB-modus en dan die selflaaiprogram moet sluit wat ’n fabriekterugstelling op die toestel doen om die toestel na produksiemodus terug te neem. Jy moet die OEM-ontsluiting in Ontwikkelaaropsies deaktiveer nadat die toestel suksesvol in Android geselflaai het. Die toestel sal skoongevee word en die lêerstelsel sal ná bevestiging na ext4 verander word. Nadat dit voltooi is, moet jy terugkom om 16KB weer te aktiveer."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Vee alle data uit"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Kon nie herformateer en die data-afdeling na ext4 skoonvee nie."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Selflaaiprogram-ontsluiting word vir 16KB-modus vereis"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Hierdie toestel moet die selflaaiprogram ontsluit hê voordat die 16KB-ontwikkelaaropsie gebruik word. Die sagteware se integriteit kan nie in hierdie modus gewaarborg word nie, en enige data wat op die foon gestoor word terwyl die selflaaiprogram ontsluit is, is dalk in gevaar. Alle gebruikerdata en -instellings sal skoongevee word wanneer 16KB-modus geaktiveer word. Sodra die selflaaiprogram ontsluit is, sal die aktivering van die 16KB-opsie twee herselflaaie vereis. Sodra jy in hierdie modus is, kan jy heen en weer oorskakel tussen 4KB- en 16KB-modus met ’n enkele herselflaai. Sommige kenmerke sal gedeaktiveer word in hierdie modusse, so sommige apps sal dalk nie werk nie. Jy sal moet terugskakel na die 4KB-modus en dan die toestel moet sluit met die OEM/selflaaiprogramslot (wat ’n fabriekterugstelling op die toestel doen) om die toestel na produksiemodus terug te neem. Ontsluit asseblief die selflaaiprogram en probeer weer. Jy kan instruksies sien oor hoe om dit te doen by <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Gebruik 4KB-bladsy-agnostiese modus"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Jy is in die 4KB-modus van die bladsy-agnostiese modus. Die sagteware se integriteit kan nie in hierdie modus gewaarborg word nie, en enige data wat op die foon gestoor word terwyl die selflaaiprogram ontsluit is, is dalk in gevaar. Sommige kenmerke sal gedeaktiveer word in hierdie modusse, so sommige apps sal dalk nie werk nie. Jy moet die selflaaiprogram van die toestel sluit om weer in die produksiemodus te gaan. Tik om meer te lees."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Jy is in die 4KB-modus van die bladsy-agnostiese modus. Die sagteware se integriteit kan nie in hierdie modus gewaarborg word nie, en enige data wat op die foon gestoor word terwyl die selflaaiprogram ontsluit is, is dalk in gevaar. Sommige kenmerke sal gedeaktiveer word in hierdie modusse, so sommige apps sal dalk nie werk nie. Jy moet die selflaaiprogram van die toestel sluit om weer in die produksiemodus te gaan. Dit sal weer ’n fabriekterugstelling op die toestel doen en dit na produksie-instellings terugstel. Jy moet die OEM-ontsluiting in Ontwikkelaaropsies deaktiveer nadat die toestel suksesvol in Android geselflaai het. As die toestel nie in Android kon selflaai nie of onstabiel is, moet jy die toestel herflits met die jongste fabriekstelselkopie vanaf <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> of gebruik <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> en kies “Vee toestel skoon”, “Sluit selflaaiprogram” en “Verpligflits alle afdelings”."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Gebruik 16KB-bladsy-agnostiese modus"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Jy is in die 16KB-modus van die bladsy-agnostiese modus. Die sagteware se integriteit kan nie in hierdie modus gewaarborg word nie, en enige data wat op die foon gestoor word terwyl die selflaaiprogram ontsluit is, is dalk in gevaar. Sommige kenmerke sal gedeaktiveer word in hierdie modusse, so sommige apps sal dalk nie werk nie. Jy moet terugskakel na 4K-modus en dan die selflaaiprogram van die toestel sluit om weer in die produksiemodus te gaan. Tik om meer te lees."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Jy is in die 16KB-modus van die bladsy-agnostiese modus. Die sagteware se integriteit kan nie in hierdie modus gewaarborg word nie, en enige data wat op die foon gestoor word terwyl die selflaaiprogram ontsluit is, is dalk in gevaar. Sommige kenmerke sal gedeaktiveer word in hierdie modusse, so sommige apps sal dalk nie werk nie. Jy moet terugskakel na 4K-modus en dan die selflaaiprogram van die toestel sluit om weer in die produksiemodus te gaan. Dit sal weer ’n fabriekterugstelling op die toestel doen en dit na produksie-instellings terugstel. Jy moet die OEM-ontsluiting in Ontwikkelaaropsies deaktiveer nadat die toestel suksesvol in Android geselflaai het. As die toestel nie in Android kon selflaai nie of onstabiel is, moet jy die toestel herflits met die jongste fabriekstelselkopie vanaf <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> of gebruik <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> en kies “Vee toestel skoon”, “Sluit selflaaiprogram” en “Verpligflits alle afdelings”."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB-bladsy-agnostiese modus"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lees meer"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Foutverslaghanteerder"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Gebruik appvasspeld"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Gebruik ontwikkelaaropsies"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Gebruik drukdiens"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Laat veelvuldige gebruikers toe"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"laat toe, veelvuldig, gebruiker, baie"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"veelvuldige, gebruikers, profiele, mense, rekeninge, wissel, baie"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Gebruik draadlose ontfouting"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml
index 0380e61..7243712 100644
--- a/res/values-am/arrays.xml
+++ b/res/values-am/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"የመኝታ ሰዓት"</item>
+ <item msgid="4152450357280759894">"በመንዳት ላይ"</item>
+ <item msgid="7096549258219399423">"መሳጭ"</item>
+ <item msgid="2760716776980432977">"የሚተዳደር"</item>
+ <item msgid="601734478369121764">"ኮከብ"</item>
+ <item msgid="6243809315432780521">"ቀን መቁጠሪያ"</item>
+ <item msgid="4913577903148415331">"ጊዜ"</item>
+ <item msgid="3653377604690057780">"ቲያትር"</item>
+ <item msgid="3843711267408385410">"አበባ"</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 5ba79e6..e7a5b76 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"የመስማት ችሎታ መሣሪያ ቅንብሮች"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"አቋራጭ፣ የመስሚያ ረዳት ተኳዃኝነት"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ቅድመ-ቅምጥ"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"በኦዲዮሎጂስትዎ ፕሮግራም የተደረጉ ምንም ቅድመ-ቅምጦች የሉም"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ቅድመ-ቅምጥን ማዘመን አልተቻለም"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"የኦዲዮ ውጽዓት"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ስለኦዲዮ ውፅዓት"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ስለ በእጅ ሰዓት መክፈቻ የበለጠ ይወቁ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"የእጅ ሰዓትን አክል"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"የእጅ ሰዓትን አስወግድ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"የጣት አሻራ እና በመልክ መክፈት"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"በመልክ እና በጣት አሻራ መክፈት"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"በመልክ እና በጣት አሻራ መክፈቻ ለሥራ"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ውቅረት ያስፈልጋል"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"መልክ እና የጣት አሻራዎች ታክለዋል"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"መሣሪያ እንደገና ይጀምር?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ዝርዝር የኤንኤፍሲ ምዝግብ ማስታወሻ ለግንባታ ዓላማዎች ብቻ የታሰበ ነው። በሳንካ ሪፖርቶች ውስጥ የግል መረጃን ሊይዝ የሚችል ተጨማሪ የኤንኤፍሲ ውሂብ ተካትቷል። ይህን ቅንብር ለመለወጥ መሣሪያዎን እንደገና ያስጀምሩ።"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ዳግም አስጀምር"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"መስታወት"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ገመድ-አልባ ማሳየትን ያንቁ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ተለማማጅ"</string>
<string name="brightness" msgid="6216871641021779698">"የብሩህነት ደረጃ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"ተለማማጅ ብሩህነት"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"ስለ ተለዋዋጭ ብሩህነት"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"የማያዎ ብሩህነት በራስ-ሰር ከእርስዎ አካባቢ እና እንቅስቃሴዎች ጋር ጋር ይስተካከላል። ተለማማጅ ብሩህነት ምርጫዎችዎን እንዲያውቅ ለማገዝ ተንሸራታቹን ራስዎ ማንቀሳቀስ ይችላሉ።"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"አብራ"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ጠፍቷል"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ለማንኛውም ቀጥል"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ይቅር"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"የማጉያ ቅንብሮች"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"በአንድ ጣት መጎተት"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"ማጉያን በ1 ጣት ያንቀሳቅሱ"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"በማያ ገጹ አካባቢ ለመንቀሳቀስ 1 ጣት ይጎትቱ"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"አንድ ጣትን በመጎተት የማጉያ ቦታውን ያንቀሳቅሱ።"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ሁለት ጣቶችን በመጎተት የማጉያ ቦታውን ያንቀሳቅሱ።"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"የተወሰነ የማያ ገጹን ክፍል ብቻ በማጉላት ላይ ሳለ አይገኝም"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ለማጉላት አንድ አዝራር መታ ያድርጉ"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ይዘቱን ትልቅ ለማድረግ በፍጥነት በማያ ገጹ ላይ ያጉሉ"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ለማጉላት፦</b><br/> {0,number,integer}. ማጉላትን ለመጀመር አቋራጭ ይጠቀሙ<br/> {1,number,integer}. በማያ ገፅ ላይ መታ ያድርጉ<br/> {2,number,integer}. በማያ ገጹ ዙሪያ ላይ ለመንቀሳቀስ በ2 ጣቶች ይጎትቱ<br/> {3,number,integer}. ማጉላትን ለማስተካከል በ2 ጣቶች ይቆንጥጡ<br/> {4,number,integer}. ማጉላትን ለማስቆም አቋራጭ ይጠቀሙ<br/><br/> <b>ለጊዜው ለማጉላት፡-</b><br/> {0,number,integer}. የእርስዎ የማጉላት ዓይነት ወደ ሙሉ ማያ ገፅ መቀናበሩን ያረጋግጡ<br/> {1,number,integer}. ማጉላትን ለመጀመር አቋራጭ ይጠቀሙ<br/> {2,number,integer}. በማያ ገጹ ማንኛውም ቦታ ላይ ነክተው ይያዙ<br/> {3,number,integer}. በማያ ገጹ ዙሪያ ላይ ለመንቀሳቀስ በጣት ይጎትቱ<br/> {4,number,integer}. ማጉላትን ለማስቆም ጣት ያንሱ"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>ለማጉላት፦</b><br/> {0,number,integer}። ማጉላትን ለመጀመር አቋራጭ ይጠቀሙ<br/> {1,number,integer}። በማያ ገጽ ላይ መታ ያድርጉ<br/> {2,number,integer}። በማያ ገፁ ዙሪያ ለመንቀሳቀስ 2 ጣቶች ይጎትቱ<br/> {3,number,integer}። ማጉላትን ለማስተካከል በ2 ጣቶች ይቆንጥጡ<br/> {4,number,integer}። ማጉላት ለማቆም አቋራጭ ይጠቀም<br/><br/> እንዲሁም በጊዜያዊነት ማጉላት እና ሌሎችንም ማድረግ ይችላሉ።"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>ለማጉላት፦</b><br/> {0,number,integer}። ማጉላትን ለመጀመር አቋራጭ ይጠቀሙ<br/> {1,number,integer}። በማያ ገጽ ላይ መታ ያድርጉ<br/> {2,number,integer}። በማያ ገፁ ዙሪያ ለመንቀሳቀስ 1 ወይም 2 ጣቶች ይጎትቱ<br/> {3,number,integer}። ማጉላትን ለማስተካከል በ2 ጣቶች ይቆንጥጡ<br/> {4,number,integer}። ማጉላት ለማቆም አቋራጭ ይጠቀም<br/><br/> እንዲሁም በጊዜያዊነት ማጉላት እና ሌሎችንም ማድረግ ይችላሉ።"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"ማጉያ ሲበራ ማያ ገጽዎን ማጉላት ይችላሉ።\n\n"<b>"ለማጉላት"</b>"፣ ማጉያን ያስጀምሩ፣ ከዚያ በማያ ገጹ ማንኛውም ክፍል ላይ መታ ያድርጉ።\n"<ul><li>"ለማሸብለል 2 ወይም ተጨማሪ ጣቶችን ይጎትቱ"</li>\n<li>"ማጉላትን ለማስተካከል በ2 ወይም ተጨማሪ ጣቶችን ይቆንጥጡ"</li></ul>\n\n<b>"ለጊዜው ለማጉላት"</b>"፣ ማጉላትን ይጀምሩ፣ በመቀጠል በማያ ገጹ ላይ በማናቸውም ቦታ ላይ ነካ ያድርጉ እና ይያዙ።\n"<ul><li>"በማያ ገጹ ላይ ለማንቀሳቀስ ይጎትቱ"</li>\n<li>"ከማጉላት ለመውጣት ጣትን ያንሡ"</li></ul>\n\n"ቁልፍ ሰሌዳውን ወይም የአሰሳ አሞሌውን ማጉላት አይችሉም።"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"ገፅ <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">"የተደራሽነት አዝራር አቋራጭ"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{ምንም}=1{1 መርሐግብር ተቀናብሯል}one{# መርሐግብሮች ተቀናብረዋል}other{# መርሐግብሮች ተቀናብረዋል}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"አይረብሹ"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"ቅድሚያ ሁነታዎች"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"በአስፈላጊ ሰዎች እና መተግበሪያዎች ብቻ ማሳወቂያን ያግኙ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"የማግበሪያ ዓይነት ይምረጡ"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"ጊዜ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ለምሳሌ «9:30 – 5:00 ከሰዓት»"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ቀን መቁጠሪያ"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ለምሳሌ «የግል ቀን መቁጠሪያ»"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"መቆራረጦችን ይገድቡ"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"መርሐግብሮችን ሰርዝ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ሰርዝ"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3340,6 +3396,8 @@
<string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"መርሐግብር ያቀናብሩ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
+ <skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"መርሐግብር"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"በተወሰኑ ሰዓታት ላይ የስልክ ድምፅ አጥፋ"</string>
<string name="zen_mode_automation_suggestion_summary" msgid="1946750790084170826">"የአትረብሽ ደንቦችን ያቀናብሩ"</string>
@@ -3349,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ድምፅ የሚፈጥሩ ረብሻዎችን ፍጠር"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ምስላዊ ረብሻዎችን አግድ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ምስላዊ ምልክቶችን ፍቀድ"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"እርስዎ ጋር መድረስ የሚችሉ ማሳወቂያዎች"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"እንዳተኮሩ ይቆዩ"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"ተጨማሪ እርምጃዎች"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"የማሳያ ቅንብሮች"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"የማሳያ አማራጮች"</string>
@@ -3366,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ጥቁር ገጽታ አንቃ"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"በጨለማ ዳራ ላይ ብርሃን ጽሁፍን ለመምረጥ ሥርዓተ ክወናውን እና መተግበሪያዎችን ይቀይሩ፣ ይህም ለዓይኖች ቀላል እና በአንዳንድ መሣሪያዎች ላይ ጉልህ የሆነ የባትሪ ኃይል ቁጠባ ይሰጣል"</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="mode_notification_filter_title" msgid="443728483176031977">"የማጣሪያ መቆራረጦች"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"ምንም መቆራረጦች አልተጣሩም"</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>
@@ -3662,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ጥቅም ላይ ያልዋሉ ምድቦችን አሳይ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ጥቅም ላይ ያልዋሉ ምድቦችን ደብቅ"</string>
@@ -3771,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"ሁሉም"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -4864,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"የ16 ኪባ ገንቢ አማራጭን ከመጠቀምዎ በፊት የዚህ መሣሪያ የውሂብ ክፍልፍል ወደ ext4 መቀየር አለበት። የሶፍትዌር ታማኝነት በዚህ ሁነታ ሊረጋገጥ አይችልም፣ እና bootloader ክፍት ሆኖ ሳለ በስልኩ ላይ የተከማቸ ማንኛውም መረጃ ለአደጋ ሊጋለጥ ይችላል። የ16 ኪባ አማራጩን ማግበር ከዚህ በኋላ አንድ ተጨማሪ ዳግም ማስነሳት ያስፈልገዋል። አንዴ በዚህ ሁነታ ላይ ከሆኑ፣ በአንድ ዳግም ማስነሳት ከ4 ኪባ ወደ 16 ኪባ ሁነታ መካከል መቀያየር ይችላሉ። አንዳንድ ባህሪያት በእነዚህ ሁነታዎችላይ ይሰናከላሉ፣ ስለዚህ አንዳንድ መተግበሪያዎች ላይሰሩ ይችላሉ። መሣሪያውን ወደ የምርት ሁነታ መመለስ እንዲችሉ ወደ የ4 ኪባ ሁነታ መመለስ እና bootloaderን መቆለፍ ይኖርብዎታል፣ ይህም መሣሪያውን ወደ ፋብሪካ ዳግም ያስጀምረዋል። መሣሪያው በተሳካ ሁኔታ ወደ Android ከተነሳ በኋላ በገንቢ አማራጮች ውስጥ የOEM መክፈቻን ያሰናክሉ። መሣሪያው ይጠረጋል እና የፋይል ሥርዓቱ ከተረጋገጠ በኋላ ወደ ext4 ይቀየራል። ይህ ከተጠናቀቀ በኋላ እባክዎ 16 ኪባን እንደገና ለማንቃት ይመለሱ።"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ሁሉንም ውሂብ ደምስስ"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ቅርጸት መሥራት እና የውሂብ ክፍልፋይን ወደ ext4 መጥረግ አልተሳካም።"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"ለ16 ኪባ ሁነታ bootloader ክፍት መሆን አለበት"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"ይህ መሣሪያ የ16 ኪባ ገንቢ አማራጩን ከመጠቀሙ በፊት bootloaderን መክፈት አለበት። የሶፍትዌር ታማኝነት በዚህ ሁነታ ሊረጋገጥ አይችልም፣ እና bootloader ክፍት ሆኖ ሳለ በስልኩ ላይ የተከማቸ ማንኛውም መረጃ ለአደጋ ሊጋለጥ ይችላል። የ16 ኪባ ሁነታ ሲነቃ ሁሉም የተጠቃሚ ውሂብ እና ቅንብሮች ይጠረጋሉ። አንዴ bootloader ከተከፈተ በኋላ የ16 ኪባ አማራጩን ለማንቃት ሁለት ዳግም ማስነሳት ያስፈልገዋል። አንዴ በዚህ ሁነታ ላይ ከሆኑ፣ በአንድ ዳግም ማስነሳት ከ4 ኪባ ወደ 16 ኪባ ሁነታ መካከል መቀያየር ይችላሉ። አንዳንድ ባህሪያት በእነዚህ ሁነታዎችላይ ይሰናከላሉ፣ ስለዚህ አንዳንድ መተግበሪያዎች ላይሰሩ ይችላሉ። መሣሪያውን ወደ የምርት ሁነታ መመለስ እንዲችሉ ወደ የ4 ኪባ ሁነታ መመለስ እና OEM/bootloader መቆለፍ ይኖርብዎታል፣ ይህም መሣሪያውን ወደ (ፋብሪካ ዳግም ያስጀምረዋል)። እባክዎ bootloaderን ይክፈቱ እና እንደገና ይሞክሩ። <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> ላይ ይህንን እንዴት እንደሚያደርጉ መመሪያዎችን ማየት ይችላሉ"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"የ4 ኪባ ለሁሉም ገጽ ተስማሚ ሁነታን በመጠቀም ላይ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"የሁሉም ገጽ ተስማሚ ሁነታ 4 ኪባ ሁነታ ውስጥ ነዎት። የሶፍትዌር ታማኝነት በዚህ ሁነታ ሊረጋገጥ አይችልም፣ እና bootloader ክፍት ሆኖ ሳለ በስልኩ ላይ የተከማቸ ማንኛውም መረጃ ለአደጋ ሊጋለጥ ይችላል። አንዳንድ ባህሪያት በእነዚህ ሁነታዎችላይ ይሰናከላሉ፣ ስለዚህ አንዳንድ መተግበሪያዎች ላይሰሩ ይችላሉ። ወደ የምርት ሁነታ እንደገና ለመግባት የመሣሪያውን bootloader መቆለፍ አለብዎት። የበለጠ ለማንበብ መታ ያድርጉ።"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"የሁሉም ገጽ ተስማሚ ሁነታ 4 ኪባ ሁነታ ውስጥ ነዎት። የሶፍትዌር ታማኝነት በዚህ ሁነታ ሊረጋገጥ አይችልም፣ እና bootloader ክፍት ሆኖ ሳለ በስልኩ ላይ የተከማቸ ማንኛውም መረጃ ለአደጋ ሊጋለጥ ይችላል። አንዳንድ ባህሪያት በእነዚህ ሁነታዎችላይ ይሰናከላሉ፣ ስለዚህ አንዳንድ መተግበሪያዎች ላይሰሩ ይችላሉ። ወደ የምርት ሁነታ እንደገና ለመግባት የመሣሪያውን bootloader መቆለፍ አለብዎት። ይህ መሣሪያውን ወደ የፋብሪካ ዳግም ያስጀምረዋል እና የምርት ቅንብሮችን ወደነበሩበት ይመልሳል። መሣሪያው በተሳካ ሁኔታ ወደ Android ከተነሳ በኋላ በገንቢ አማራጮች ውስጥ የOEM መክፈቻን ያሰናክሉ። መሣሪያው ወደ Android መነሳት ካልቻለ ወይም ያልተረጋጋ ከሆነ መሣሪያውን <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/ምስሎች</a> በመጡ የቅርብ ጊዜዎቹ የፋብሪካ ምስሎች ዳግም ፍላሽ ያድርጉት ወይም <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ይጠቀሙ እና «መሣሪያን ጥረግ»፣ «Bootloaderን ቆልፍ» እና «የሁሉንም ክፍልፋዮች ፍላሽ አስገድድ» የሚለውን ይምረጡ።"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"የ16 ኪባ ለሁሉም ገጽ ተስማሚ ሁነታን በመጠቀም ላይ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"የሁሉም ገጽ ተስማሚ ሁነታው የ16 ኪባ ሁነታ ላይ ነዎት። የሶፍትዌር ታማኝነት በዚህ ሁነታ ሊረጋገጥ አይችልም፣ እና bootloader ክፍት ሆኖ ሳለ በስልኩ ላይ የተከማቸ ማንኛውም መረጃ ለአደጋ ሊጋለጥ ይችላል። አንዳንድ ባህሪያት በእነዚህ ሁነታዎችላይ ይሰናከላሉ፣ ስለዚህ አንዳንድ መተግበሪያዎች ላይሰሩ ይችላሉ። ወደ የምርት ሁነታ እንደገና ለመግባት ወደ የ4 ኪባ ሁነታ መመለስ እና ከዚያ የመሣሪያውን bootloader መቆለፍ አለብዎት። የበለጠ ለማንበብ መታ ያድርጉ።"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"የሁሉም ገጽ ተስማሚ ሁነታው የ16 ኪባ ሁነታ ላይ ነዎት። የሶፍትዌር ታማኝነት በዚህ ሁነታ ሊረጋገጥ አይችልም፣ እና bootloader ክፍት ሆኖ ሳለ በስልኩ ላይ የተከማቸ ማንኛውም መረጃ ለአደጋ ሊጋለጥ ይችላል። አንዳንድ ባህሪያት በእነዚህ ሁነታዎችላይ ይሰናከላሉ፣ ስለዚህ አንዳንድ መተግበሪያዎች ላይሰሩ ይችላሉ። ወደ የምርት ሁነታ እንደገና ለመግባት ወደ የ4 ኪባ ሁነታ መመለስ እና ከዚያ የመሣሪያውን bootloader መቆለፍ አለብዎት። ይህ መሣሪያውን ወደ የፋብሪካ ዳግም ያስጀምረዋል እና የምርት ቅንብሮችን ወደነበሩበት ይመልሳል። መሣሪያው በተሳካ ሁኔታ ወደ Android ከተነሳ በኋላ በገንቢ አማራጮች ውስጥ የOEM መክፈቻን ያሰናክሉ። መሣሪያው ወደ Android መነሳት ካልቻለ ወይም ያልተረጋጋ ከሆነ መሣሪያውን <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/ምስሎች</a> በመጡ የቅርብ ጊዜዎቹ የፋብሪካ ምስሎች ዳግም ፍላሽ ያድርጉት ወይም <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ይጠቀሙ እና «መሣሪያን ጥረግ»፣ «Bootloaderን ቆልፍ» እና «የሁሉንም ክፍልፋዮች ፍላሽ አስገድድ» የሚለውን ይምረጡ።"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"የ16 ኪባ ለሁሉም ገጽ ተስማሚ ሁነታ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ተጨማሪ ያንብቡ"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"የሳንካ ሪፖርት ተቆጣጣሪ"</string>
@@ -5003,14 +5069,15 @@
<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="6686858308083037810">"በርካታ ተጠቃሚዎችን ይፍቀዱ"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
<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">"ኤንኤፍሲን ይጠቀሙ"</string>
- <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"ተለዋዋጭ ብሩህነትን ይጠቀሙ"</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>
<string name="smart_forwarding_title" msgid="8368634861971949799">"ብልህ ማስተላለፍ"</string>
@@ -5347,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
index 31c9970..10b3977 100644
--- a/res/values-ar/arrays.xml
+++ b/res/values-ar/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"وقت النوم"</item>
+ <item msgid="4152450357280759894">"القيادة"</item>
+ <item msgid="7096549258219399423">"تجربة غامرة"</item>
+ <item msgid="2760716776980432977">"تجربة مُدارة"</item>
+ <item msgid="601734478369121764">"نجمة"</item>
+ <item msgid="6243809315432780521">"التقويم"</item>
+ <item msgid="4913577903148415331">"الوقت"</item>
+ <item msgid="3653377604690057780">"مسرح"</item>
+ <item msgid="3843711267408385410">"زهرة"</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 9c40d2e..8fa7b11 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"إعدادات سماعات الأذن الطبية"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"الاختصار، التوافق مع السماعات الطبية"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"الإعدادات المسبقة"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"لا يوجد أي إعداد مسبق مُبرمج من قِبَل أخصائي السمعيات"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"تعذَّر تعديل الإعداد المسبق"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"مصدر إخراج الصوت"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"لمحة عن إخراج الصوت"</string>
@@ -383,7 +384,7 @@
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_title_2" msgid="2580899232734177771">"آلية العمل"</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_2" msgid="5909924864816776516">"تنشئ ميزة \"فتح الجهاز ببصمة الإصبع\" نموذجًا فريدًا من بصمة إصبعك لإثبات هويتك. لإنشاء نموذج بصمة الإصبع هذا أثناء عملية الإعداد، عليك تسجيل صور لبصمة إصبعك من جهات مختلفة."</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_2" msgid="3493356605815124807">"تنشئ ميزة \"فتح الجهاز ببصمة الإصبع\" نموذجًا فريدًا من بصمة إصبع طفلك لإثبات هويته. لإنشاء نموذج بصمة الإصبع هذا أثناء الإعداد، على طفلك تسجيل صور لبصمة إصبعه من جهات مختلفة."</string>
- <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_6" msgid="5314031490467481499">"للحصول على أفضل النتائج، استخدم واقي شاشة مُعتمَد ويحمل شعار Made for Google. قد لا تعمل بصمة إصبعك، مع واقيات الشاشة الأخرى."</string>
+ <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_6" msgid="5314031490467481499">"للحصول على أفضل النتائج، استخدم واقي شاشة مُعتمَد ويحمل شعار Made for Google. قد لا تعمل بصمة إصبعك مع واقيات الشاشة الأخرى."</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_6" msgid="3563942520716110478">"للحصول على أفضل النتائج، استخدم واقي شاشة مُعتمَد ويحمل شعار Made for Google. قد لا تعمل بصمة إصبع طفلك مع واقيات الشاشة الأخرى."</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_message_learn_more" msgid="5856010507790137793"></string>
<string name="security_settings_activeunlock_preference_title" msgid="4257580421087062228">"فتح الهاتف من الساعة"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"مزيد من المعلومات عن ميزة \"فتح الهاتف من الساعة\""</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"إضافة ساعة"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"إزالة ساعة"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"فتح الجهاز بالتعرّف على الوجه وبصمة الإصبع"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"فتح الجهاز بالتعرف على الوجه وببصمة الإصبع"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"فتح قفل ملف العمل ببصمة الإصبع وبالتعرف على الوجه"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"يجب ضبط الإعدادات"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"تمت إضافة وجه وبصمات أصابع."</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -776,7 +775,7 @@
<string name="lock_last_pattern_attempt_before_wipe_profile" msgid="2479195488386373253">"عند إدخال نقش غير صحيح في المحاولة التالية، سيتم حذف ملفك الشخصي للعمل وبياناته"</string>
<string name="lock_last_pin_attempt_before_wipe_profile" msgid="7086428013814722436">"عند إدخال رقم تعريف شخصي غير صحيح في المحاولة التالية، سيتم حذف ملفك الشخصي للعمل وبياناته"</string>
<string name="lock_last_password_attempt_before_wipe_profile" msgid="253673907244112643">"عند إدخال كلمة مرور غير صحيحة في المحاولة التالية، سيتم حذف ملفك الشخصي للعمل وبياناته"</string>
- <string name="lockpassword_password_too_short" msgid="1938086368137797700">"{count,plural, =1{يجب أن تحتوي كلمة المرور على حرف واحد على الأقل}zero{يجب ألّا يقل عدد الحروف عن # حرف}two{يجب ألّا يقل عدد الحروف عن حرفَين}few{يجب ألّا يقل عدد الحروف عن # أحرف}many{يجب ألّا يقل عدد الحروف عن # حرفًا}other{يجب ألّا يقل عدد الحروف عن # حرف}}"</string>
+ <string name="lockpassword_password_too_short" msgid="1938086368137797700">"{count,plural, =1{يجب أن تحتوي كلمة المرور على حرف واحد على الأقل}zero{يجب ألّا يقل عدد الحروف عن #}two{يجب ألّا يقل عدد الحروف عن حرفَين}few{يجب ألّا يقل عدد الحروف عن #}many{يجب ألّا يقل عدد الحروف عن #}other{يجب ألّا يقل عدد الحروف عن #}}"</string>
<string name="lockpassword_password_too_short_all_numeric" msgid="4301294924022401502">"{count,plural, =1{في حال استخدام الأرقام فقط، يجب أن تحتوي كلمة المرور على رقم واحد على الأقل.}zero{في حال استخدام الأرقام فقط، يجب أن تحتوي كلمة المرور على # رقم على الأقل.}two{في حال استخدام الأرقام فقط، يجب أن تحتوي كلمة المرور على رقمَين على الأقل.}few{في حال استخدام الأرقام فقط، يجب أن تحتوي كلمة المرور على # أرقام على الأقل.}many{في حال استخدام الأرقام فقط، يجب أن تحتوي كلمة المرور على # رقمًا على الأقل.}other{في حال استخدام الأرقام فقط، يجب أن تحتوي كلمة المرور على # رقم على الأقل.}}"</string>
<string name="lockpassword_pin_too_short" msgid="8910105226463085689">"{count,plural, =1{يجب أن يحتوي رقم التعريف الشخصي على رقم واحد على الأقل.}zero{يجب أن يحتوي رقم التعريف الشخصي على # رقم على الأقل.}two{يجب أن يحتوي رقم التعريف الشخصي على رقمَين على الأقل.}few{يجب أن يحتوي رقم التعريف الشخصي على # أرقام على الأقل.}many{يجب أن يحتوي رقم التعريف الشخصي على # رقمًا على الأقل.}other{يجب أن يحتوي رقم التعريف الشخصي على # رقم على الأقل.}}"</string>
<string name="lockpassword_pin_too_short_autoConfirm_extra_message" msgid="3271351502900762571">"{count,plural, =1{يجب أن يحتوي رقم التعريف الشخصي على رقم واحد على الأقل ولكن يُنصَح بأن يكون مكوّنًا من {minAutoConfirmLen} أرقام لمزيد من الأمان}zero{يجب أن يحتوي رقم التعريف الشخصي على # رقم على الأقل ولكن يُنصَح بأن يكون مكوّنًا من {minAutoConfirmLen} أرقام لمزيد من الأمان}two{يجب أن يحتوي رقم التعريف الشخصي على رقمَين على الأقل ولكن يُنصَح بأن يكون مكوّنًا من {minAutoConfirmLen} أرقام لمزيد من الأمان}few{يجب أن يحتوي رقم التعريف الشخصي على # أرقام على الأقل ولكن يُنصَح بأن يكون مكوّنًا من {minAutoConfirmLen} أرقام لمزيد من الأمان}many{يجب أن يحتوي رقم التعريف الشخصي على # رقمًا على الأقل ولكن يُنصَح بأن يكون مكوّنًا من {minAutoConfirmLen} أرقام لمزيد من الأمان}other{يجب أن يحتوي رقم التعريف الشخصي على # رقم على الأقل ولكن يُنصَح بأن يكون مكوّنًا من {minAutoConfirmLen} أرقام لمزيد من الأمان}}"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"هل تريد إعادة تشغيل الجهاز؟"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"تسجيل الدخول عبر اتصال قصير المدى (NFC) مفصَّل مصمَّم لأغراض التطوير فقط. يتم تضمين بيانات إضافية عن الاتصال القصير المدى (NFC) في تقارير الأخطاء وقد تحتوي على معلومات خاصة. عليك إعادة تشغيل جهازك لتغيير هذا الخيار."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"إعادة التشغيل"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"البث"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"انعكاس"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"تفعيل عرض شاشة لاسلكي"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"توافقية"</string>
<string name="brightness" msgid="6216871641021779698">"مستوى السطوع"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"السطوع التكيُّفي"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"لمحة عن ميزة \"السطوع التكيُّفي\""</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"سيتم ضبط سطوع الشاشة تلقائيًا حسب البيئة المحيطة والأنشطة. ويمكنك تحريك شريط التمرير يدويًا لضبط السطوع التكيُّفي حسبما تفضّل."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"مفعّل"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"غير مفعّل"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"المتابعة على أيّ حال"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"إلغاء"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"إعدادات التكبير"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"التحريك بإصبع واحد"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"حرِّك المكبِّر بإصبع واحد"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"اسحب بإصبع واحد للتنقل على الشاشة"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"يمكنك نقل منطقة التكبير عن طريق سحب إصبع واحد."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"يمكنك نقل منطقة التكبير عن طريق سحب إصبعين."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"لا تتوفّر هذه الميزة عند تكبير جزء من الشاشة فقط"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"انقر على أحد الأزرار للتكبير"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"يمكنك تكبير الشاشة بسرعة لتكبير المحتوى"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>لتكبير الشاشة، نفِّذ الخطوات التالية:</b><br/> {0,number,integer}. استخدِم الاختصار المخصّص لبدء تكبير المحتوى<br/> {1,number,integer}. انقر على الشاشة<br/> {2,number,integer}. اسحب إصبعين للتنقّل على الشاشة<br/> {3,number,integer}. باعِد أو قارِب بإصبعين لتعديل مستوى التكبير/التصغير<br/> {4,number,integer}. استخدِم الاختصار المخصّص لإيقاف تكبير المحتوى<br/><br/><b>لتكبير المحتوى مؤقتًا، نفِّذ الخطوات التالية:</b><br/> {0,number,integer}. تأكّد من ضبط نوع التكبير على وضع ملء الشاشة<br/> {1,number,integer}. استخدِم الاختصار المخصّص لبدء تكبير المحتوى<br/> {2,number,integer}. انقر مع الاستمرار على أي مكان على الشاشة<br/> {3,number,integer}. اسحب إصبعك للتنقّل على الشاشة<br/> {4,number,integer}. ارفع إصبعك لإيقاف تكبير الشاشة"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>لتكبير الشاشة:</b><br/> {0,number,integer}. استخدِم الاختصار المخصّص لبدء التكبير<br/> {1,number,integer}. انقر على الشاشة<br/> {2,number,integer}. اسحب بإصبعين للتنقّل على الشاشة<br/> {3,number,integer}. باعِد أو قارِب بإصبعين لتعديل مستوى التكبير أو التصغير<br/> {4,number,integer}. استخدِم الاختصار المخصَّص لإيقاف التكبير<br/><br/> يمكنك أيضًا التكبير بشكل مؤقت وغير ذلك."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>لتكبير الشاشة:</b><br/> {0,number,integer}. استخدِم الاختصار المخصّص لبدء التكبير<br/> {1,number,integer}. انقر على الشاشة<br/> {2,number,integer}. اسحب بإصبع واحد أو إصبعين للتنقّل على الشاشة<br/> {3,number,integer}. باعِد أو قارِب بإصبعين لتعديل مستوى التكبير أو التصغير<br/> {4,number,integer}. استخدِم الاختصار المخصَّص لإيقاف التكبير<br/><br/> يمكنك أيضًا التكبير بشكل مؤقت وغير ذلك."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"عند تفعيل ميزة \"التكبير\"، يمكنك تكبير حجم المحتوى على الشاشة.\n\n"<b>"للتكبير"</b>"، يمكنك تفعيل ميزة \"التكبير\" والنقر بعد ذلك على أي مكان في الشاشة.\n"<ul><li>"يمكنك سحب إصبعين أو أكثر للتمرير."</li>\n<li>"يمكنك ضمّ إصبعين أو أكثر لتعديل حجم المحتوى."</li></ul>\n\n<b>"للتكبير مؤقتًا"</b>"، يمكنك تفعيل ميزة التكبير والنقر مع الاستمرار على أي مكان في الشاشة.\n"<ul><li>"يمكنك السحب للتنقّل داخل الشاشة."</li>\n<li>"يمكنك رفع إصبعك للتصغير."</li></ul>\n\n"لن يكون بإمكانك التكبير على لوحة المفاتيح أو شريط التنقل."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"الصفحة <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">"اختصار زر أدوات تسهيل الاستخدام"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{ما من جداول زمنية}=1{تم ضبط جدول زمني واحد}two{تم ضبط جدولين زمنيين}few{تم ضبط # جداول زمنية}many{تم ضبط # جدولاً زمنيًا}other{تم ضبط # جدول زمني}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"وضع \"عدم الإزعاج\""</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"الأوضاع ذات الأولوية"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ستصلك الإشعارات من الأشخاص المهمّين والتطبيقات المهمّة فقط"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"اختيار نوع التفعيل"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"الوقت"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"على سبيل المثال: \"من 9:30 صباحًا حتى 5:00 بعد الظهر\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"التقويم"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"على سبيل المثال: \"التقويم الشخصي\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"الحد من المقاطعات"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"حذف الجداول الزمنية"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"حذف"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"إضافة تقويم"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"استخدام التقويم"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"وفقًا للجدول الزمني"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ضبط جدول زمني"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"الجدول الزمني"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"كتم صوت الهاتف في أوقات معيّنة"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"السماح بالمقاطعات التي تصدر صوتًا"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"حظر الإشعارات المرئية"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"السماح بالإشارات المرئية"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"الإشعارات التي يمكنها الوصول إليك"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"الحفاظ على التركيز"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"الإجراءات الإضافية"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"إعدادات العرض"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"خيارات العرض"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"تفعيل المظهر الداكن"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"يتم تبديل نظام التشغيل والتطبيقات إلى تفضيل النص الفاتح على الخلفية الداكنة لإراحة العين وتوفير شحن البطارية بشكل ملحوظ في بعض الأجهزة"</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}}few{{effect_1} و{effect_2} و# تغييرات أخرى}many{{effect_1} و{effect_2} و# تغييرًا آخر}other{{effect_1} و{effect_2} و# تغيير آخر}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"فلترة مصادر الإزعاج"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"لا تتم فلترة مصادر الإزعاج"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"عرض الفئات غير المستخدَمة"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"إخفاء الفئات غير المستخدَمة"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"كل التطبيقات"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{التغيير إلى التنبيهات لمدة ساعة واحدة فقط حتى {time}}zero{التغيير إلى التنبيهات لمدة # ساعة فقط حتى {time}}two{التغيير إلى التنبيهات لمدة ساعتَين فقط حتى {time}}few{التغيير إلى التنبيهات لمدة # ساعات فقط حتى {time}}many{التغيير إلى التنبيهات لمدة # ساعة فقط حتى {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"إعادة التسمية"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"تغيير الرمز"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"تغيير الرمز"</string>
<string name="warning_button_text" msgid="1274234338874005639">"تحذير"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"إغلاق"</string>
<string name="device_feedback" msgid="5351614458411688608">"إرسال ملاحظات حول هذا الجهاز"</string>
@@ -4069,7 +4126,7 @@
<string name="storage_summary" msgid="5903562203143572768">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> مستخدمة - <xliff:g id="FREE_SPACE">%2$s</xliff:g> متاحة"</string>
<string name="display_dashboard_summary" msgid="1599453894989339454">"المظهر الداكن وحجم الخط والسطوع"</string>
<string name="memory_summary" msgid="8221954450951651735">"تم استخدام متوسط ذاكرة بحجم <xliff:g id="USED_MEMORY">%1$s</xliff:g> من إجمالي <xliff:g id="TOTAL_MEMORY">%2$s</xliff:g>"</string>
- <string name="users_summary" msgid="8473589474976307510">"تم تسجيل الدخول باسم <xliff:g id="USER_NAME">%1$s</xliff:g>."</string>
+ <string name="users_summary" msgid="8473589474976307510">"تم تسجيل الدخول باسم <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="android_version_summary" msgid="7818952662015042768">"تم التحديث إلى الإصدار <xliff:g id="VERSION">%1$s</xliff:g> من Android."</string>
<string name="android_version_pending_update_summary" msgid="5404532347171027730">"هناك تحديث متوفّر."</string>
<string name="disabled_by_policy_title" msgid="6852347040813204503">"سياسة العمل تحظر هذا الإجراء"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"يجب تحويل قسم البيانات في هذا الجهاز إلى نظام الملفات ext4 لتتمكّن من استخدام الوضع ١٦ كيلوبايت ضِمن خيارات المطوِّرين. وفي هذا الوضع، لا يمكن ضمان سلامة برنامج النظام. وعندما يكون برنامج الإقلاع غير مقفل، قد تصبح بياناتك المخزَّنة على الهاتف معرَّضة للخطر. لتفعيل الخيار ١٦ كيلوبايت، يجب إعادة تشغيل الجهاز مرة أخرى بعد ذلك. بعد تفعيل هذا الوضع، يمكنك التبديل بين الوضعَين ٤ كيلوبايت و١٦ كيلوبايت من خلال إعادة تشغيل الجهاز لمرّة واحدة. سيتم إيقاف بعض الميزات في هذَين الوضعَين، وبالتالي قد لا تعمل بعض التطبيقات. لإعادة الجهاز إلى وضع الإنتاج، عليك التبديل مرة أخرى إلى الوضع ٤ كيلوبايت وقفل برنامج الإقلاع، وسيؤدي ذلك إلى إعادة ضبط الجهاز على الإعدادات الأصلية. بعد تشغيل نظام Android على الجهاز بنجاح، أوقِف الإعداد \"فتح قفل المصنّع الأصلي للجهاز\" ضِمن \"خيارات المطوّرين\". بعد التأكيد، سيتم حجب بيانات الجهاز وتغيير نظام الملفات إلى ext4. بعد إتمام هذه الخطوات، يُرجى إعادة تفعيل الوضع ١٦ كيلوبايت."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"محو جميع البيانات"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"تعذَّر حجب قسم البيانات وإعادة تنسيقه إلى ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"يجب فتح قفل برنامج الإقلاع لتفعيل الوضع 16 كيلوبايت"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"يجب فتح قفل برنامج الإقلاع على هذا الجهاز قبل استخدام الوضع 16 كيلوبايت ضِمن خيارات المطوِّرين. وفي هذا الوضع، لا يمكن ضمان سلامة برنامج النظام. وعندما يكون برنامج الإقلاع غير مقفل، قد تصبح بياناتك المخزَّنة على الهاتف معرَّضة للخطر. وعند تفعيل الوضع 16 كيلوبايت، سيتم حجب كل بيانات المستخدم وإعداداته. بعد فتح قفل برنامج الإقلاع، سيكون عليك إعادة تشغيل الجهاز مرّتين لتفعيل الخيار 16 كيلوبايت. بعد تفعيل هذا الوضع، يمكنك التبديل بين الوضعَين 4 كيلوبايت و16 كيلوبايت من خلال إعادة تشغيل الجهاز لمرّة واحدة. سيتم إيقاف بعض الميزات في هذَين الوضعَين، وبالتالي قد لا تعمل بعض التطبيقات. لإعادة الجهاز إلى وضع الإنتاج، عليك التبديل مرة أخرى إلى الوضع 4 كيلوبايت وقفل برنامج الإقلاع أو إعدادات المصنّع الأصلي للجهاز، وسيؤدي ذلك إلى إعادة ضبط الجهاز على الإعدادات الأصلية. يُرجى فتح قفل برنامج الإقلاع ثم إعادة المحاولة. يمكنك الاطّلاع على تعليمات حول كيفية تنفيذ هذا الإجراء من خلال الانتقال إلى: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"استخدام الوضع ٤ كيلوبايت غير المستند إلى حجم الصفحة"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"جهازك الآن في الوضع ٤ كيلوبايت ضِمن الوضع غير المستند إلى حجم الصفحة. وفي هذا الوضع، لا يمكن ضمان سلامة برنامج النظام. وعندما يكون برنامج الإقلاع غير مقفل، قد تصبح بياناتك المخزَّنة على الهاتف معرَّضة للخطر. سيتم إيقاف بعض الميزات في هذَين الوضعَين، وبالتالي قد لا تعمل بعض التطبيقات. لإعادة تفعيل وضع الإنتاج، عليك قفل برنامج إقلاع الجهاز. انقر لقراءة المزيد."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"جهازك الآن في الوضع ٤ كيلوبايت ضِمن الوضع غير المستند إلى حجم الصفحة. وفي هذا الوضع، لا يمكن ضمان سلامة برنامج النظام. وعندما يكون برنامج الإقلاع غير مقفل، قد تصبح بياناتك المخزَّنة على الهاتف معرَّضة للخطر. سيتم إيقاف بعض الميزات في هذَين الوضعَين، وبالتالي قد لا تعمل بعض التطبيقات. لإعادة تفعيل وضع الإنتاج، عليك قفل برنامج إقلاع الجهاز. سيؤدي هذا الإجراء إلى إعادة ضبط الجهاز على الإعدادات الأصلية لوضع الإنتاج. بعد تشغيل نظام Android على الجهاز بنجاح، أوقِف الإعداد \"فتح قفل المصنّع الأصلي للجهاز\" ضِمن \"خيارات المطوّرين\". إذا تعذَّر تشغيل نظام Android أو كان يعمل بشكل غير مستقر، عليك إعادة تثبيت أحدث نسخ برامج الجهة المصنِّعة من خلال <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> أو <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>، وتحديد الخيارات التالية: \"حجب بيانات الجهاز\" (Wipe Device)، و\"قفل برنامج الإقلاع\" (Lock Bootloader)، و\"فرض تثبيت البيانات في جميع الأقسام\" (Force Flash all partitions)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"استخدام الوضع ١٦ كيلوبايت غير المستند إلى حجم الصفحة"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"جهازك الآن في الوضع ١٦ كيلوبايت ضِمن الوضع غير المستند إلى حجم الصفحة. وفي هذا الوضع، لا يمكن ضمان سلامة برنامج النظام. وعندما يكون برنامج الإقلاع غير مقفل، قد تصبح بياناتك المخزَّنة على الهاتف معرَّضة للخطر. سيتم إيقاف بعض الميزات في هذَين الوضعَين، وبالتالي قد لا تعمل بعض التطبيقات. لإعادة تفعيل وضع الإنتاج، عليك التبديل مرة أخرى إلى الوضع ٤ كيلوبايت وقفل برنامج الإقلاع. انقر لقراءة المزيد."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"جهازك الآن في الوضع 16 كيلوبايت ضِمن الوضع غير المستند إلى حجم الصفحة. وفي هذا الوضع، لا يمكن ضمان سلامة برنامج النظام. وعندما يكون برنامج الإقلاع غير مقفل، قد تصبح بياناتك المخزَّنة على الهاتف معرَّضة للخطر. سيتم إيقاف بعض الميزات في هذَين الوضعَين، وبالتالي قد لا تعمل بعض التطبيقات. لإعادة تفعيل وضع الإنتاج، عليك التبديل مرة أخرى إلى الوضع 4 كيلوبايت وقفل برنامج الإقلاع. سيؤدي هذا الإجراء إلى إعادة ضبط الجهاز على الإعدادات الأصلية لوضع الإنتاج. بعد تشغيل نظام Android على الجهاز بنجاح، أوقِف الإعداد \"فتح قفل المصنّع الأصلي للجهاز\" ضِمن \"خيارات المطوّرين\". إذا تعذَّر تشغيل نظام Android أو كان يعمل بشكل غير مستقر، عليك إعادة تثبيت أحدث نسخ برامج الجهة المصنِّعة من خلال <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> أو <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>، وتحديد الخيارات التالية: \"حجب بيانات الجهاز\" (Wipe Device)، و\"قفل برنامج الإقلاع\" (Lock Bootloader)، و\"فرض تثبيت البيانات في جميع الأقسام\" (Force Flash all partitions)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"الوضع 16 كيلوبايت غير المستند إلى حجم الصفحة"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"قراءة المزيد"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"معالِج تقارير الأخطاء"</string>
@@ -5013,7 +5073,8 @@
<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="6686858308083037810">"السماح لمستخدمين متعددين"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5357,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-as/arrays.xml b/res/values-as/arrays.xml
index c414563..fbd43a0 100644
--- a/res/values-as/arrays.xml
+++ b/res/values-as/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"বেডটাইম"</item>
+ <item msgid="4152450357280759894">"গাড়ী চলোৱা"</item>
+ <item msgid="7096549258219399423">"ইমাৰ্ছিভ"</item>
+ <item msgid="2760716776980432977">"পৰিচালিত"</item>
+ <item msgid="601734478369121764">"তৰা"</item>
+ <item msgid="6243809315432780521">"কেলেণ্ডাৰ"</item>
+ <item msgid="4913577903148415331">"সময়"</item>
+ <item msgid="3653377604690057780">"থিয়েটাৰ"</item>
+ <item msgid="3843711267408385410">"ফুল"</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 79321fc..472cf52 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"শুনাৰ ডিভাইচৰ ছেটিং"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"শ্বৰ্টকাট, শ্ৰৱণ যন্ত্ৰৰ সুসংগতা"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"প্ৰিছেট"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"আপোনাৰ অডিঅ’লজিষ্টে প্ৰ’গ্ৰাম কৰা কোনো প্ৰিছেট নাই"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"প্ৰিছেট আপডে’ট কৰিব পৰা নগ’ল"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"অডিঅ’ আউটপুট"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"অডিঅ’ আউটপুটৰ বিষয়ে"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধাটোৰ বিষয়ে অধিক জানক"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ঘড়ী যোগ দিয়ক"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ঘড়ীটো আঁতৰাওক"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ফিংগাৰপ্ৰিণ্ট আৰু ফে’চ আনলক কৰাৰ সুবিধা"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ফেচ আৰু ফিংগাৰপ্ৰিন্ট আনলক"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"কাৰ্যৰ বাবে ফে’চ আৰু ফিংগাৰপ্ৰিন্ট আনলক"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ছেটআপৰ আৱশ্যক"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"মুখাৱয়ব আৰু ফিংগাৰপ্ৰিণ্ট যোগ দিয়া হ’ল"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ডিভাইচটো ৰিষ্টাৰ্ট কৰিবনে?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"সবিশেষ NFC লগিং কেৱল বিকাশৰ উদ্দেশ্যে কৰা হয়। অতিৰিক্ত NFC ডেটা বাগ ৰিপ’ৰ্টসমূহত অন্তৰ্ভুক্ত কৰা হয়, য’ত ব্যক্তিগত তথ্য থাকিব পাৰে। এই ছেটিং সলনি কৰিবলৈ আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰক।"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ৰিষ্টাৰ্ট কৰক"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"কাষ্ট"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"আইনা"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"বেতাঁৰ ডিছপ্লে’ সক্ষম কৰক"</string>
@@ -900,7 +929,7 @@
<string name="wifi_notify_open_networks" msgid="2610323626246818961">"ৰাজহুৱা নেটৱৰ্কসমূহৰ বাবে জাননী দিয়ক"</string>
<string name="wifi_notify_open_networks_summary" msgid="191058832201741013">"এটা উচ্চ গুণমানৰ ৰাজহুৱা নেটৱৰ্ক উপলব্ধ হ\'লে মোক জনাওক"</string>
<string name="wifi_allow_wep_networks" msgid="8772342993235292010">"WEP নেটৱৰ্কক অনুমতি দিয়ক"</string>
- <string name="wifi_allow_wep_networks_summary" msgid="3033397893296724615">"WEP হৈছে এটা অধিক পুৰণি সুৰক্ষাৰ প্ৰট’কল, যিটো কম সুৰক্ষিত"</string>
+ <string name="wifi_allow_wep_networks_summary" msgid="3033397893296724615">"WEP হৈছে এটা অধিক পুৰণি সুৰক্ষাৰ প্ৰ্ৰ\'টকল, যিটো কম সুৰক্ষিত"</string>
<string name="wifi_allow_wep_networks_summary_carrier_not_allow" msgid="6298103289728210026">"আপোনাৰ বাহকে WEP নেটৱৰ্কক অনুমতি নিদিয়ে, কাৰণ সেইসমূহ কম সুৰক্ষিত"</string>
<string name="wifi_wakeup" msgid="3834327315861781611">"ৱাই-ফাই স্বয়ংক্ৰিয়ভাৱে অন কৰক"</string>
<string name="wifi_wakeup_summary" msgid="5778059083790221465">"ছেভ কৰি থোৱা উচ্চ মানৰ সংৰক্ষিত নেটৱৰ্ক পালেহে ৱাই-ফাই অন হ\'ব, যেনে আপোনাৰ ঘৰৰ নেটৱৰ্ক"</string>
@@ -923,10 +952,10 @@
<string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"ৱাই-ফাই স্কেনিং সুবিধাই ৱাই-ফাই অফ থকা অৱস্থাতো যিকোনো সময়ত এপ্ আৰু সেৱাসমূহক ৱাই-ফাই নেটৱৰ্ক স্কেন কৰিবলৈ দিয়ে। উদাহৰণস্বৰূপে, ইয়াক অৱস্থান আধাৰিত সুবিধা আৰু সেৱাসমূহক উন্নত কৰিবলৈ ব্যৱহাৰ কৰিব পাৰি।"</string>
<string name="wifi_settings_scanning_required_turn_on" msgid="1112223196123955447">"অন কৰক"</string>
<string name="wifi_settings_scanning_required_enabled" msgid="4721729158927146365">"ৱাই-ফাই স্কেনিং অন আছে"</string>
- <string name="wifi_settings_warning_wep_network" msgid="7032462362300663466">"এই নেটৱৰ্কটোৱে WEP নামৰ এটা পুৰণি সুৰক্ষাৰ প্ৰট’কল ব্যৱহাৰ কৰে, যিটো কম সুৰক্ষিত"</string>
+ <string name="wifi_settings_warning_wep_network" msgid="7032462362300663466">"এই নেটৱৰ্কটোৱে WEP নামৰ এটা পুৰণি সুৰক্ষাৰ প্ৰ্ৰ\'টকল ব্যৱহাৰ কৰে, যিটো কম সুৰক্ষিত"</string>
<string name="wifi_settings_wep_networks_blocked_title" msgid="8337700496544833669">"<xliff:g id="NAME">%1$s</xliff:g> অৱৰোধ কৰা হৈছে"</string>
- <string name="wifi_settings_wep_networks_summary_toggle_off" msgid="1113138364046142949">"এই নেটৱৰ্কটোৱে এটা কম সুৰক্ষিত অধিক পুৰণি WEP নামৰ সুৰক্ষাৰ প্ৰট’কল ব্যৱহাৰ কৰে। তথাপি সংযোগ কৰিবলৈ, আপুনি WEP নেটৱৰ্কক অনুমতি দিব পাৰে।"</string>
- <string name="wifi_settings_wep_networks_summary_blocked_by_carrier" msgid="5891581925109256871">"আপোনাৰ বাহকে আপোনাক এই নেটৱৰ্কটোৰ সৈতে সংযোগ কৰিবলৈ নিদিয়ে কাৰণ ই WEP নামৰ এটা পুৰণি সুৰক্ষাৰ প্ৰট’কল ব্যৱহাৰ কৰে, যিটো কম সুৰক্ষিত"</string>
+ <string name="wifi_settings_wep_networks_summary_toggle_off" msgid="1113138364046142949">"এই নেটৱৰ্কটোৱে এটা কম সুৰক্ষিত অধিক পুৰণি WEP নামৰ সুৰক্ষাৰ প্ৰ্ৰ\'টকল ব্যৱহাৰ কৰে। তথাপি সংযোগ কৰিবলৈ, আপুনি WEP নেটৱৰ্কক অনুমতি দিব পাৰে।"</string>
+ <string name="wifi_settings_wep_networks_summary_blocked_by_carrier" msgid="5891581925109256871">"আপোনাৰ বাহকে আপোনাক এই নেটৱৰ্কটোৰ সৈতে সংযোগ কৰিবলৈ নিদিয়ে কাৰণ ই WEP নামৰ এটা পুৰণি সুৰক্ষাৰ প্ৰ্ৰ\'টকল ব্যৱহাৰ কৰে, যিটো কম সুৰক্ষিত"</string>
<string name="wifi_settings_wep_networks_button_allow" msgid="2807926329019873706">"WEP অনুমতি দিয়ক"</string>
<string name="wifi_settings_ssid_block_button_close" msgid="3013886895576949908">"বন্ধ কৰক"</string>
<string name="wifi_settings_wep_networks_disconnect_title" msgid="2428960671702242156">"WEP নেটৱৰ্কসমূহৰ অনুমতি দিয়া বন্ধ কৰিবনে?"</string>
@@ -1051,7 +1080,7 @@
<string name="wifi_certificate_summary_system" msgid="6521297326433133669">"ছিষ্টেমৰ প্ৰমাণপত্ৰ"</string>
<string name="wifi_certificate_summary_pinning" msgid="5901067790901727957">"প্ৰমাণপত্ৰ পিন কৰা"</string>
<string name="wifi_details_title" msgid="222735438574597493">"নেটৱৰ্কৰ সবিশেষ"</string>
- <string name="wep_network_less_secure_warning_title" msgid="2118823633436946728">"এই নেটৱৰ্কটোৱে WEP নামৰ এটা পুৰণি সুৰক্ষাৰ প্ৰট’কল ব্যৱহাৰ কৰে, যিটো কম সুৰক্ষিত"</string>
+ <string name="wep_network_less_secure_warning_title" msgid="2118823633436946728">"এই নেটৱৰ্কটোৱে WEP নামৰ এটা পুৰণি সুৰক্ষাৰ প্ৰ্ৰ\'টকল ব্যৱহাৰ কৰে, যিটো কম সুৰক্ষিত"</string>
<string name="wifi_details_subnet_mask" msgid="1619151769276260512">"ছাবনেট মাস্ক"</string>
<string name="server_name_title" msgid="7257095185810299066">"ছাৰ্ভাৰৰ নাম"</string>
<string name="wifi_type_title" msgid="2174893488722015838">"প্ৰকাৰ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"অভিযোজিত"</string>
<string name="brightness" msgid="6216871641021779698">"উজ্জ্বলতাৰ স্তৰ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"অভিযোজিত উজ্জ্বলতা"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"অভিযোজিত উজ্জ্বলতাৰ বিষয়ে"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"আপোনাৰ স্ক্ৰীনৰ উজ্জ্বলতা আপোনাৰ পৰিৱেশ আৰু কাৰ্যকলাপবোৰৰ লগত স্ৱয়ংক্ৰিয়ভাৱে খাপ খায়। আপুনি অভিযোজিত উজ্জ্বলতাক আপোনাৰ অগ্ৰাধিকাৰসমূহ বুজাত সহায় কৰাৰ বাবে শ্লাইডাৰ মেনুৱেলভাৱে স্থানান্তৰ কৰিব পাৰে।"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"অন আছে"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"অফ হৈ আছে"</string>
@@ -1463,8 +1493,8 @@
<string name="apn_mnc" msgid="1926382406843447854">"এমএনচি"</string>
<string name="apn_auth_type" msgid="4234397513494356932">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ ধৰণ"</string>
<string name="apn_type" msgid="1835573305077788773">"এপিএনৰ প্ৰকাৰ"</string>
- <string name="apn_protocol" msgid="181529867160380010">"এপিএনৰ নিয়মপ্ৰণালী"</string>
- <string name="apn_roaming_protocol" msgid="1645131094105362513">"এপিএন ৰ\'মিঙৰ নিয়মপ্ৰণালী"</string>
+ <string name="apn_protocol" msgid="181529867160380010">"এপিএনৰ প্ৰ্ৰ\'টকল"</string>
+ <string name="apn_roaming_protocol" msgid="1645131094105362513">"এপিএন ৰ\'মিঙৰ প্ৰ্ৰ\'টকল"</string>
<string name="carrier_enabled" msgid="664074151573150130">"এপিএন সক্ষম/অক্ষম কৰক"</string>
<string name="carrier_enabled_summaryOn" msgid="5212067975273903381">"APN সক্ষম হৈছে"</string>
<string name="carrier_enabled_summaryOff" msgid="8541959867953738521">"এপিএন অক্ষম কৰা হৈছে"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"যি হ’লেও অব্যাহত ৰাখক"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"বাতিল কৰক"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"বিবৰ্ধন কৰাৰ ছেটিং"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"এটা আঙুলিৰে পেনিং কৰা"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"১ টা আঙুলিৰে বিবৰ্ধক স্থানান্তৰ কৰক"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"স্ক্ৰীনত ইফাল-সিফাল কৰিবলৈ ১ টা আঙুলিৰে টানি আনি এৰক"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"এটা আঙুলিৰে টানি আনি এৰি দি বিবৰ্ধন কৰা অংশটো লৰচৰ কৰক।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"দুটা আঙুলিৰে টানি আনি এৰি দি বিবৰ্ধন কৰা অংশটো লৰচৰ কৰক।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"স্ক্ৰীনখনৰ কেৱল এটা অংশ বিবৰ্ধন কৰাৰ সময়ত উপলব্ধ নহয়"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"জুম কৰিবলৈ এটা বুটাম টিপক"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"সমলৰ আকাৰ ডাঙৰ কৰিবলৈ স্ক্ৰীনখনত ক্ষিপ্ৰভাৱে জুম ইন কৰক"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>জুম ইন কৰিবলৈ:</b><br/> {0,number,integer}। বিবৰ্ধনৰ সুবিধাটো আৰম্ভ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/> {1,number,integer}। স্ক্ৰীনখনত টিপক<br/> {2,number,integer}। স্ক্ৰীনৰ চাৰিওফালে ইফাল-সিফাল কৰিবলৈ ২ টা আঙুলিৰে টানি আনি এৰক<br/> {3,number,integer}। জুম মিলাবলৈ ২ টা আঙুলিৰে পিঞ্চ কৰক<br/> {4,number,integer}। বিবৰ্ধনৰ সুবিধাটো বন্ধ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/><br/><b>সাময়িকভাৱে জুম ইন কৰিবলৈ:</b><br/> {0,number,integer}। আপোনাৰ বিবৰ্ধনৰ প্ৰকাৰটো সম্পূৰ্ণ স্ক্ৰীনলৈ ছেট কৰাটো নিশ্চিত কৰক<br/> {1,number,integer}। বিবৰ্ধনৰ সুবিধাটো আৰম্ভ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/> {2,number,integer}। স্ক্ৰীনখনৰ যিকোনো স্থানত স্পৰ্শ কৰি ধৰি ৰাখক<br/> {3,number,integer}। স্ক্ৰীনৰ চাৰিওফালে ইফাল-সিফাল কৰিবলৈ আঙুলিৰে টানি আনি এৰক<br/> {4,number,integer}। বিবৰ্ধনৰ সুবিধাটো বন্ধ কৰিবলৈ আঙুলি উঠাওক"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>জুম ইন কৰিবলৈ:</b><br/> {0,number,integer}। বিবৰ্ধনৰ সুবিধাটো আৰম্ভ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/> {1,number,integer}। স্ক্ৰীনখনত টিপক<br/> {2,number,integer}। স্ক্ৰীনত ইফাল-সিফাল কৰিবলৈ ২ টা আঙুলিৰে টানি আনি এৰক<br/> {3,number,integer}। জুম মিলাবলৈ ২ টা আঙুলিৰে পিঞ্চ কৰক<br/> {4,number,integer}। বিবৰ্ধন বন্ধ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/><br/> আপুনি সাময়িকভাৱে জুম ইন কৰাৰ লগতে আৰু বহুতো কাৰ্য কৰিব পাৰে।"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>জুম ইন কৰিবলৈ:</b><br/> {0,number,integer}। বিবৰ্ধনৰ সুবিধাটো আৰম্ভ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/> {1,number,integer}। স্ক্ৰীনখনত টিপক<br/> {2,number,integer}। স্ক্ৰীনত ইফাল-সিফাল কৰিবলৈ ১ টা বা ২ টা আঙুলিৰে টানি আনি এৰক<br/> {3,number,integer}। জুম মিলাবলৈ ২ টা আঙুলিৰে পিঞ্চ কৰক<br/> {4,number,integer}। বিবৰ্ধন বন্ধ কৰিবলৈ শ্বৰ্টকাট ব্যৱহাৰ কৰক<br/><br/> আপুনি সাময়িকভাৱে জুম ইন কৰাৰ লগতে আৰু বহুতো কাৰ্য কৰিব পাৰে।"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"বিৱৰ্ধন অন কৰা থাকিলে আপুনি নিজৰ স্ক্রীনখনত জুম ইন কৰিব পাৰে।\n\n"<b>"জুম কৰিবলৈ"</b>", বিৱৰ্ধন আৰম্ভ কৰক আৰু তাৰ পাছত স্ক্রীনখনৰ যিকোনো ঠাইত টিপক।\n"<ul><li>"স্ক্ৰ’ল কৰিবলৈ ২টা অথবা ততোধিক আঙুলি স্ক্ৰীনত পিছলাওক"</li>\n<li>"জুম মিলাবলৈ স্ক্ৰীনত ২টা অথবা অধিক আঙুলিৰে টিপক"</li></ul>\n\n<b>"সাময়িকভাৱে জুম কৰিবলৈ"</b>"বিৱৰ্ধন আৰম্ভ কৰক, তাৰ পাছত স্ক্ৰীনৰ যিকোনো অংশত স্পৰ্শ কৰি হেঁচি ধৰক।\n"<ul><li>"স্ক্ৰীনখন ইফালে-সিফালে নিবলৈ আঙুলিৰে টানক"</li>\n<li>"জুম আউট কৰিবলৈ আঙুলি উঠাওক"</li></ul>\n\n"আপুনি কীব’ৰ্ড অথবা নেভিগেশ্বন বাৰ জুম কৰিব নোৱাৰে।"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> পৃষ্ঠাৰ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> নম্বৰ পৃষ্ঠা"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"সাধ্য সুবিধা বুটামৰ শ্বৰ্টকাট"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{এটাও নাই}=1{1 খন সময়সূচী ছেট কৰা হৈছে}one{# খন সময়সূচী ছেট কৰা হৈছে}other{# খন সময়সূচী ছেট কৰা হৈছে}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"অসুবিধা নিদিব"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"অগ্ৰাধিকাৰপ্ৰাপ্ত ম’ড"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"কেৱল গুৰুত্বপূর্ণ লোক আৰু এপ্সমূহৰ পৰা জাননী পাওক"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"সক্ৰিয়কৰণৰ প্ৰকাৰ বাছনি কৰক"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"সময়"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"উদাহৰণস্বৰূপে, \"আবেলি ৯:৩০ বজাৰ পৰা ৫:০০ বজালৈ\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"কেলেণ্ডাৰ"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"উদাহৰণস্বৰূপে, \"ব্যক্তিগত কেলেণ্ডাৰ\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"বাধাবোৰ সীমিত কৰক"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"নিৰ্ধাৰিত সূচী মচক"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"মচক"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"এখন কেলেণ্ডাৰ যোগ দিয়ক"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"আপোনাৰ কেলেণ্ডাৰ ব্যৱহাৰ কৰক"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"সময়সূচী"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"সময়সূচী ছেট কৰক"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"সময়সূচী"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"নিৰ্দ্দিষ্ট সময়ৰ মূৰত ফ\'ন নিৰৱ কৰক"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ধ্বনিৰ সৃষ্টি কৰা বাধাসমূহৰ বাবে অনুমতি দিয়ক"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"দৃশ্যমান বিঘিনি প্ৰতিৰোধ কৰক"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"দৃশ্যমান সংকেতৰ অনুমতি দিয়ক"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"আপোনাৰ সৈতে সম্পৰ্ক স্থাপন কৰিব পৰা জাননীসমূহ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"মন দি থাকক"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"অতিৰিক্ত কাৰ্য"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ডিছপ্লে’ ছেটিং"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ডিছপ্লে’ৰ বিকল্পসমূহ"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"গাঢ় ৰঙৰ থীম সক্ষম কৰক"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"OS আৰু এপ্সমূহক গাঢ় ৰঙৰ পটভূমিত পাতল ৰঙৰ পাঠ পছন্দ কৰিবলৈ সলনি কৰক, যি চকুৰ বাবে সহজ হ’ব পাৰে আৰু কিছুমান ডিভাইচত যথেষ্ট বেটাৰি সঞ্চয় কৰিবলৈ দিয়ে"</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="mode_notification_filter_title" msgid="443728483176031977">"বাধা ফিল্টাৰ কৰক"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"কোনো বাধা ফিল্টাৰ কৰা নহয়"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"অব্যৱহৃত শিতানসমূহ দেখুৱাওক"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"অব্যৱহৃত শিতানসমূহ লুকুৱাওক"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"আটাইবোৰ"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} পৰ্যন্ত কেৱল এঘণ্টাৰ বাবে এলাৰ্মলৈ সলনি কৰক}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"নতুন নাম দিয়ক"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"চিহ্ন সলনি কৰক"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"চিহ্ন সলনি কৰক"</string>
<string name="warning_button_text" msgid="1274234338874005639">"সকীয়নি"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"বন্ধ কৰক"</string>
<string name="device_feedback" msgid="5351614458411688608">"ডিভাইচটো ব্যৱহাৰ কৰি কেনে লাগিছে জনাওক"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"১৬ কেবি বিকাশকৰ্তাৰ বিকল্প ব্যৱহাৰ কৰাৰ আগতে এই ডিভাইচৰ ডেটা বিভাজন ext4 লৈ ৰূপান্তৰ কৰিব লাগিব। এই ম’ডত ছফ্টৱেৰৰ অখণ্ডতা নিশ্চিত কৰিব নোৱাৰি আৰু বুটল’ডাৰ আনলক হৈ থকাৰ সময়ত ফ’নত ষ্ট’ৰ কৰা যিকোনো ডেটাৰ ক্ষেত্ৰত বিপদাশংকা থাকিব পাৰে। ১৬ কেবি বিকল্প সক্ৰিয় কৰাৰ বাবে ইয়াৰ পাছত আৰু এবাৰ ৰিবুট কৰাৰ প্ৰয়োজন হ’ব। আপুনি এবাৰ এই ম’ডত থাকিলে, আপুনি এবাৰ ৰিবুট কৰিয়েই ৪ কেবি আৰু ১৬ কেবি ম’ডৰ মাজত আগ-পিছ কৰিব পাৰিব। এই ম’ডসমূহত কিছুমান সুবিধা অক্ষম কৰা হ’ব, গতিকে কিছুমান এপ্লিকেশ্বনে কাম নকৰিবও পাৰে। ডিভাইচটোক উৎপাদন ম’ডলৈ উভতাই নিবলৈ, আপুনি ৪ কেবি ম’ডলৈ পুনৰ সলনি কৰিব লাগিব আৰু বুটল’ডাৰ লক কৰিব লাগিব, যিয়ে ডিভাইচটো ফেক্টৰী ৰিছেট কৰে। ডিভাইচটোৱে Androidত সফলতাৰে বুট কৰাৰ পাছত, বিকাশকৰ্তাৰ বিকল্পসমূহত OEM আনলক কৰাটো অক্ষম কৰক। ডিভাইচটো মচি পেলোৱা হ’ব আৰু নিশ্চিতকৰণৰ পাছত ফাইলছিষ্টেম ext4লৈ সলনি কৰা হ’ব। এইটো সম্পূৰ্ণ হোৱাৰ পাছত, ১৬ কেবি পুনৰ সক্ষম কৰিবলৈ কৰিবলৈ অনুগ্ৰহ কৰি উভতি আহক।"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"আটাইবোৰ ডেটা মচক"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ডেটা বিভাজন মচিব আৰু ext4 হিচাপে পুনৰ ফৰ্মেট কৰিব পৰা নগ’ল।"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"১৬ কেবি ম’ডৰ বাবে বুটল’ডাৰ আনলক কৰাৰ প্ৰয়োজন"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"১৬ কেবি বিকাশকৰ্তাৰ বিকল্প ব্যৱহাৰ কৰাৰ আগতে এই ডিভাইচত বুটল’ডাৰ আনলক কৰিব লাগিব। এই ম’ডত ছফ্টৱেৰৰ অখণ্ডতা নিশ্চিত কৰিব নোৱাৰি আৰু বুটল’ডাৰ আনলক হৈ থকাৰ সময়ত ফ’নত ষ্ট’ৰ কৰা যিকোনো ডেটাৰ ক্ষেত্ৰত বিপদাশংকা থাকিব পাৰে। ১৬ কেবি ম’ড সক্ৰিয় কৰাৰ সময়ত ব্যৱহাৰকাৰীৰ আটাইবোৰ ডেটা আৰু ছেটিং মচি পেলোৱা হ’ব। এবাৰ বুটল’ডাৰ আনলক কৰা হ’লে, ১৬ কেবি বিকল্প সক্ৰিয় কৰিবলৈ দুবাৰ ৰিবুট কৰাৰ প্ৰয়োজন হ’ব। আপুনি এবাৰ এই ম’ডত থাকিলে, আপুনি এবাৰ ৰিবুট কৰিয়েই ৪ কেবি আৰু ১৬ কেবি ম’ডৰ মাজত আগ-পিছ কৰিব পাৰিব। এই ম’ডসমূহত কিছুমান সুবিধা অক্ষম কৰা হ’ব, গতিকে কিছুমান এপ্লিকেশ্বনে কাম নকৰিবও পাৰে। ডিভাইচটোক উৎপাদন ম’ডলৈ উভতাই নিবলৈ, আপুনি ৪ কেবি ম’ডলৈ পুনৰ সলনি কৰিব লাগিব আৰু ডিভাইচটো OEM/বুটল’ডাৰ লক (যিয়ে ফেক্টৰী ৰিছেট কৰে) কৰিব লাগিব। অনুগ্ৰহ কৰি বুটল’ডাৰ আনলক কৰক আৰু পুনৰ চেষ্টা কৰক। আপুনি এইটো কেনেকৈ কৰিব লাগে তাৰ নিৰ্দেশনা <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>ত চাব পাৰে"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"৪ কেবি পেজ-এগন’ষ্টিক ম’ড ব্যৱহাৰ কৰি থকা হৈছে"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"আপুনি পেজ-এগন’ষ্টিক ম’ডৰ ৪ কেবি ম’ডত আছে। এই ম’ডত ছফ্টৱেৰৰ অখণ্ডতা নিশ্চিত কৰিব নোৱাৰি আৰু বুটল’ডাৰ আনলক হৈ থকাৰ সময়ত ফ’নত ষ্ট’ৰ কৰা যিকোনো ডেটাৰ ক্ষেত্ৰত বিপদাশংকা থাকিব পাৰে। এই ম’ডসমূহত কিছুমান সুবিধা অক্ষম কৰা হ’ব, গতিকে কিছুমান এপ্লিকেশ্বনে কাম নকৰিবও পাৰে। উৎপাদন ম’ডত পুনৰ প্ৰৱেশ কৰিবলৈ, আপুনি ডিভাইচৰ বুটল’ডাৰ লক কৰিবই লাগিব। অধিক পঢ়িবলৈ টিপক।"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"আপুনি পেজ-এগন’ষ্টিক ম’ডৰ ৪ কেবি ম’ডত আছে। এই ম’ডত ছফ্টৱেৰৰ অখণ্ডতা নিশ্চিত কৰিব নোৱাৰি আৰু বুটল’ডাৰ আনলক হৈ থকাৰ সময়ত ফ’নত ষ্ট’ৰ কৰা যিকোনো ডেটাৰ ক্ষেত্ৰত বিপদাশংকা থাকিব পাৰে। এই ম’ডসমূহত কিছুমান সুবিধা অক্ষম কৰা হ’ব, গতিকে কিছুমান এপ্লিকেশ্বনে কাম নকৰিবও পাৰে। উৎপাদন ম’ডত পুনৰ প্ৰৱেশ কৰিবলৈ, আপুনি ডিভাইচৰ বুটল’ডাৰ লক কৰিবই লাগিব। ই ডিভাইচটো পুনৰ ফেক্টৰী ৰিছেট কৰিব আৰু সেইটোক উৎপাদন ছেটিঙলৈ পুনঃস্থাপন কৰিব। ডিভাইচটোৱে Androidত সফলতাৰে বুট কৰাৰ পাছত, বিকাশকৰ্তাৰ বিকল্পসমূহত OEM আনলক কৰাটো অক্ষম কৰক। যদি ডিভাইচটো Androidত বুট কৰিব পৰা নাযায় বা অস্থিৰ হয়, তেন্তে <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>ৰ পৰা শেহতীয়া ফেক্টৰী প্ৰতিচ্ছবিসমূহৰ সৈতে ডিভাইচটো পুনৰ ফ্লেশ্ব কৰক আৰু \'ডিভাইচ মচি পেলাওক\', \'বুটল’ডাৰ লক কৰক\' আৰু \'আটাইবোৰ বিভাজন বলপূৰ্বক ফ্লেশ্ব কৰক\' বাছনি কৰক।"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"১৬ কেবি পেজ-এগন’ষ্টিক ম’ড ব্যৱহাৰ কৰি থকা হৈছে"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"আপুনি পেজ-এগন’ষ্টিক ম’ডৰ ১৬ কেবি ম’ডত আছে। এই ম’ডত ছফ্টৱেৰৰ অখণ্ডতা নিশ্চিত কৰিব নোৱাৰি আৰু বুটল’ডাৰ আনলক হৈ থকাৰ সময়ত ফ’নত ষ্ট’ৰ কৰা যিকোনো ডেটাৰ ক্ষেত্ৰত বিপদাশংকা থাকিব পাৰে। এই ম’ডসমূহত কিছুমান সুবিধা অক্ষম কৰা হ’ব, গতিকে কিছুমান এপ্লিকেশ্বনে কাম নকৰিবও পাৰে। উৎপাদন ম’ডত পুনৰ প্ৰৱেশ কৰিবলৈ, আপুনি 4K ম’ডলৈ উভতি যাবই লাগিব আৰু তাৰ পাছত ডিভাইচৰ বুটল’ডাৰ লক কৰিবই লাগিব। অধিক পঢ়িবলৈ টিপক।"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"আপুনি পেজ-এগন’ষ্টিক ম’ডৰ ১৬ কেবি ম’ডত আছে। এই ম’ডত ছফ্টৱেৰৰ অখণ্ডতা নিশ্চিত কৰিব নোৱাৰি আৰু বুটল’ডাৰ আনলক হৈ থকাৰ সময়ত ফ’নত ষ্ট’ৰ কৰা যিকোনো ডেটাৰ ক্ষেত্ৰত বিপদাশংকা থাকিব পাৰে। এই ম’ডসমূহত কিছুমান সুবিধা অক্ষম কৰা হ’ব, গতিকে কিছুমান এপ্লিকেশ্বনে কাম নকৰিবও পাৰে। উৎপাদন ম’ডত পুনৰ প্ৰৱেশ কৰিবলৈ, আপুনি 4K ম’ডলৈ উভতি যাবই লাগিব আৰু তাৰ পাছত ডিভাইচৰ বুটল’ডাৰ লক কৰিবই লাগিব। ই ডিভাইচটো পুনৰ ফেক্টৰী ৰিছেট কৰিব আৰু সেইটোক উৎপাদন ছেটিঙলৈ পুনঃস্থাপন কৰিব। ডিভাইচটোৱে Androidত সফলতাৰে বুট কৰাৰ পাছত, বিকাশকৰ্তাৰ বিকল্পসমূহত OEM আনলক কৰাটো অক্ষম কৰক। যদি ডিভাইচটো Androidত বুট কৰিব পৰা নাযায় বা অস্থিৰ হয়, তেন্তে <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>ৰ পৰা শেহতীয়া ফেক্টৰী প্ৰতিচ্ছবিসমূহৰ সৈতে ডিভাইচটো পুনৰ ফ্লেশ্ব কৰক আৰু \'ডিভাইচ মচি পেলাওক\', \'বুটল’ডাৰ লক কৰক\' আৰু \'আটাইবোৰ বিভাজন বলপূৰ্বক ফ্লেশ্ব কৰক\' বাছনি কৰক।"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"১৬ কেবি পেজ-এগন’ষ্টিক ম’ড"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"অধিক পঢ়ক"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"বাগ ৰিপ’ৰ্ট নিয়ন্ত্ৰণ কৰোঁতা"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"একাধিক ব্যৱহাৰকাৰীৰ অনুমতি দিয়ক"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-az/arrays.xml b/res/values-az/arrays.xml
index 93d30f7..118e445 100644
--- a/res/values-az/arrays.xml
+++ b/res/values-az/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Yuxu vaxtı"</item>
+ <item msgid="4152450357280759894">"Sürücülük"</item>
+ <item msgid="7096549258219399423">"İmmersiv"</item>
+ <item msgid="2760716776980432977">"İdarə edilən"</item>
+ <item msgid="601734478369121764">"Ulduz"</item>
+ <item msgid="6243809315432780521">"Təqvim"</item>
+ <item msgid="4913577903148415331">"Vaxt"</item>
+ <item msgid="3653377604690057780">"Teatr"</item>
+ <item msgid="3843711267408385410">"Çiçək"</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 9d63c289..b5c00d2 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Eşitmə cihazı ayarları"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Qısayol, eşitmə cihazı uyğunluğu"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Hazır ayar"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Audioloq tərəfindən proqramlaşdırılmış hazır ayar yoxdur"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Hazır ayar güncəllənmədi"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio çıxışı"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Audio çıxışı haqqında"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saatla Kilidaçma haqqında ətraflı məlumat"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Saat əlavə edin"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Saatı silin"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Barmaq İzi və Üz ilə Kiliddən Açma"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Üz və barmaq izi ilə kiliddən çıxarma"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"İş üçün Üz və Barmaq izi ilə kiliddən çıxarma"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Ayarlamaq lazımdır"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Üz və barmaq izləri əlavə edildi"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Tətbiqlər quraşdırın"</b>\n"Sahənizdə məxfi saxlamaq istədiyiniz tətbiqləri quraşdırın"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Nəzərdə saxlayın"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Sahəni kilidlədikdə tətbiqlər dayanır"</b>\n"Sahəni kilidlədikdə sahədəki tətbiqlər dayandırılır və onlardan bildirişlər almayacaqsınız"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Şəxsi sahələr arxa fonda icra edilməli və ya tibbi tətbiqlər kimi kritik bildirişlər göndərməli olan tətbiqlər üçün uyğun deyil. Bunun səbəbi sahə kilidləndikdə bildirişlərin və arxa fon fəaliyyətinin dayandırılmasıdır.\n\nŞəxsi sahə kilidləndikdə şəxsi sahədəki tətbiqlər icazə menecerində, məxfilik panelində və digər ayarlarda görünməyəcək.\n\nŞəxsi sahə yeni cihaza köçürülə bilməz. Başqa cihazda istifadə etmək istəsəniz, başqa şəxsi sahə ayarlamalısınız.\n\nCihazı kompüterə qoşan və ya cihazda zərərli tətbiqlər quraşdıran istənilən şəxs şəxsi sahəyə daxil ola bilər."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Şəxsi sahələr arxa fonda icra edilməli və ya tibbi tətbiqlər kimi kritik bildirişlər göndərməli olan tətbiqlər üçün uyğun deyil. Bunun səbəbi sahə kilidləndikdə bildirişlərin və arxa fon fəaliyyətinin dayandırılmasıdır.\n\nŞəxsi sahə kilidləndikdə şəxsi sahədəki tətbiqlər icazə menecerində, məxfilik panelində və digər ayarlarda görünməyəcək.\n\nŞəxsi sahə yeni cihaza bərpa edilə bilməz. Başqa cihazda istifadə etmək istəsəniz, başqa sahə ayarlamalısınız.\n\nCihazı kompüterə qoşan və ya cihazınızda zərərli tətbiqlər quraşdıran istənilən şəxs şəxsi sahəyə daxil ola bilər."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Şəxsi sahə haqqında ətraflı məlumat"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Bir neçə dəqiqə çəkəcək"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Məxfi yer ayarlanır…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Cihaz yenidən başladılsın?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detallı NFC qeydi yalnız inkişaf məqsədləri üçün nəzərdə tutulub. Əlavə NFC məlumatları şəxsi məlumatları ehtiva edə bilən baq hesabatlarına daxil edilir. Bu ayarı dəyişmək üçün cihazı yenidən başladın."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Yenidən başladın"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Yayım"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"güzgü"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Naqilsiz displeyi aktivləşdirin"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptiv"</string>
<string name="brightness" msgid="6216871641021779698">"Parlaqlıq səviyyəsi"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptiv parlaqlıq"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Adaptiv parlaqlıq haqqında"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Ekran parlaqlığı avtomatik olaraq ətraf mühitə və fəaliyyətlrinizə görə tənzimlənəcək. Ayarlana bilən parlaqlığın təcihlərinizi öyrənməsi üçün slayderi əlinizlə hərəkət etdirin."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Aktiv"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Deaktiv"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"İstifadəçi seçib: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Nitq"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Kursor sürəti"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Oyun Kontrolleri"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Vibrasiyanı yenidən yönləndirin"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Qoşulduqda oyun nəzarətinə vibrasiya göndərin"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Yenə də davam edin"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Ləğv edin"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Böyütmə ayarları"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Bir barmaqla hərəkət"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Bir barmaqla sürüşdürməklə böyütmə sahəsini hərəkət etdirin."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"İki barmaqla sürüşdürməklə böyütmə sahəsini hərəkət etdirin."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Yalnız ekranın bir hissəsini böyüdərkən əlçatan deyil"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Yaxınlaşdırmaq üçün düyməyə klikləyin"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Məzmunu böyütmək üçün ekranı sürətlə yaxınlaşdırın"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Yaxınlaşdırmaq üçün:</b><br/> {0,number,integer}. Böyütməyə başlamaq üçün qısayoldan istifadə edin<br/> {1,number,integer}. Ekrana toxunun<br/> {2,number,integer}. Ekranın ətrafında hərəkət etmək üçün 2 barmağınızı sürüşdürün<br/> {3,number,integer}. Miqyası tənzimləmək üçün 2 barmaqla yaxınlaşdırıb-uzaqlaşdırın<br/> {4,number,integer}. Böyütməni dayandırmaq üçün qısayoldan istifadə edin<br/><br/> <b>Müvəqqəti böyütmək üçün:</b><br/> {0,number,integer}. Böyütmə növünün tam ekrana ayarlandığına əmin olun<br/> {1,number,integer}. Böyütməyə başlamaq üçün qısayoldan istifadə edin<br/> {2,number,integer}. Ekranın istənilən yerinə toxunub saxlayın<br/> {3,number,integer}. Ekranın ətrafında hərəkət etmək üçün barmağınızı sürüşdürün<br/> {4,number,integer}. Böyütməni dayandırmaq üçün barmağınızı qaldırın"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Böyütmə aktiv edildikdə ekranda yaxınlaşdıra bilərsiniz.\n\n"<b>"Miqyası dəyişmək üçün"</b>" böyütməni başlatdıqdan sonra ekranda istənilən yerə toxunun.\n"<ul><li>"Sürüşdürmək üçün ən azı 2 barmağınızla çəkin"</li>\n<li>"Miqyası tənzimləmək üçün ən azı 2 barmağınızla sürüşdürərək yaxınlaşdırın"</li></ul>\n\n<b>"Miqyası müvəqqəti dəyişmək üçün"</b>" böyütməni başladıb ekranda istənilən yerə basın & saxlayın.\n"<ul><li>"Ekranda hərəkət etmək üçün çəkin"</li>\n<li>"Uzaqlaşdırmaq üçün barmağınızı qaldırın"</li></ul>\n\n"Klaviatura və ya naviqasiya panelində yaxınlaşdıra bilməzsiniz."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Səhifə <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">"Xüsusi imkanlar düyməsi qısayolu"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Heç biri}=1{1 cədvəl ayarlanıb}other{# cədvəl ayarlanıb}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Narahat etməyin"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioritet rejimləri"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Yalnız vacib şəxs və tətbiqlərdən bildiriş alın."</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Aktivləşdirmə növü seçin"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Vaxt"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Nümunə: \"09:30-17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Təqvim"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Nümunə: \"Şəxsi təqvim\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Kəsintiləri məhdudlaşdırın"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"\"Narahat Etməyin\" rejimini aktiv edin"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Siqnallar və media səsləri narahat edə bilər"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Cədvəllər"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Rejimləri silin"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Silin"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Redaktə edin"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Cədvəllər"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Rejim"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Təqvim əlavə edin"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Təqvim istifadə edin"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Cədvəl"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Cədvəl ayarlayın"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Cədvəl"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> saat <xliff:g id="MINUTES">%2$d</xliff:g> dəq"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Rutin"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Müəyyən vaxtlarda telefonu səssiz edin"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Səsli xəbərdarlıqlara icazə verin"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Vizual fəsadları blok edin"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Görünən siqnallara icazə verin"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Sizə gələ biləcək bildirişlər"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Diqqətinizi cəmləyin"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Əlavə əməliyyatlar"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Displey ayarları"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Displey seçimləri"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"tünd temanı aktivləşdirin"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Qaranlıq arxa fonda açıq mətnə üstünlük vermək üçün ƏS və tətbiqləri dəyişin. Bu, gözləri daha az yora bilər və bəzi cihazlarda əhəmiyyətli enerji qənaəti təmin edir."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Displey dəyişikliyi yoxdur}=1{{effect_1}}=2{{effect_1} və {effect_2}}=3{{effect_1}, {effect_2} və {effect_3}}other{{effect_1}, {effect_2} və daha # effekt}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Kəsintiləri filtrləyin"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Kəsinti filtrlənməyib"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Filtrlənmiş bildirişlər üzrə seçimləri göstərin"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"\"Narahat Etməyin\" rejimi aktiv olduqda"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Bildirişlər səssiz olsun"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kateqoriyalar"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Digər"</string>
<string name="no_channels" msgid="4716199078612071915">"Bu tətbiq heç bir bildiriş paylaşmayıb"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"İstifadəsiz kateqoriyaları göstərin"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Tətbiqdə əlavə ayarlar"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"İstifadəsiz kateqoriyaları göstərin"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"İstifadəsiz kateqoriyaları gizlədin"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Seçilmiş tətbiqlər"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Heç biri"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Hamısı"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Tətbiqlərin rejimdən imtina etməsinə icazə verin"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Narahat etmiş sayılmayan tətbiqlər"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Daha çox tətbiq seçin"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Yalnız bu vaxtadək bir saatlıq xəbərdarlıqlara dəyişin: {time}}other{Yalnız bu vaxtadək # saatlıq xəbərdarlıqlara dəyişin: {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Yalnız <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> vaxtınadək xəbərdarlıqları dəyişin"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Həmişə fasiləyə dəyişin"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Adını dəyişin"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"İkonanı dəyişin"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"İkonanı dəyişin"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Xəbərdarlıq"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Bağlayın"</string>
<string name="device_feedback" msgid="5351614458411688608">"Bu cihaz haqqında fikrinizi bildirin"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB developer seçimindən istifadə etməzdən əvvəl bu cihazın data bölməsi ext4-ə çevrilməlidir. Bu rejimdə proqram təminatının bütövlüyü təmin edilə bilməz və yükləyicinin kilidi açıq halda telefonda saxlanılan data risk altında ola bilər. 16 KB seçimini aktivləşdirmək üçün bundan sonra daha bir yenidən başlatma tələb ediləcək. Bu rejimdə bir dəfə yenidən başlatma ilə 4KB və 16KB rejimi arasında dəyişə bilərsiniz. Bu rejimlərdə bəzi funksiyalar deaktiv ediləcək, buna görə də bəzi proqramlar işləməyə bilər. Cihazı istehsal rejiminə qaytarmaq üçün 4KB rejiminə qaytarmalı və sonra yükləyicini kilidləməlisiniz ki, bu da cihazı zavod ayarlarına sıfırlayır. Cihaz Android-ə yükləndikdən sonra Developer seçimlərində OEM kiliddən çıxarılmasını deaktiv edin. Təsdiqdən sonra cihaz datası silinəcək və fayl sistemi ext4-ə dəyişdiriləcək. Bu tamamlandıqdan sonra 16KB-ni yenidən aktivləşdirmək üçün geri qayıdın."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Bütün datanı silin"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Data bölməsini yenidən formatlamaq və ext4-ə ayarlamaq alınmadı."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB rejimi üçün yükləyici kilidaçması tələb edilir"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Bu cihaz 16KB developer seçimindən istifadə etməzdən əvvəl yükləyicinin kilidini açmalıdır. Bu rejimdə proqram təminatının bütövlüyü təmin edilə bilməz və yükləyicinin kilidi açıq halda telefonda saxlanılan data risk altında ola bilər. 16KB rejimi aktivləşdirildikdə bütün istifadəçi datası və ayarları silinəcək. Yükləyici kilidi açıldıqdan sonra 16KB seçimini aktivləşdirmək üçün iki dəfə yenidən başlatma tələb olunacaq. Bu rejimdə bir dəfə yenidən başlatma ilə 4KB və 16KB rejimi arasında dəyişə bilərsiniz. Bu rejimlərdə bəzi funksiyalar deaktiv ediləcək, buna görə də bəzi proqramlar işləməyə bilər. Cihazı istehsal rejiminə qaytarmaq üçün yenidən 4KB rejiminə keçməli və sonra cihazda OEM/yükləyici kilidləməsi (zavod ayarlarına sıfırlayır) icra etməlisiniz. Yükləyicini kiliddən çıxarın və yenidən cəhd edin. Təlimatlara burada baxa bilərsiniz: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB səhifə-aqnostik rejimindən istifadə"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Səhifə-aqnostik rejiminin 4KB rejimindəsiniz. Bu rejimdə proqram təminatının bütövlüyü təmin edilə bilməz və yükləyicinin kilidi açıq halda telefonda saxlanılan data risk altında ola bilər. Bu rejimlərdə bəzi funksiyalar deaktiv ediləcək, buna görə də bəzi proqramlar işləməyə bilər. İstehsal rejiminə yenidən daxil olmaq üçün cihazın yükləyicisini kilidləməlisiniz. Toxunaraq ətraflı oxuyun."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Səhifə-aqnostik rejiminin 4KB rejimindəsiniz. Bu rejimdə proqram təminatının bütövlüyü təmin edilə bilməz və yükləyicinin kilidi açıq halda telefonda saxlanılan data risk altında ola bilər. Bu rejimlərdə bəzi funksiyalar deaktiv ediləcək, buna görə də bəzi proqramlar işləməyə bilər. İstehsal rejiminə yenidən daxil olmaq üçün cihazın yükləyicisini kilidləməlisiniz. Bununla cihaz yenidən zavod ayarlarına qayıdacaq və istehsal ayarları bərpa ediləcək. Cihaz Android-ə yükləndikdən sonra Developer seçimlərində OEM kiliddən çıxarılmasını deaktiv edin. Cihaz Android-ə yüklənmirsə və ya qeyri-sabitdirsə, cihazı buradan əldə edilən ən son fabrik şəkilləri ilə yenidən işə salın: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> yaxud <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> istifadə edin və \"Cihaz datasını silin\", \"Yükləyicini kilidləyin\" və \"Bütün hissələri məcburi yükləyin\" seçin."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB səhifə-aqnostik rejimindən istifadə"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Səhifə-aqnostik rejiminin 16KB rejimindəsiniz. Bu rejimdə proqram təminatının bütövlüyü təmin edilə bilməz və yükləyicinin kilidi açıq halda telefonda saxlanılan data risk altında ola bilər. Bu rejimlərdə bəzi funksiyalar deaktiv ediləcək, buna görə də bəzi proqramlar işləməyə bilər. İstehsal rejiminə yenidən daxil olmaq üçün yenidən 4K rejiminə keçməli və sonra cihazın yükləyicisini kilidləməlisiniz. Toxunaraq ətraflı oxuyun."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Səhifə-aqnostik rejiminin 16KB rejimindəsiniz. Bu rejimdə proqram təminatının bütövlüyü təmin edilə bilməz və yükləyicinin kilidi açıq halda telefonda saxlanılan data risk altında ola bilər. Bu rejimlərdə bəzi funksiyalar deaktiv ediləcək, buna görə də bəzi proqramlar işləməyə bilər. İstehsal rejiminə yenidən daxil olmaq üçün yenidən 4K rejiminə keçməli və sonra cihazın yükləyicisini kilidləməlisiniz. Bununla cihaz yenidən zavod ayarlarına qayıdacaq və istehsal ayarları bərpa ediləcək. Cihaz Android-ə yükləndikdən sonra Developer seçimlərində OEM kiliddən çıxarılmasını deaktiv edin. Cihaz Android-ə yüklənmirsə və ya qeyri-sabitdirsə, cihazı buradan əldə edilən ən son fabrik şəkilləri ilə yenidən işə salın: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> yaxud <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> istifadə edin və \"Cihaz datasını silin\", \"Yükləyicini kilidləyin\" və \"Bütün hissələri məcburi yükləyin\" seçin."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB səhifə-aqnostik rejimi"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Ətraflı məlumat"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Baq hesabatı idarəedicisi"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Tətbiq bərkidilməsi"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Developer seçimlərini işlədin"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Çap xidməti"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Bir neçə istifadəçiyə icazə verin"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"icazə, çox sayda, istifadəçi, icazə, çox"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"çoxsaylı, istifadəçilər, profillər, insanlar, hesablar, keçirici, çoxlu"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Wi-Fi vasitəsilə sazlayın"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-b+sr+Latn/arrays.xml b/res/values-b+sr+Latn/arrays.xml
index 6dea39e..b4da200 100644
--- a/res/values-b+sr+Latn/arrays.xml
+++ b/res/values-b+sr+Latn/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Vreme za spavanje"</item>
+ <item msgid="4152450357280759894">"Vožnja"</item>
+ <item msgid="7096549258219399423">"Imerzivno"</item>
+ <item msgid="2760716776980432977">"Upravljano"</item>
+ <item msgid="601734478369121764">"Zvezda"</item>
+ <item msgid="6243809315432780521">"Kalendar"</item>
+ <item msgid="4913577903148415331">"Vreme"</item>
+ <item msgid="3653377604690057780">"Pozorište"</item>
+ <item msgid="3843711267408385410">"Cvet"</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 000c565..018ca1b 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Podešavanja slušnog aparata"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Prečica, kompatibilnost sa slušnim aparatima"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Zadata podešavanja"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Ne postoje zadata podešavanja koja je programirao audiolog"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Ažuriranje zadatih podešavanja nije uspelo"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio izlaz"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"O audio izlazu"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saznajte više o otključavanju sata"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Dodaj sat"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Ukloni sat"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Otisak prsta i otključavanje licem"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Otključavanje licem i otiskom prsta"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Otključavanje licem i otiskom prsta za posao"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Treba da podesite"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Lice i otisci prsta su dodati"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalirajte aplikacije"</b>\n"Aplikacije za koje želite da budu privatne instalirajte u prostoru"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Imajte na umu"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacije se zaustavljaju kada zaključate prostor"</b>\n"Kada zaključate prostor, aplikacije u njemu se zaustavljaju i ne šalju vam obaveštenja"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privatni prostori nisu pogodni za aplikacije koje treba da rade u pozadini ili šalju važna obaveštenja, poput medicinskih aplikacija. Razlog je to što se obaveštenja i aktivnosti u pozadini zaustavljaju kada je prostor zaključan.\n\nAplikacije u privatnom prostoru se neće prikazivati u menadžeru dozvola, na kontrolnoj tabli za privatnost ni u drugim podešavanjima kada je privatan prostor zaključan.\n\nPrivatan prostor ne možete da premestite na novi uređaj. Morate da podesite drugi privatan prostor ako želite da ga koristite na drugom uređaju.\n\nSvako ko vaš uređaj poveže sa računarom ili na njega instalira štetne aplikacije, moći će da pristupi vašem privatnom prostoru."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privatni prostori nisu pogodni za aplikacije koje treba da rade u pozadini ili šalju važna obaveštenja, poput medicinskih aplikacija. Razlog je to što se obaveštenja i aktivnosti u pozadini zaustavljaju kada je prostor zaključan.\n\nAplikacije u privatnom prostoru se neće prikazivati u menadžeru dozvola, na kontrolnoj tabli za privatnost ni u drugim podešavanjima kada je privatan prostor zaključan.\n\nPrivatan prostor ne možete da vratite na novi uređaj. Morate da podesite drugi prostor ako želite da ga koristite na drugom uređaju.\n\nSvako ko vaš uređaj poveže sa računarom ili na njega instalira zlonamerne aplikacije, moći će da pristupi vašem privatnom prostoru."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Saznajte više o privatnom prostoru"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Potrajaće nekoliko trenutaka"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Podešava se privatni prostor…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Želite da restartujete uređaj?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC evidentiranje detalja je namenjeno samo u svrhe programiranja. Dodatni NFC podaci uvršteni su u izveštaje o greškama, koji mogu da sadrže privatne podatke. Restartujte uređaj da biste promenili ovo podešavanje."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restartuj"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Prebacivanje"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"preslikati"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Omogući bežični prikaz"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Prilagodljivo"</string>
<string name="brightness" msgid="6216871641021779698">"Nivo osvetljenosti"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Prilagodljiva osvetljenost"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"O priladoljivoj osvetljenosti"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Osvetljenost ekrana će se automatski prilagođavati okruženju i aktivnostima. Možete ručno da pomerate klizač da bi prilagodljivo podešavanje osvetljenosti naučilo šta vam odgovara."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Uključeno"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Isključeno"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Izabrao je korisnik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Govor"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Brzina pokazivača"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Kontroler za igre"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Preusmeri vibraciju"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Preusmeri vibraciju na kontroler za igre kada je povezan"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Ipak nastavi"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Otkaži"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Podešavanja uvećanja"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Pomeranje jednim prstom"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Pomerajte oblast za uvećanje prevlačenjem jednog prsta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Pomerajte oblast za uvećanje prevlačenjem dva prsta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nije dostupno kada se uvećava samo deo ekrana"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Dodirnite dugme da biste zumirali"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Brzo uvećajte ekran da bi sadržaj bio veći"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Da biste uvećali:</b><br/> {0,number,integer}. Koristite prečicu da biste pokrenuli uvećanje<br/> {1,number,integer}. Dodirnite ekran<br/> {2,number,integer}. Prevlačite pomoću 2 prsta da biste se kretali po ekranu<br/> {3,number,integer}. Skupite 2 prsta da biste prilagodili zumiranje<br/> {4,number,integer}. Koristite prečicu da biste zaustavili uvećanje<br/><br/> <b>Da biste privremeno uvećali:</b><br/> {0,number,integer}. Uverite se da je tip uvećanja podešen na ceo ekran<br/> {1,number,integer}. Koristite prečicu da biste pokrenuli uvećanje<br/> {2,number,integer}. Dodirnite i zadržite bilo koji deo ekrana<br/> {3,number,integer}. Prevlačite prst da biste se kretali po ekranu<br/> {4,number,integer}. Podignite prst da biste zaustavili uvećanje"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kada je uvećanje uključeno, možete da uvećate ekran.\n\n"<b>"Da biste zumirali"</b>", pokrenite uvećanje, pa dodirnite bilo koji deo ekrana.\n"<ul><li>"Prevlačite pomoću 2 ili više prstiju da biste pomerali prikaz"</li>\n<li>"Skupite 2 ili više prstiju da biste prilagodili zumiranje"</li></ul>\n\n<b>"Za privremeno zumiranje"</b>" pokrenite uvećanje, pa dodirnite i zadržite bilo koji deo ekrana.\n"<ul><li>"Prevlačite da biste se kretali po ekranu"</li>\n<li>"Podignite prst da biste umanjili prikaz"</li></ul>\n\n"Ne možete da uvećavate tastaturu ili traku za navigaciju."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. stranica od <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Prečica za dugme Pristupačnost"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nijedan}=1{1 raspored je podešen}one{# raspored je podešen}few{# rasporeda su podešena}other{# rasporeda je podešeno}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne uznemiravaj"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioritetni režimi"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<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="5135520719771212697">"Izaberite tip aktiviranja"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Vreme"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Na primer „9:30–17:00“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Na primer „Lični kalendar“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ograničite prekide"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Uključite režim Ne uznemiravaj"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Zvukovi alarma i medija mogu da prekinu"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Rasporedi"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Izbriši rasporede"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Izbriši"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Dodajte kalendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Koristite svoj kalendar"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Raspored"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Podesite raspored"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Raspored"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> s, <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Raspored"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Utišajte telefon u određeno vreme"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Omogućite prekide koji proizvode zvuk"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokiraj vizuelna ometanja"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Dozvoli vizuelne signale"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Obaveštenja koja dozvoljavate"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Budite prisutni"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Dodatne radnje"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Podešavanja prikaza"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opcije prikaza"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"omogući tamnu temu"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Prebacite OS i aplikacije na svetao tekst na tamnoj pozadini. To može da bude lakše za oči i dovodi do znatne uštede baterije na nekim uređajima"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nema promena ekrana}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}one{{effect_1}, {effect_2} i još #}few{{effect_1}, {effect_2} i još #}other{{effect_1}, {effect_2} i još #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtriraj prekide"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nijedan prekid se ne filtrira"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcije prikaza za filtrirana obaveštenja"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kada je uključen režim Ne uznemiravaj"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Bez zvučnog signala za obaveštenja"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorije"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Drugo"</string>
<string name="no_channels" msgid="4716199078612071915">"Ova aplikacija nije postavila nijedno obaveštenje"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Prikaži nekorišćene kategorije"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Dodatna podešavanja u aplikaciji"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Prikaži nekorišćene kategorije"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Sakrij nekorišćene kategorije"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Izabrane aplikacije"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nijedna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Sve"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Dozvoli da aplikacije zanemaruju"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikacije koje mogu da prekidaju"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Izaberite još aplikacija"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Pređite samo na alarme na jedan sat sve do {time}}one{Pređite samo na alarme na # sat sve do {time}}few{Pređite samo na alarme na # sata sve do {time}}other{Pređite samo na alarme na # sati sve do {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Prebacuje u režim samo sa alarmima do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Prebacuje u režim uvek prekidaj"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Preimenuj"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Promeni ikonu"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Promeni ikonu"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Upozorenje"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Zatvori"</string>
<string name="device_feedback" msgid="5351614458411688608">"Šalji povratne informacije o uređaju"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Da bi ovaj uređaj mogao da koristi opciju za programera od 16 kB, njegova particija podataka treba da se konvertuje u ext4. U ovom režimu ne može da se garantuje integritet softvera, pa podaci koji se čuvaju na telefonu dok je pokretački program otključan mogu da budu ugroženi. Aktiviranje opcije od 16 kB zahteva još jedno restartovanje. Kada budete u ovom režimu, moći ćete da prelazite sa režima od 4 kB na režim od 16 kB i obratno uz jedno restartovanje. Neke funkcije su onemogućene u ovim režimima, što znači da neke aplikacije možda neće raditi. Da biste uređaj vratili na proizvodni režim, treba da ga vratite na režim od 4 kB i zaključate pokretački program, čime će se uređaj resetovati na fabrička podešavanja. Kada se na uređaju uključi Android, onemogućite OEM otključavanje u Opcijama za programera. Uređaj će posle potvrde biti obrisan, a sistem fajlova promenjen na ext4. Kada se to završi, vratite se ovde da biste ponovo omogućili režim od 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Obriši sve podatke"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Reformatiranje i brisanje particije podataka na ext4 nije uspelo."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Treba da otključate pokretački program da biste koristili 16 KB režim"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Da bi ovaj uređaj mogao da koristi opciju za programera od 16 kB, na njemu treba da bude otključan pokretački program. U ovom režimu ne može da se garantuje integritet softvera, pa mogu biti ugroženi podaci koji se čuvaju na telefonu dok je pokretački program otključan. Kada se aktivira režim od 16 kB, svi podaci i podešavanja korisnika će biti izbrisani. Kada se pokretački program otključa, aktiviranje opcije od 16 kB zahteva dva restartovanja. Kada budete u ovom režimu, moći ćete da prelazite sa režima od 4 kB na režim od 16 kB i obratno uz jedno restartovanje. Neke funkcije su onemogućene u ovim režimima, što znači da neke aplikacije možda neće raditi. Da biste uređaj vratili na proizvodni režim, treba da ga vratite na režim od 4 kB i zaključate OEM ili pokretački program na uređaju (što će ga resetovati na fabrička podešavanja). Otključajte pokretački program i probajte ponovo. Uputstva kako to da uradite potražite na <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Koristite režim od 4 kB nezavisan od veličine stranice"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Koristite režim od 4 kB u okviru režima nezavisnog od veličine stranice. U ovom režimu ne može da se garantuje integritet softvera, pa podaci koji se čuvaju na telefonu dok je pokretački program otključan mogu da budu ugroženi. Neke funkcije su onemogućene u ovim režimima, što znači da neke aplikacije možda neće raditi. Da biste uređaj ponovo vratili u proizvodni režim, morate da zaključate pokretački program uređaja. Dodirnite da biste pročitali više."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Koristite režim od 4 kB u okviru režima nezavisnog od veličine stranice. U ovom režimu ne može da se garantuje integritet softvera, pa mogu biti ugroženi podaci koji se čuvaju na telefonu dok je pokretački program otključan. Neke funkcije su onemogućene u ovim režimima, što znači da neke aplikacije možda neće raditi. Da biste uređaj ponovo vratili u proizvodni režim, morate da zaključate pokretački program uređaja. To će ponovo resetovati uređaj na fabrička podešavanja i vratiti ga na proizvodna podešavanja. Kada se na uređaju uključi Android, onemogućite OEM otključavanje u Opcijama za programera. Ako je uređaj nestabilan ili se na njemu ne uključi Android, ponovo ga flešujte koristeći najnovije slike sa fabričkim podešavanjima sa <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Možete i da koristite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i izaberete Obriši uređaj, Zaključaj pokretački program i Prinudno flešuj sve particije."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Koristite režim od 16 kB nezavisan od veličine stranice"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Koristite režim od 16 kB u okviru režima nezavisnog od veličine stranice. U ovom režimu ne može da se garantuje integritet softvera, pa podaci koji se čuvaju na telefonu dok je pokretački program otključan mogu da budu ugroženi. Neke funkcije su onemogućene u ovim režimima, što znači da neke aplikacije možda neće raditi. Da biste uređaj ponovo vratili u proizvodni režim, morate da ga vratite na režim od 4 kB i zaključate pokretački program uređaja. Dodirnite da biste pročitali više."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Koristite režim od 16 kB u okviru režima nezavisnog od veličine stranice. U ovom režimu ne može da se garantuje integritet softvera, pa podaci koji se čuvaju na telefonu dok je pokretački program otključan mogu da budu ugroženi. Neke funkcije su onemogućene u ovim režimima, što znači da neke aplikacije možda neće raditi. Da biste uređaj ponovo vratili u proizvodni režim, morate da ga vratite na režim od 4 kB i zaključate pokretački program uređaja. To će ponovo resetovati uređaj na fabrička podešavanja i vratiti ga na proizvodna podešavanja. Kada se na uređaju uključi Android, onemogućite OEM otključavanje u Opcijama za programera. Ako je uređaj nestabilan ili se na njemu ne uključi Android, ponovo ga flešujte koristeći najnovije slike sa fabričkim podešavanjima sa <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Možete i da koristite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i izaberete Obriši uređaj, Zaključaj pokretački program i Prinudno flešuj sve particije."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Režim od 16 kB nezavisan od veličine stranice"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Pročitajte više"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Obrađivač izveštaja o grešci"</string>
@@ -5010,7 +5074,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Koristi kačenje aplikacija"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Koristi opcije za programere"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristi uslugu štampanja"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dozvoli više korisnika"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"omogućiti, više, korisnik, dozvoliti, mnogo"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"više, korisnici, profili, ljudi, nalozi, promena, veliki broj"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Koristi bežično otklanjanje grešaka"</string>
@@ -5354,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml
index 2a7b529..6c8307a 100644
--- a/res/values-be/arrays.xml
+++ b/res/values-be/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Час сну"</item>
+ <item msgid="4152450357280759894">"За рулём"</item>
+ <item msgid="7096549258219399423">"З эфектам прысутнасці"</item>
+ <item msgid="2760716776980432977">"Пад кіраваннем"</item>
+ <item msgid="601734478369121764">"Зорка"</item>
+ <item msgid="6243809315432780521">"Каляндар"</item>
+ <item msgid="4913577903148415331">"Час"</item>
+ <item msgid="3653377604690057780">"Тэатр"</item>
+ <item msgid="3843711267408385410">"Кветка"</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 62776ab..efbaeae 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Налады слыхавога апарата"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Хуткае ўключэнне спецыяльных магчымасцей, сумяшчальнасць са слыхавымі апаратамі"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Набор налад"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Ваш сурдолаг не запраграмаваў ніякіх набораў налад"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Не ўдалося абнавіць набор налад"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аўдыявыхад"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Пра аўдыявыхад"</string>
@@ -134,12 +135,12 @@
<string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"Bluetooth уключаны"</string>
<string name="previous_connected_see_all" msgid="7759413145713251328">"Паказаць усе"</string>
<string name="connected_device_fast_pair_device_see_all" msgid="4898279230458128620">"Паглядзець усе"</string>
- <string name="stylus_device_details_title" msgid="7618295136015480864">"Стылус"</string>
+ <string name="stylus_device_details_title" msgid="7618295136015480864">"Пяро"</string>
<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_connected_devices_title" msgid="2823967577941359812">"Стылус"</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>
<string name="proxy_clear_text" msgid="6529658759984031149">"Ачысціць"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Даведацца больш пра разблакіроўку гадзіннікам"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Дадаць гадзіннік"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Выдаліць гадзіннік"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Разблакіроўка тварам і адбіткам пальца"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Распазнаванне твару і разблакіроўка адбіткам пальца"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Разблакіроўка тварам і адбіткам пальца для працоўнага профілю"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Патрабуецца наладжванне"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Дададзены твар і адбіткі пальцаў"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Перазапусціць прыладу?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Падрабязнае вядзенне журналаў NFC прызначана толькі для мэт распрацоўкі. У справаздачы пра памылкі ўключаюцца дадатковыя даныя NFC, якія могуць утрымліваць прыватную інфармацыю. Перазапусціце прыладу, каб змяніць гэту наладу."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Перазапусціць"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Трансляцыя"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"адлюстраванне"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Уключыць бесправадны дысплей"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Адаптыўныя"</string>
<string name="brightness" msgid="6216871641021779698">"Узровень яркасці"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Адаптыўная яркасць"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Інфармацыя пра адаптыўную яркасць"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Яркасць экрана будзе мяняцца аўтаматычна, у залежнасці ад наваколля і вашых дзеянняў. Можна пераключаць паўзунок уручную, каб дастасаваць функцыю да вашых параметраў."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Уключана"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Выключана"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Прылада кiравання гульнёй"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Перанакіраванне вібрасігналу"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Адпраўляць вібрасігнал на гульнявы кантролер пры падключэнні."</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Усё роўна працягнуць"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Скасаваць"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Налады павелічэння"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Зрушэнне адным пальцам"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Перамяшчайце лупу адным пальцам"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Для перамяшчэння па экране перасоўвайце адзін палец"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Вобласць павелічэння перацягваецца адным пальцам."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Вобласць павелічэння перацягваецца двума пальцамі."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Недаступна, калі павялічваецца толькі частка экрана"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Дакраніцеся да кнопкі, каб павялічыць маштаб"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Хутка павялічвайце маштаб экрана"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Каб павялічыць маштаб:</b><br/> {0,number,integer}. Скарыстайце хуткі доступ для запуску функцыі павелічэння<br/> {1,number,integer}. Націсніце на экран<br/> {2,number,integer}. Каб перамясціць выяву, перацягніце яе двума пальцамі<br/> {3,number,integer}. Звядзіце ці развядзіце два пальцы для змены маштабу<br/> {4,number,integer}. Скарыстайце хуткі доступ, каб выключыць функцыю павелічэння<br/><br/><b>Каб часова павялічыць маштаб:</b><br/> {0,number,integer}. Упэўніцеся, што ў якасці тыпу павелічэння выбраны поўнаэкранны рэжым<br/> {1,number,integer}. Скарыстайце хуткі доступ для запуску функцыі павелічэння<br/> {2,number,integer}. Утрымлівайце палец націснутым у любым месцы экрана<br/> {3,number,integer}. Каб перамясціць выяву, перацягніце яе пальцам<br/> {4,number,integer}. Падніміце палец, каб спыніць функцыю павелічэння"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Каб павялічыць маштаб:</b><br/> {0,number,integer}. Скарыстайце хуткі доступ для запуску функцыі павелічэння<br/> {1,number,integer}. Націсніце на экран<br/> {2,number,integer}. Для перамяшчэння па экране перасоўвайце два пальцы<br/> {3,number,integer}. Звядзіце ці развядзіце два пальцы для змены маштабу<br/> {4,number,integer}. Скарыстайце хуткі доступ для выключэння функцыі павелічэння<br/><br/> Таксама вы можаце часова павялічыць маштаб і выканаць іншыя дзеянні."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Каб павялічыць маштаб:</b><br/> {0,number,integer}. Скарыстайце хуткі доступ для запуску функцыі павелічэння<br/> {1,number,integer}. Націсніце на экран<br/> {2,number,integer}. Для перамяшчэння па экране перасоўвайце адзін або два пальцы<br/> {3,number,integer}. Звядзіце ці развядзіце два пальцы для змены маштабу<br/> {4,number,integer}. Скарыстайце хуткі доступ для выключэння функцыі павелічэння<br/><br/> Таксама вы можаце часова павялічыць маштаб і выканаць іншыя дзеянні."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Калі ўключана функцыя павелічэння, вы можаце павялічыць маштаб на экране.\n\n"<b>"Для гэтага"</b>" запусціце функцыю павелічэння, а пасля націсніце ў любым месцы экрана.\n"<ul><li>"Каб прагартаць, перацягніце пальцамі (двума ці больш)."</li>\n<li>"Каб адрэгуляваць маштаб, звядзіце ці развядзіце пальцы (два ці больш)."</li></ul>\n\n<b>"Каб часова змяніць маштаб"</b>", запусціце функцыю павелічэння, потым утрымлівайце націснутым любое месца на экране.\n"<ul><li>"Перацягніце для навігацыі па экране."</li>\n<li>"Падыміце палец, каб паменшыць маштаб."</li></ul>\n\n"Павелічэнне маштабу клавіятуры ці панэлі навігацыі не прадугледжана."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Старонка <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">"Хуткае ўключэнне: кнопка спецыяльных магчымасцей"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ніводнага}=1{Зададзены 1 расклад}one{Зададзены # расклад}few{Зададзена # расклады}many{Зададзена # раскладаў}other{Зададзена # раскладу}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Не турбаваць"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Прыярытэтныя рэжымы"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Атрымліваць апавяшчэнні толькі ад важных людзей і праграм"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Выбраць тып актывацыі"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Час"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Напрыклад: \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Каляндар"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Напрыклад: \"асабісты каляндар\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Абмежаванне колькасці непатрэбных апавяшчэнняў"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Выдаліць расклады"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Выдаліць"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Дадайце каляндар"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Перайсці да календара"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Па раскладзе"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Задаць расклад"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Расклад"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Выключаць гук тэлефона ў пэўны час"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Дазволіць гукавыя апавяшчэнні"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Блакіроўка візуальных апавяшчэнняў"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Дазволіць візуальныя сігналы"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Апавяшчэнні, якія будуць адлюстроўвацца"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Захоўвайце канцэнтрацыю"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Дадатковыя дзеянні"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Налады адлюстравання"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Параметры адлюстравання"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"уключыць цёмную тэму"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Пераключэнне АС і праграм на адлюстраванне светлага тэксту на цёмным фоне, што дазваляе знізіць нагрузку на зрок і на некаторых прыладах значна эканоміць зарад акумулятара"</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} і яшчэ #}few{{effect_1}, {effect_2} і яшчэ #}many{{effect_1}, {effect_2} і яшчэ #}other{{effect_1}, {effect_2} і яшчэ #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Адфільтроўваць апавяшчэнні"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Апавяшчэнні не адфільтроўваюцца"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Паказаць неўжывальныя катэгорыі"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Схаваць неўжывальныя катэгорыі"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"Усе"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Пераключэнне на рэжым \"Толькі будзільнікі\" на адну гадзіну да {time}}one{Пераключэнне на рэжым \"Толькі будзільнікі\" на # гадзіну да {time}}few{Пераключэнне на рэжым \"Толькі будзільнікі\" на # гадзіны да {time}}many{Пераключэнне на рэжым \"Толькі будзільнікі\" на # гадзін да {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Перайменаваць"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Змяніць значок"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Змяніць значок"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Заўвага"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Закрыць"</string>
<string name="device_feedback" msgid="5351614458411688608">"Адправіць водгук пра гэту прыладу"</string>
@@ -4286,7 +4343,7 @@
<string name="system_navigation_title" msgid="4890381153527184636">"Рэжым навігацыі"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"2-кнопачная навігацыя"</string>
<string name="swipe_up_to_switch_apps_summary" msgid="1415457307836359560">"Каб пераключыцца на іншую праграму, правядзіце пальцам уверх па кнопцы галоўнага экрана. Каб убачыць усе праграмы, правядзіце яшчэ раз. Каб вярнуцца, націсніце кнопку \"Назад\"."</string>
- <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Бяспека і экстранны выклік"</string>
+ <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Фізічная бяспека і экстранныя сітуацыі"</string>
<string name="emergency_dashboard_summary" msgid="401033951074039302">"Экстранны выклік, медыцынская інфармацыя, абвесткі"</string>
<string name="edge_to_edge_navigation_title" msgid="714427081306043819">"Навігацыя жэстамі"</string>
<string name="edge_to_edge_navigation_summary" msgid="818109176611921504">"Каб вярнуцца на галоўную старонку, правядзіце па экране пальцам знізу ўверх. Каб пераключыцца на іншую праграму, правядзіце па экране пальцам знізу ўверх, затрымайцеся, а потым адпусціце. Каб вярнуцца назад, правядзіце па экране пальцам управа ці ўлева."</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Каб выкарыстоўваць рэжым 16 КБ у параметрах распрацоўшчыка, раздзел даных на гэтай прыладзе трэба пераўтварыць у ext4. У гэтым рэжыме цэласнасць праграмнага забеспячэння не гарантуецца. Існуе рызыка страціць даныя, якія былі захаваны на тэлефоне, калі загрузчык быў разблакіраваны. Для ўключэння параметра 16 КБ патрабуецца паўторная перазагрузка. Пасля таго як вы ўключыце гэты рэжым, пераключэнне паміж рэжымамі 4 КБ і 16 КБ будзе суправаджацца толькі адной перазагрузкай. Асобныя функцыі будуць адключаны ў гэтых рэжымах, з-за чаго некаторыя праграмы могуць не працаваць. Каб вярнуць прыладу ў эксплуатацыйны рэжым, вам трэба пераключыцца ў рэжым 4 КБ і заблакіраваць загрузчык, што прывядзе да скіду прылады да заводскіх налад. Пасля загрузкі Android на прыладзе выключыце разблакіроўку OEM у Параметрах распрацоўшчыка. Усе даныя будуць выдалены з прылады, а файлавая сістэма пасля пацвярджэння будзе зменена на ext4. Пасля завяршэння вярніцеся, каб зноў уключыць рэжым 16 КБ."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Сцерці ўсе даныя"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Не ўдалося ачысціць раздзел даных і перафармаціраваць яго ў ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Для рэжыму 16 КБ патрабуецца разблакіроўка загрузчыка"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Каб выкарыстоўваць рэжым 16 КБ у параметрах распрацоўшчыка, трэба разблакіраваць загрузчык на прыладзе. У гэтым рэжыме цэласнасць праграмнага забеспячэння не гарантуецца. Існуе рызыка страціць даныя, якія былі захаваны на тэлефоне, калі загрузчык быў разблакіраваны. Калі рэжым 16 КБ уключыцца, усе даныя і налады карыстальніка будуць выдалены. Калі загрузчык будзе разблакіраваны, для ўключэння параметра 16 КБ спатрэбяцца дзве перазагрузкі. Пасля таго як вы ўключыце гэты рэжым, пераключэнне паміж рэжымамі 4 КБ і 16 КБ будзе суправаджацца толькі адной перазагрузкай. Асобныя функцыі будуць адключаны ў гэтых рэжымах, з-за чаго некаторыя праграмы могуць не працаваць. Каб вярнуць прыладу ў эксплуатацыйны рэжым, вам трэба пераключыцца ў рэжым 4 КБ і заблакіраваць OEM ці загрузчык (што прывядзе да скіду прылады да заводскіх налад). Разблакіруйце загрузчык і паўтарыце спробу. Інструкцыі, як гэта зрабіць, глядзіце на старонцы <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Дзейнічае рэжым 4 КБ, які не залежыць ад памеру старонкі памяці"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"У вас уключаны рэжым, які не залежыць ад памеру старонкі памяці і працуе з ядром для старонак памяці памерам 4 КБ. У гэтым рэжыме цэласнасць праграмнага забеспячэння не гарантуецца. Існуе рызыка страціць даныя, якія былі захаваны на тэлефоне, калі загрузчык быў разблакіраваны. Асобныя функцыі будуць адключаны ў гэтых рэжымах, з-за чаго некаторыя праграмы могуць не працаваць. Каб паўторна ўвайсці ў эксплуатацыйны рэжым, заблакіруйце загрузчык на прыладзе. Націсніце, каб чытаць далей."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"У вас уключаны рэжым, які не залежыць ад памеру старонкі памяці і працуе з ядром для старонак памяці памерам 4 КБ. У гэтым рэжыме цэласнасць праграмнага забеспячэння не гарантуецца. Існуе рызыка страціць даныя, якія былі захаваны на тэлефоне, калі загрузчык быў разблакіраваны. Асобныя функцыі будуць адключаны ў гэтых рэжымах, з-за чаго некаторыя праграмы могуць не працаваць. Каб паўторна ўвайсці ў эксплуатацыйны рэжым, заблакіруйце загрузчык на прыладзе. Пасля гэтага адбудзецца яе паўторны скід да заводскіх налад. Пасля загрузкі Android на прыладзе выключыце разблакіроўку OEM у Параметрах распрацоўшчыка. Калі на прыладзе не ўдаецца запусціць АС Android ці яе праца нестабільная, перапрашыйце прыладу, выкарыстоўваючы апошнія версіі заводскіх вобразаў, якія можна спампаваць тут: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Або перайдзіце па спасылцы <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> і выберыце \"Ачысціць прыладу\", \"Заблакіраваць загрузчык\" і \"Перапрашыць усе раздзелы\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Дзейнічае рэжым 16 КБ, які не залежыць ад памеру старонкі памяці"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"У вас уключаны рэжым, які не залежыць ад памеру старонкі памяці і працуе з ядром для старонак памяці памерам 16 КБ. У гэтым рэжыме цэласнасць праграмнага забеспячэння не гарантуецца. Існуе рызыка страціць даныя, якія былі захаваны на тэлефоне, калі загрузчык быў разблакіраваны. Асобныя функцыі будуць адключаны ў гэтых рэжымах, з-за чаго некаторыя праграмы могуць не працаваць. Каб паўторна ўвайсці ў эксплуатацыйны рэжым, пераключыцеся на рэжым 4 КБ і заблакіруйце загрузчык на прыладзе. Націсніце, каб чытаць далей."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"У вас уключаны рэжым, які не залежыць ад памеру старонкі памяці і працуе з ядром для старонак памяці памерам 16 КБ. У гэтым рэжыме цэласнасць праграмнага забеспячэння не гарантуецца. Існуе рызыка страціць даныя, якія былі захаваны на тэлефоне, калі загрузчык быў разблакіраваны. Асобныя функцыі будуць адключаны ў гэтых рэжымах, з-за чаго некаторыя праграмы могуць не працаваць. Каб паўторна ўвайсці ў эксплуатацыйны рэжым, пераключыцеся на рэжым 4 КБ і заблакіруйце загрузчык на прыладзе. Пасля гэтага адбудзецца яе паўторны скід да заводскіх налад. Пасля загрузкі Android на прыладзе выключыце разблакіроўку OEM у Параметрах распрацоўшчыка. Калі на прыладзе не ўдаецца запусціць АС Android ці яе праца нестабільная, перапрашыйце прыладу, выкарыстоўваючы апошнія версіі заводскіх вобразаў, якія можна спампаваць тут: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Або перайдзіце па спасылцы <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> і выберыце \"Ачысціць прыладу\", \"Заблакіраваць загрузчык\" і \"Перапрашыць усе раздзелы\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Рэжым, які не залежыць ад памеру старонкі памяці і працуе з ядром для старонак памяці памерам 16 КБ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Чытаць далей"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Апрацоўшчык справаздачы пра памылкі"</string>
@@ -5011,7 +5071,8 @@
<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="6686858308083037810">"Дазволіць некалькі карыстальнікаў"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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">"Выкарыстоўваць адладку па Wi-Fi"</string>
@@ -5355,4 +5416,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
index 7726731..4c1460a 100644
--- a/res/values-bg/arrays.xml
+++ b/res/values-bg/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Време за сън"</item>
+ <item msgid="4152450357280759894">"Шофиране"</item>
+ <item msgid="7096549258219399423">"Реалистично"</item>
+ <item msgid="2760716776980432977">"Управлявано"</item>
+ <item msgid="601734478369121764">"Звезда"</item>
+ <item msgid="6243809315432780521">"Календар"</item>
+ <item msgid="4913577903148415331">"Време"</item>
+ <item msgid="3653377604690057780">"Театър"</item>
+ <item msgid="3843711267408385410">"Цвете"</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 6a545a5..ec378d6 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Настройки за слуховия апарат"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Пряк път, съвместимост със слухови апарати"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Предварително зададено"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Няма предвар. зададени стойности, програмирани от аудиолога"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Предварително зададените настройки не бяха актуализирани"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудиоизход"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Всичко за аудиоизхода"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Научете повече за „Отключване чрез часовника“"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Добавяне на часовник"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Премахване на часовника"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Отключване с лице и отпечатък"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Отключване с лице и отпечатък"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Отключване с лице и отпечатък за служебни цели"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Необходимо е настройване"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Добавени са лице и отпечатъци"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Да се рестартира ли устройството?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Подробното записване в регистрационни файлове посредством NFC е предназначено само за програмни цели. В сигналите за програмни грешки, които може да съдържат лична информация, са включени допълнителни данни от NFC. За да промените тази настройка, рестартирайте устройството си."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Рестартиране"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Предаване"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"дублиране"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Активир. на безжичния дисплей"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Адаптивни"</string>
<string name="brightness" msgid="6216871641021779698">"Ниво на яркостта"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Адаптивна яркост"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Всичко за адаптивната яркост"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Яркостта на екрана ще се коригира автоматично спрямо средата и активностите ви. Можете да преместите плъзгача ръчно, за да помогнете на функцията за адаптивна яркост да научи предпочитанията ви."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Вкл."</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Изключено"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Напред въпреки това"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Отказ"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Настройки за увеличението"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Преместване с един пръст"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Преместете областта за увеличаване, като плъзнете 1 пръст."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Преместете областта за увеличаване, като плъзнете 2 пръста."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Не е налице, когато се увеличава само част от екрана"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Променяйте мащаба с докосване на бутон"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Бързо увеличавайте мащаба на екрана, за да уголемите съдържанието"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>За да увеличите мащаба</b>:<br/> {0,number,integer}. Използвайте прекия път за стартиране на увеличението.<br/> {1,number,integer}. Докоснете екрана.<br/> {2,number,integer}. Плъзнете с 2 пръста, за да се придвижите по екрана.<br/> {3,number,integer}. Съберете 2 пръста, за да коригирате мащаба.<br/> {4,number,integer}. Използвайте прекия път за спиране на увеличението.<br/><br/> <b>За временно увеличаване на мащаба</b>:<br/> {0,number,integer}. За типа увеличение трябва да зададете „Цял екран“.<br/> {1,number,integer}. Използвайте прекия път за стартиране на увеличението.<br/> {2,number,integer}. Докоснете и задръжте произволно място на екрана.<br/> {3,number,integer}. Плъзнете пръст, за да се придвижите по екрана.<br/> {4,number,integer}. Вдигнете пръста си, за да спрете увеличението."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Когато функцията за увеличение е включена, можете да увеличавате мащаба на екрана.\n\n"<b>"За да промените мащаба"</b>", стартирайте функцията за увеличение, след което докоснете произволно място на екрана.\n"<ul><li>"Плъзнете 2 или повече пръсти, за да превъртите."</li>\n<li>"Съберете или разтворете 2 или повече пръсти, за да коригирате мащаба."</li></ul>\n\n<b>"За да промените временно мащаба"</b>", стартирайте функцията за увеличение, след което докоснете и задръжте произволно място на екрана.\n"<ul><li>"Плъзнете пръста си, за да се придвижите на екрана."</li>\n<li>"Вдигнете пръста си, за да намалите мащаба."</li></ul>\n\n"Не можете да увеличавате мащаба на клавиатурата или лентата за навигация."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Страница <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">"Пряк път чрез бутона за достъпност"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Приоритетни режими"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Получаване на известия само от важни хора и приложения"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Изберете тип активиране"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Час"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Напр. „9:30 – 17:00 ч.“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Календар"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Напр. „Личен календар“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ограничаване на прекъсванията"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Изтриване на графиците"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Изтриване"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Добавяне на календар"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Използване на календара ви"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"График"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Задаване на график"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"График"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Заглуш. на телефона в опр. моменти"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Разрешаване на звуковите прекъсвания"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Виз. предупрежд.: Блокиране"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Визуални сигнали: Разрешаване"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Известия, които могат да достигнат до вас"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Концентрация"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Допълнителни действия"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Настройки за показване"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Опции за показване"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"активиране на тъмната тема"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Превключете предпочитанията за операционната система и приложенията така, че да дадете предимство на светлия текст на тъмен фон. Това може да е по-щадящо за очите и да доведе до значителна икономия на батерията на някои устройства"</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="mode_notification_filter_title" msgid="443728483176031977">"Филтриране на прекъсванията"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Прекъсванията не се филтрират"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Показване на неизползв. категории"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Скриване на неизползв. категории"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Всички"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Преименуване"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Промяна на иконата"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Промяна на иконата"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Предупреждение"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Затваряне"</string>
<string name="device_feedback" msgid="5351614458411688608">"Отзиви за устройството"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Делът с данни на това устройство трябва да се преобразува към ext4, преди да се използва опцията за програмисти 16 KB. Целостта на софтуера не може да се гарантира в този режим. Също така данните, съхранявани на телефона, може да са изложени на риск, докато програмата за първоначално зареждане е отключена. За активирането на опцията 16 KB ще е необходимо още едно рестартиране след това. Когато сте в този режим, можете да превключвате между режимите 4 KB и 16 KB с едно рестартиране. Определени функции ще бъдат деактивирани в тези режими, така че някои приложения може да не работят. За да върнете устройството в производствен режим, ще трябва да превключите обратно към режима 4 KB и след това да заключите програмата за първоначално зареждане, което ще възстанови фабричните настройки на устройството. След като то стартира Android, деактивирайте настройката за отключване чрез OEM от опциите за програмисти. Всички данни на устройството ще бъдат изчистени и след потвърждение файловата система ще се промени на ext4. След като процесът приключи, върнете се, за да активирате опцията 16 KB отново."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Изтриване на всички данни"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Изчистването на всички данни от дяла и преформатирането на ext4 не бе успешно."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"За режима 16 KB се изисква отключване на програмата за първоначално зареждане"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Програмата за първоначално зареждане на това устройство трябва да е отключена, преди да се използва опцията за програмисти 16 KB. Целостта на софтуера не може да се гарантира в този режим. Също така данните, съхранявани на телефона, може да са изложени на риск, докато програмата за първоначално зареждане е отключена. Всички потребителски данни и настройки ще бъдат изчистени при активирането на режима 16 KB. След като програмата за първоначално зареждане бъде отключена, за активирането на опцията 16 KB ще са необходими две рестартирания. Когато сте в този режим, можете да превключвате между режимите 4 KB и 16 KB с едно рестартиране. Определени функции ще бъдат деактивирани в тези режими, така че някои приложения може да не работят. За да върнете устройството в производствен режим, ще трябва да превключите обратно към режима 4 KB и след това да възстановите заключването чрез OEM или да заключите програмата за първоначално зареждане на устройството, което ще възстанови фабричните настройки. Моля, отключете програмата за първоначално зареждане и опитайте отново. За инструкции как да направите това, вижте <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"За режима за съвместимост със страниците се използва опцията 4 KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Използвате опцията 4 KB за режима за съвместимост със страниците. Целостта на софтуера не може да се гарантира в този режим. Също така данните, съхранявани на телефона, може да са изложени на риск, докато програмата за първоначално зареждане е отключена. Определени функции ще бъдат деактивирани в тези режими, така че някои приложения може да не работят. За да активирате отново производствения режим, трябва да заключите програмата за първоначално зареждане на устройството. Докоснете, за да прочетете повече."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Използвате опцията 4 KB за режима за съвместимост със страниците. Целостта на софтуера не може да се гарантира в този режим. Също така данните, съхранявани на телефона, може да са изложени на риск, докато програмата за първоначално зареждане е отключена. Определени функции ще бъдат деактивирани в тези режими, така че някои приложения може да не работят. За да активирате отново производствения режим, трябва да заключите програмата за първоначално зареждане на устройството. Това отново ще възстанови фабричните настройки на устройството, както и тези на производствения режим. След като то стартира Android, деактивирайте настройката за отключване чрез OEM от опциите за програмисти. Ако устройството не стартира Android или е нестабилно, преинсталирайте го посредством най-новите фабрични образи на адрес <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> или използвайте <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> и изберете опцията за изчистване на всички данни от устройството, „Заключване на програмата за първоначално зареждане“ и опцията за принудително инсталиране на всички дялове."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"За режима за съвместимост със страниците се използва опцията 16 KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Използвате опцията 16 KB за режима за съвместимост със страниците. Целостта на софтуера не може да се гарантира в този режим. Също така данните, съхранявани на телефона, може да са изложени на риск, докато програмата за първоначално зареждане е отключена. Определени функции ще бъдат деактивирани в тези режими, така че някои приложения може да не работят. За да активирате отново производствения режим, трябва да превключите обратно към режим 4 KB и след това да заключите програмата за първоначално зареждане на устройството. Докоснете, за да прочетете повече."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Използвате опцията 16 KB за режима за съвместимост със страниците. Целостта на софтуера не може да се гарантира в този режим. Също така данните, съхранявани на телефона, може да са изложени на риск, докато програмата за първоначално зареждане е отключена. Определени функции ще бъдат деактивирани в тези режими, така че някои приложения може да не работят. За да активирате отново производствения режим, трябва да превключите обратно към режим 4 KB и след това да заключите програмата за първоначално зареждане на устройството. Това отново ще възстанови фабричните настройки на устройството, както и тези на производствения режим. След като то стартира Android, деактивирайте настройката за отключване чрез OEM от опциите за програмисти. Ако устройството не стартира Android или е нестабилно, преинсталирайте го посредством най-новите фабрични образи на адрес <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> или използвайте <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> и изберете опцията за изчистване на всички данни от устройството, „Заключване на програмата за първоначално зареждане“ и опцията за принудително инсталиране на всички дялове."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Режим за съвместимост със страниците (16 KB)"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Прочетете още"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Манипулатор за сигналите за програмни грешки"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Разрешаване на използването от няколко потребители"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-bn/arrays.xml b/res/values-bn/arrays.xml
index c88de1c..14da709 100644
--- a/res/values-bn/arrays.xml
+++ b/res/values-bn/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"বেডটাইম"</item>
+ <item msgid="4152450357280759894">"ড্রাইভ করার সময়"</item>
+ <item msgid="7096549258219399423">"ইমারসিভ"</item>
+ <item msgid="2760716776980432977">"ম্যানেজ করা"</item>
+ <item msgid="601734478369121764">"স্টার"</item>
+ <item msgid="6243809315432780521">"ক্যালেন্ডার"</item>
+ <item msgid="4913577903148415331">"সময়"</item>
+ <item msgid="3653377604690057780">"থিয়েটার"</item>
+ <item msgid="3843711267408385410">"ফুল"</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 1571aaf..22162e3 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"হিয়ারিং ডিভাইস সংক্রান্ত সেটিংস"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"শর্টকাট, হিয়ারিং এড কম্প্যাটিবিলিটি"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"প্রিসেট"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"আপনার অডিওলজিস্ট কোনও প্রিসেট প্রোগ্রাম করে রাখেননি"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"প্রিসেট আপডেট করা যায়নি"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"অডিও আউটপুট"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"অডিও আউটপুট সম্পর্কে"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"\'ঘড়ি আনলক করুন\' ফিচার সম্পর্কে আরও জানুন"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ঘড়ি যোগ করুন"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ঘড়ি সরান"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ফিঙ্গারপ্রিন্ট ও ফেস আনলক"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ফেস ও ফিঙ্গারপ্রিন্ট আনলক"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"অফিস প্রোফালের জন্য \'ফেস ও ফিঙ্গারপ্রিন্ট আনলক\' ফিচার"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"সেট-আপ করতে হবে"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ফেস এবং আঙ্গুলের ছাপ যোগ করা হয়েছে"</string>
@@ -558,7 +559,7 @@
<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>
- <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"প্রাইভেট স্পেসের জন্য ফিঙ্গারপ্রিন্ট আনলক সেট আপ করুন"</string>
+ <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"প্রাইভেট স্পেসের জন্য ফিঙ্গারপ্রিন্ট আনলক সেটআপ করুন"</string>
<string name="private_space_fingerprint_enroll_introduction_message" msgid="9092068873421435300">"অ্যাপে সাইন-ইন বা কেনাকাটায় অনুমোদন করার মতোই ফিঙ্গারপ্রিন্ট ব্যবহার করে প্রাইভেট স্পেস আনলক বা নিজের পরিচয় যাচাই করুন"</string>
<string name="private_space_fingerprint_enroll_introduction_footer_message" msgid="7125255484447984854">"আপনি না চাইলেও, প্রাইভেট স্পেস আপনার আঙুলে ফোন ছুঁইয়ে অন্য কেউ আনলক করতে পারবেন।"</string>
<string name="private_space_fingerprint_enroll_finish_message" msgid="4754797926493316965">"আপনার প্রাইভেট স্পেস আনলক করতে বা কেনাকাটা অনুমোদন করতে ফিঙ্গারপ্রিন্ট ব্যবহার করুন"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ডিভাইস রিস্টার্ট করবেন?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"শুধুমাত্র উন্নতির উদ্দেশ্যে বিস্তারিত NFC লগিং করা হয়েছে। NFC সংক্রান্ত অতিরিক্ত ডেটা সমস্যার রিপোর্টে অন্তর্ভুক্ত করা হয়েছে, যার মধ্যে ব্যক্তিগত তথ্যও থাকতে পারে। এই সেটিং পরিবর্তন করতে, আপনার ডিভাইস রিস্টার্ট করুন।"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"রিস্টার্ট করুন"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"কাস্ট করুন"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"মিরর"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ওয়্যারলেস প্রদর্শন সক্ষম করুন"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"অভিযোজিত"</string>
<string name="brightness" msgid="6216871641021779698">"উজ্জ্বলতার স্তর"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"পরিবেশের আলো অনুযায়ী উজ্জ্বলতা"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"পরিবেশের আলো অনুযায়ী উজ্জ্বলতা সম্পর্কে"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"আপনার পারিপার্শ্বিক অবস্থা এবং অ্যাক্টিভিটি অনুযায়ী স্ক্রিনের উজ্জ্বলতা নিজে থেকেই অ্যাডজাস্ট করে নেওয়া হবে। স্ক্রিন কতখানি উজ্জ্বল হলে আপনার সুবিধা হয়, তা আপনি স্লাইডারের মাধ্যমে নির্দিষ্ট করে দিতে পারেন।"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"চালু আছে"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"বন্ধ আছে"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"তা সত্ত্বেও চালিয়ে যান"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"বাতিল করুন"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"বড় করে দেখার সেটিংস"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"একটি আঙুল দিয়ে প্যান করা"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"\'বড় করে দেখা\' এলাকা একটি আঙুল দিয়ে টেনে সরান।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"\'বড় করে দেখা\' এলাকা দুটি আঙুল দিয়ে টেনে সরান।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"শুধুমাত্র স্ক্রিনের বড় করে দেখানো অংশে উপলভ্য থাকে না"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"জুম করার জন্য বোতামে ট্যাপ করুন"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"কন্টেন্ট আরও বড় সাইজে দেখার জন্য, স্ক্রিনে দ্রুত জুম বাড়ান"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>জুম ইন করতে:</b><br/> {0,number,integer}. \'বড় করে দেখা\' ফিচার চালু করার জন্য শর্টকাট ব্যবহার করুন<br/> {1,number,integer}। স্ক্রিনে ট্যাপ করুন<br/> {2,number,integer}। স্ক্রিনের চারদিকে ঘোরাতে ২টি আঙুল দিয়ে টেনে আনুন<br/> {3,number,integer}। জুম অ্যাডজাস্ট করার জন্য ২টি আঙুল দিয়ে পিঞ্চ করুন<br/> {4,number,integer}। \'বড় করে দেখা\' ফিচার বন্ধ করার জন্য শর্টকাট ব্যবহার করুন<br/><br/> <b>সাময়িকভাবে জুম ইন করতে:</b><br/> {0,number,integer}। আপনার \'বড় করে দেখা\' ফিচারের ধরন ফুল স্ক্রিনে সেট হয়েছে কিনা ভাল করে দেখে নিন<br/> {1,number,integer}। \'বড় করে দেখা\' ফিচার চালু করতে শর্টকাট ব্যবহার করুন<br/> {2,number,integer}। স্ক্রিনের যেকোনও জায়গা টাচ করে ধরে থাকুন<br/> {3,number,integer}। স্ক্রিনের চারদিকে ঘোরাতে আঙুল দিয়ে টেনে আনুন<br/> {4,number,integer}। \'বড় করে দেখা\' ফিচার বন্ধ করতে স্ক্রিনের উপর থেকে আঙুল সরিয়ে নিন"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"ম্যাগনিফিকেশন চালু করা থাকলে, আপনি স্ক্রিনে জুম বাড়াতে পারবেন।\n\n"<b>"জুম করতে"</b>", ম্যাগনিফিকেশন চালু করে স্ক্রিনের যেকোনও জায়গায় ট্যাপ করুন।\n"<ul><li>"• স্ক্রল করতে ২ বা তার বেশি আঙ্গুল দিয়ে টানুন"</li>\n<li>"• জুম অ্যাডজাস্ট করতে ২ বা তার বেশি আঙ্গুল দিয়ে পিঞ্চ করুন"</li></ul>\n\n<b>"সাময়িকভাবে জুম করতে"</b>", ম্যাগনিফিকেশন চালু করে স্ক্রিনের যেকোনও জায়গায় টাচ করে ধরে থাকুন।\n"<ul><li>"• টেনে স্ক্রিনের বিভিন্ন জায়গায় সরান"</li>\n<li>"• জুম কমাতে স্ক্রিন থেকে আঙ্গুল তুলে নিন"</li></ul>\n\n"কীবোর্ড বা নেভিগেশন বারে আপনি জুম করতে পারবেন না।"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>টি মধ্যে <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> নম্বর পৃষ্ঠা"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"অ্যাক্সেসিবিলিটি বোতামের শর্টকার্ট"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{একটিও নেই}=1{১টি শিডিউল সেট করা হয়েছে}one{#টি শিডিউল সেট করা হয়েছে}other{#টি শিডিউল সেট করা হয়েছে}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"বিরক্ত করবে না"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"অগ্রাধিকার মোড"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"শুধু গুরুত্বপূর্ণ লোকজন এবং অ্যাপ থেকে বিজ্ঞপ্তি পান"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"অ্যাক্টিভেশনের ধরন বেছে নিন"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"সময়"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"যেমন, \"৯:৩০ – ৫:০০ PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ক্যালেন্ডার"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"যেমন, \"ব্যক্তিগত ক্যালেন্ডার\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"বিরক্তিকর কন্টেন্ট বন্ধ করা"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"সময়সূচি মুছে দিন"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"মুছে দিন"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"একটি ক্যালেন্ডার যোগ করুন"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"আপনার ক্যালেন্ডার ব্যবহার করুন"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"শিডিউল করুন"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"একটি শিডিউল সেট করুন"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"সময়সূচি"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"নির্দিষ্ট সময়ে ফোন সাইলেন্ট করুন"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"যেসব বিজ্ঞপ্তি এলে আওয়াজ হয় সেগুলিকে অনুমতি দিন"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ভিজ্যুয়াল ব্যাঘাতগুলিকে ব্লক করুন"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ভিজুয়াল সঙ্কেতগুলি চালু করুন"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"আপনাকে দেখানো হবে এমন বিজ্ঞপ্তি"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"মনোযোগ বজায় রাখুন"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"অতিরিক্ত অ্যাকশন"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ডিসপ্লে সেটিংস"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ডিসপ্লে বিকল্প"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ডার্ক থিম চালু করুন"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ডার্ক ব্যাকগ্রাউন্ডের উপর হালকা টেক্সট পড়তে OS ও অ্যাপের থিমে পরিবর্তন করুন, এটি চোখের পক্ষে আরামদায়ক হতে পারে এবং কিছু ডিভাইসে যথেষ্ট ব্যাটারি সাশ্রয় করতে পারে"</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="mode_notification_filter_title" msgid="443728483176031977">"ইন্টারাপশন ফিল্টার করুন"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"কোনও ইন্টারাপশন, ফিল্টার করা হয়নি"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"অব্যবহৃত বিভাগ দেখান"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"অব্যবহৃত বিভাগ লুকান"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"সব"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} পর্যন্ত এক ঘণ্টার জন্য অ্যালার্ম পরিবর্তন করুন}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"নাম পরিবর্তন করুন"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"আইকন পরিবর্তন করুন"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"আইকন পরিবর্তন করুন"</string>
<string name="warning_button_text" msgid="1274234338874005639">"সতর্কতা"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"বন্ধ করুন"</string>
<string name="device_feedback" msgid="5351614458411688608">"এই ডিভাইসের সম্পর্কে মতামত পাঠান"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"১৬ কেবি ডেভেলপার বিকল্প ব্যবহার করার আগে, এই ডিভাইসের ডেটা পার্টিশন ext4-এ পরিবর্তন করতে হবে। এই মোডে সফ্টওয়্যার ইন্টিগ্রিটির গ্যারেন্টি দেওয়া যায় না এবং বুটলোডার আনলক থাকা অবস্থায় ফোনে স্টোর করে রাখা কোনও ডেটা সুরক্ষিত নাও থাকতে পারে। ১৬ কেবি ডেভেলপার বিকল্প অ্যাক্টিভেট করে দিলে, এর পরে ডিভাইসটি আরও একবার রিবুট করতে হবে। আপনি এই মোড থাকলে, একবার রিবুট করার মাধ্যমে ৪ কেবি এবং ১৬ কেবি মোডের মধ্যে সুইচ করতে পারবেন। এইসব মোডে কিছু ফিচার বন্ধ করে দেওয়া হবে, তাই কিছু অ্যাপ্লিকেশন কাজ নাও করতে পারে। ডিভাইসটি প্রোডাকশন মোডে রাখতে, আপনাকে ৪ কেবি মোডে ফিরে আসতে হবে ও তারপরে বুটলোডার লক করতে হবে যেটি ডিভাইসকে ফ্যাক্টরি রিসেট করবে। ডিভাইসটি Android-এ বুট করা হয়ে গেলে, ডেভেলপার বিকল্পে OEM আনলক করা বন্ধ করুন। নিশ্চিত করার পরে ডিভাইস ওয়াইপ করা হবে এবং ফাইল সিস্টেম ext4-এ পরিবর্তিত হয়ে যাবে। এটি হয়ে যাওয়ার পরে, আবার ১৬ কেবি মোড চালু করুন।"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"সব ডেটা মুছুন"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ডেটা পার্টিশানকে ext4 ফর্ম্যাটে আবার ফর্ম্যাট করা ও ওয়াইপ করা যায়নি।"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"১৬ কেবি মোডের জন্য বুটলোডার আনলক করা প্রয়োজন"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"১৬ কেবি ডেভেলপার বিকল্প ব্যবহার করতে হলে, এই ডিভাইসের জন্য বুটলোডার আনলক করতে হবে। এই মোডে সফ্টওয়্যার ইন্টিগ্রিটির গ্যারেন্টি দেওয়া যায় না এবং বুটলোডার আনলক থাকা অবস্থায় ফোনে স্টোর করে রাখা কোনও ডেটা সুরক্ষিত নাও থাকতে পারে। ১৬ কেবি মোড অ্যাক্টিভেট করে দিলে, ব্যবহারকারীর সব ডেটা ও সেটিংস ওয়াইপ হয়ে যাবে। বুটলোডার আনলক হয়ে গেলে, ১৬ কেবি মোড বিকল্প চালু করার জন্য ডিভাইস দুবার রিবুট করার প্রয়োজন হয়। আপনি এই মোড থাকলে, একবার রিবুট করার মাধ্যমে ৪ কেবি এবং ১৬ কেবি মোডের মধ্যে সুইচ করতে পারবেন। এইসব মোডে কিছু ফিচার বন্ধ করে দেওয়া হবে, তাই কিছু অ্যাপ্লিকেশন কাজ নাও করতে পারে। ডিভাইসটিকে আবার প্রোডাকশন মোডে রাখতে, আপনাকে ৪ কেবি মোডে ফিরে আসতে হবে ও তারপরে OEM/বুটলোডার লক করতে হবে (যেটি ডিভাইসকে ফ্যাক্টরি রিসেট করবে)। বুটলোডার আনলক করে আবার চেষ্টা করুন। বুটলোডার কীভাবে আনলক করবেন তার নির্দেশাবলী এখানে দেখতে পারেন <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"৪ কেবি পেজ-অ্যাগনোস্টিক মোড ব্যবহার করা হচ্ছে"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"আপনি পেজ-অ্যাগনোস্টিক মোডের ৪ কেবি মোডে আছেন। এই মোডে সফ্টওয়্যার ইন্টিগ্রিটির গ্যারেন্টি দেওয়া যায় না এবং বুটলোডার আনলক থাকা অবস্থায় ফোনে স্টোর করে রাখা কোনও ডেটা সুরক্ষিত নাও থাকতে পারে। এইসব মোডে কিছু ফিচার বন্ধ করে দেওয়া হবে, তাই কিছু অ্যাপ্লিকেশন কাজ নাও করতে পারে। প্রোডাকশন মোডে আবার যেতে চাইলে, অবশ্যই ডিভাইসের বুটলোডার লক করতে হবে। আরও পড়তে ট্যাপ করুন।"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"আপনি পেজ-অ্যাগনোস্টিক মোডের ৪ কেবি মোডে আছেন। এই মোডে সফ্টওয়্যার ইন্টিগ্রিটির গ্যারেন্টি দেওয়া যায় না এবং বুটলোডার আনলক থাকা অবস্থায় ফোনে স্টোর করে রাখা কোনও ডেটা সুরক্ষিত নাও থাকতে পারে। এইসব মোডে কিছু ফিচার বন্ধ করে দেওয়া হবে, তাই কিছু অ্যাপ্লিকেশন কাজ নাও করতে পারে। প্রোডাকশন মোডে আবার যেতে চাইলে, অবশ্যই ডিভাইসের বুটলোডার লক করতে হবে। এটি ডিভাইসটিকে আবার ফ্যাক্টরি রিসেট করবে এবং এটির প্রোডাকশন সেটিংস আগের মতো হয়ে যাবে। ডিভাইসটি Android-এ বুট করা হয়ে গেলে, ডেভেলপার বিকল্পে OEM আনলক করা বন্ধ করুন। ডিভাইসটি Android-এ বুট করা না গেলে বা স্থিতিশীল না হলে, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> সাম্প্রতিক ফ্যাক্টরি ইমেজের সাথে ডিভাইসটি আবার ফ্ল্যাশ করুন এবং \'ডিভাইস ওয়াইপ করুন\', \'বুটলোডার লক করুন\' ও \'সব পার্টিশন জোরপূর্বক ফ্ল্যাশ করুন\' বিকল্প বেছে নিন।"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"১৬ কেবি পেজ-অ্যাগনোস্টিক মোড ব্যবহার করা হচ্ছে"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"আপনি পেজ-অ্যাগনোস্টিক মোডের ১৬ কেবি মোডে আছেন। এই মোডে সফ্টওয়্যার ইন্টিগ্রিটির গ্যারেন্টি দেওয়া যায় না এবং বুটলোডার আনলক থাকা অবস্থায় ফোনে স্টোর করে রাখা কোনও ডেটা সুরক্ষিত নাও থাকতে পারে। এইসব মোডে কিছু ফিচার বন্ধ করে দেওয়া হবে, তাই কিছু অ্যাপ্লিকেশন কাজ নাও করতে পারে। প্রোডাকশন মোডে আবার যেতে চাইলে, আপনাকে অবশ্যই ৪ কেবি মোডে ফিরে যেতে হবে ও তারপরে ডিভাইসের বুটলোডার লক করতে হবে। আরও পড়তে ট্যাপ করুন।"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"আপনি পেজ-অ্যাগনোস্টিক মোডের ১৬ কেবি মোডে আছেন। এই মোডে সফ্টওয়্যার ইন্টিগ্রিটির গ্যারেন্টি দেওয়া যায় না এবং বুটলোডার আনলক থাকা অবস্থায় ফোনে স্টোর করে রাখা কোনও ডেটা সুরক্ষিত নাও থাকতে পারে। এইসব মোডে কিছু ফিচার বন্ধ করে দেওয়া হবে, তাই কিছু অ্যাপ্লিকেশন কাজ নাও করতে পারে। প্রোডাকশন মোডে আবার যেতে চাইলে, আপনাকে অবশ্যই ৪ কেবি মোডে ফিরে যেতে হবে ও তারপরে ডিভাইসের বুটলোডার লক করতে হবে। এটি ডিভাইসটিকে আবার ফ্যাক্টরি রিসেট করবে এবং এটির প্রোডাকশন সেটিংস আগের মতো হয়ে যাবে। ডিভাইসটি Android-এ বুট করা হয়ে গেলে, ডেভেলপার বিকল্পে OEM আনলক করা বন্ধ করুন। ডিভাইসটি Android-এ বুট করা না গেলে বা স্থিতিশীল না হলে, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> সাম্প্রতিক ফ্যাক্টরি ইমেজের সাথে ডিভাইসটি আবার ফ্ল্যাশ করুন এবং \'ডিভাইস ওয়াইপ করুন\', \'বুটলোডার লক করুন\' ও \'সব পার্টিশন জোরপূর্বক ফ্ল্যাশ করুন\' বিকল্প বেছে নিন।"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"১৬ কেবি পেজ-অ্যাগনোস্টিক মোড"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"আরও পড়ুন"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"সমস্যার রিপোর্টের পরিচালক"</string>
@@ -5009,14 +5073,15 @@
<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="6686858308083037810">"একাধিক ব্যবহারকারীকে অনুমতি দিন"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
<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="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"\'পরিবেশের আলো অনুযায়ী উজ্জ্বলতা\' ব্যবহার করুন"</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>
<string name="smart_forwarding_title" msgid="8368634861971949799">"স্মার্ট ফরওয়ার্ডিং"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-bs/arrays.xml b/res/values-bs/arrays.xml
index 93ee2fe..e3d2912 100644
--- a/res/values-bs/arrays.xml
+++ b/res/values-bs/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Vrijeme za spavanje"</item>
+ <item msgid="4152450357280759894">"Vožnja"</item>
+ <item msgid="7096549258219399423">"Uvjerljivo"</item>
+ <item msgid="2760716776980432977">"Upravljano"</item>
+ <item msgid="601734478369121764">"Zvijezda"</item>
+ <item msgid="6243809315432780521">"Kalendar"</item>
+ <item msgid="4913577903148415331">"Vrijeme"</item>
+ <item msgid="3653377604690057780">"Pozorište"</item>
+ <item msgid="3843711267408385410">"Cvijet"</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 84d8358..c66bcd5 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Postavke slušnog aparata"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Prečica, kompatibilnost sa slušnim aparatom"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Zadana postavka"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Nema zadanih postavki koje je programirao vaš audiolog"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Ažuriranje zadanih postavki nije uspjelo"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Izlaz zvuka"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Informacije o izlazu zvuka"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saznajte više o Otključavanju pomoću sata"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Dodaj sat"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Uklanjanje sata"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Otključavanje otiskom prsta i licem"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Otključavanje licem i otiskom prsta"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Otključavanje licem i otiskom prsta za radni profil"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Potrebno je postavljanje"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Lice i otisci prstiju su dodani"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalirajte aplikacije"</b>\n"Instalirajte aplikacije koje želite da budu privatne u vašem prostoru"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Imajte na umu"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacije se zaustavljaju kada zaključate prostor"</b>\n"Kada zaključate prostor, aplikacije u prostoru se zaustavljaju i od njih više nećete primati obavještenja"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privatni prostori nisu prikladni za aplikacije koje moraju raditi u pozadini ili koje šalju kritična obavještenja kao što su medicinske aplikacije. Ovo je zato što se obavještenja i aktivnost u pozadini zaustavljaju kada se prostor zaključa.\n\nAplikacije u privatnom prostoru se neće prikazivati na kontrolnoj tabli za privatnost ni u upravitelju odobrenja i drugim postavkama kada je privatni prostor zaključan.\n\nPrivatni prostor se ne može premjestiti na novi uređaj. Trebate postaviti drugi privatni prostor ako ga želite koristiti na drugom uređaju.\n\nSvako ko poveže vaš uređaj s računarom ili na njega instalira štetne aplikacije može pristupati vašem privatnom prostoru."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privatni prostori nisu prikladni za aplikacije koje moraju raditi u pozadini ili koje šalju kritična obavještenja kao što su medicinske aplikacije. Ovo je zato što se obavještenja i aktivnost u pozadini zaustavljaju kada se prostor zaključa.\n\nAplikacije u privatnom prostoru se neće prikazivati na kontrolnoj tabli za privatnost ni u upravitelju odobrenja i drugim postavkama kada je privatni prostor zaključan.\n\nPrivatni prostor se ne može vratiti na novi uređaj. Trebate postaviti drugi prostor ako ga želite koristiti na drugom uređaju.\n\nSvako ko poveže vaš uređaj s računarom ili na njega instalira zlonamjerne aplikacije može pristupati vašem privatnom prostoru."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Saznajte više o privatnom prostoru"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Ovo će potrajati nekoliko trenutaka"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Postavljanje privatnog prostora…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Ponovo pokrenuti uređaj?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detaljno zapisivanje NFC podataka je namijenjeno samo za svrhe programiranja. Dodatni NFC podaci su uključeni u izvještaje o greškama, koji mogu sadržavati privatne podatke. Ponovo pokrenite uređaj da promijenite ovu postavku."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Ponovo pokreni"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Emitiranje"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"preslikavanje"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Omogući bežični prikaz"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Prilagodljive"</string>
<string name="brightness" msgid="6216871641021779698">"Nivo osvijetljenosti"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Prilagodljiva osvijetljenost"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"O prilagodljivoj osvijetljenosti"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Osvijetljenost ekrana će se automatski prilagođavati vašem okruženju i aktivnostima. Klizač možete ručno pomjerati kako bi prilagodljiva osvijetljenost zapamtila vaše postavke."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Uključeno"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Isključeno"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Korisnički odabrano: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Govor"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Brzina pokazivača"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Kontroler za igre"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Preusmjeravanje vibracije"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Pošalji vibraciju na kontroler za igre kada je povezan."</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Ipak nastavi"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Otkaži"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Postavke uvećavanja"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Pomicanjem prstom"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Pomaknite područje uvećanja prevlačenjem prstom."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Pomaknite područje uvećavanja prevlačenjem s dva prsta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nije dostupno dok se uvećava samo dio ekrana"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Dodirnite dugme da zumirate"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Brzo uvećajte ekran da sadržaj postane veći"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Da uvećate:</b><br/> {0,number,integer}. Koristite prečicu da pokrenete uvećavanje.<br/> {1,number,integer}. Dodirnite ekran.<br/> {2,number,integer}. Prevlačite s 2 prsta da se krećete po ekranu.<br/> {3,number,integer}. Uhvatite s 2 prsta da podesite zumiranje.<br/> {4,number,integer}. Koristite prečicu da zaustavite uvećavanje.<br/><br/> <b>Da uvećate privremeno:</b><br/> {0,number,integer}. Provjerite je li vrsta uvećavanja postavljena na prikaz preko cijelog ekrana.<br/> {1,number,integer}. Koristite prečicu da pokrenete uvećavanje.<br/> {2,number,integer}. Dodirnite i zadržite bilo gdje na ekranu.<br/> {3,number,integer}. Prevlačite prstom da se krećete po ekranu.<br/> {4,number,integer}. Podignite prst da zaustavite uvećavanje."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kada je uvećavanje uključeno, možete uvećavati sadržaj na ekranu.\n\n"<b>"Da zumirate"</b>", pokrenite uvećavanje, a zatim dodirnite ekran bilo gdje.\n"<ul><li>"Prevucite dva ili više prstiju za klizanje"</li>\n<li>"Uhvatite s dva ili više prstiju za podešavanje zumiranja"</li></ul>\n\n<b>"Za privremeno zumiranje"</b>" pokrenite uvećanje, a zatim dodirnite ekran bilo gdje i zadržite.\n"<ul><li>"Prevucite za kretanje po ekranu"</li>\n<li>"Podignite prst za umanjivanje"</li></ul>\n\n"Nije moguće uvećati na tastaturi ili traci za navigaciju."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Stranica <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> od <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Prečica dugmeta za pristupačnost"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nema}=1{Postavljen je 1 raspored}one{Postavljen je # raspored}few{Postavljena su # rasporeda}other{Postavljeno je # rasporeda}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne ometaj"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioritetni načini rada"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Primajte obavještenja samo od važnih osoba i aplikacija"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Odaberite vrstu aktivacije"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Vrijeme"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Npr. \"9:30–17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Npr. \"Lični kalendar\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ograničite ometanja"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Uključi način rada Ne ometaj"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Zvuci alarma i medija mogu prekinuti"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Rasporedi"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Izbrišite rasporede"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Izbriši"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Uredi"</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>
@@ -3339,7 +3399,9 @@
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Raspored"</string>
<string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Postavite raspored"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Raspored"</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>
+ <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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
+ <skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Raspored"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Utišaj telefon u određeno vrijeme"</string>
<string name="zen_mode_automation_suggestion_summary" msgid="1946750790084170826">"Postavite pravila za način rada Ne ometaj"</string>
@@ -3349,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Dozvoli ometanja koja proizvode zvuk"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokiranje vizuelnih ometanja"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Dozvolite vizualnu signalizaciju"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Obavještenja koja vam se mogu prikazivati"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Budite fokusirani"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Dodatne radnje"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Postavke ekrana"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opcije ekrana"</string>
@@ -3365,7 +3427,9 @@
<string name="mode_dark_theme_title" msgid="8099007897943513209">"Omogući tamnu temu"</string>
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"omogući tamnu temu"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Postavite OS i aplikacije da preferiraju svijetli tekst na tamnoj pozadini jer to može biti lakše za oči, a na nekim uređajima omogućava i značajne uštede baterije"</string>
- <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nema promjena ekrana}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}one{{effect_1}, {effect_2} i još #}few{{effect_1}, {effect_2} i još #}other{{effect_1}, {effect_2} i još #}}"</string>
+ <string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nema promjena prikaza}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}one{{effect_1}, {effect_2} i još #}few{{effect_1}, {effect_2} i još #}other{{effect_1}, {effect_2} i još #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtriraj prekide"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Prekidi se ne filtriraju"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcije prikaza filtriranih obavještenja"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kada je uključena funkcija Ne ometaj"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Bez zvuka obavještenja"</string>
@@ -3662,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorije"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Ostalo"</string>
<string name="no_channels" msgid="4716199078612071915">"Ova aplikacija nije objavila nikakva obavještenja"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Prikaži kategorije koje se ne koriste"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Dodatne postavke u aplikaciji"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Prikaži kategorije koje se ne koriste"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Sakrij kategorije koje se ne koriste"</string>
@@ -3771,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Odabrane aplikacije"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nijedna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Sve"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Dozvolite aplikacijama da zanemaruju"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikacije koje vas mogu prekinuti"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Odaberite još aplikacija"</string>
@@ -3807,8 +3874,8 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Promjena na alarme samo na jedan sat do {time}}one{Promjena na alarme samo na # sat do {time}}few{Promjena na alarme samo na # sata do {time}}other{Promjena na alarme samo na # sati do {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Pređi na postavku Samo alarmi do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Promijeniti u uvijek prekini"</string>
- <string name="zen_mode_action_change_name" msgid="766639614789907016">"Promijeni naziv"</string>
- <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Promijeni ikonu"</string>
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Promijenite naziv"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Promijenite ikonu"</string>
<string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Promijenite ikonu"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Upozorenje"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Zatvori"</string>
@@ -4864,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Particiju s podacima na uređaju treba konvertirati u ext4 prije korištenja opcije za programere sa 16 kB. Integritet softvera se ne može garantirati u ovom načinu rada i svi podaci pohranjeni na telefonu dok je program za učitavanje operativnog sistema otključan bi mogli biti izloženi riziku. Aktiviranje opcije sa 16 kB zahtijevat će još jedno ponovno pokretanje nakon toga. Kada ste u ovom načinu rada, možete se prebacivati iz načina rada od 4 kB u način rada od 16 kB jednim ponovnim pokretanjem. Neke funkcije će biti onemogućene u ovim načinima, pa neke aplikacije možda neće funkcionirati. Da vratite uređaj u proizvodni način rada, trebate se vratiti u način rada od 4 kB a zatim zaključati program za učitavanje operativnog sistema, čime se uređaj vraća na fabričke postavke. Nakon što se uređaj uspješno pokrene u Androidu, onemogućite OEM otključavanje u Opcijama za programere. Podaci na uređaju će se uništiti, a sistem fajlova promijeniti u ext4 nakon potvrde. Nakon što se to završi, vratite se da ponovo omogućite 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Potpuno izbriši sve podatke"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Reformatiranje i uništavanje podataka na particiji s podacima za ext4 nije uspjelo."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Potrebno je otključavanje programa za učitavanje operativnog sistema za način rada od 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Na ovom uređaju program za učitavanje operativnog sistema treba biti otključan prije korištenja opcije za programere sa 16 kB. Integritet softvera se ne može garantirati u ovom načinu rada i svi podaci pohranjeni na telefonu dok je program za učitavanje operativnog sistema otključan bi mogli biti izloženi riziku. Svi korisnički podaci i postavke će biti izbrisani kada se aktivira način rada od 16 kB. Kada se program za učitavanje operativnog sistema otključa, aktiviranje opcije od 16 kB zahtijevat će dva ponovna pokretanja. Kada ste u ovom načinu rada, možete se prebacivati iz načina rada od 4 kB u način rada od 16 kB jednim ponovnim pokretanjem. Neke funkcije će biti onemogućene u ovim načinima rada, pa neke aplikacije možda neće funkcionirati. Da vratite uređaj u proizvodni način rada, trebate vratiti u način rada od 4 kB a zatim zaključati OEM/program za učitavanje operativnog sistema (čime se uređaj vraća na fabričke postavke). Otključajte program za učitavanje operativnog sistema i pokušajte ponovo. Uputstva za ovo potražite na <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Korištenje načina rada od 4 kB neovisnog o veličini stranice"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"U načinu ste rada od 4 kB neovisnom o veličini stranice. Integritet softvera se ne može garantirati u ovom načinu rada i svi podaci pohranjeni na telefonu dok je program za učitavanje operativnog sistema otključan bi mogli biti izloženi riziku. Neke funkcije će biti onemogućene u ovim načinima, pa neke aplikacije možda neće funkcionirati. Da ponovo uđete u proizvodni način rada, morate zaključati program za učitavanje operativnog sistema na uređaju. Dodirnite da pročitate više."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"U načinu ste rada od 4 kB neovisnom o veličini stranice. Integritet softvera se ne može garantirati u ovom načinu rada i svi podaci pohranjeni na telefonu dok je program za učitavanje operativnog sistema otključan bi mogli biti izloženi riziku. Neke funkcije će biti onemogućene u ovim načinima, pa neke aplikacije možda neće funkcionirati. Da ponovo uđete u proizvodni način rada, morate zaključati program za učitavanje operativnog sistema na uređaju. To će ponovo vratiti uređaj na fabričke postavke i vratiti proizvodne postavke. Nakon što se uređaj uspješno pokrene u Androidu, onemogućite OEM otključavanje u Opcijama za programere. Ako se uređaj ne pokrene u Androidu ili ako je nestabilan, reprogramirajte uređaj najnovijim fabričkim slikama sa <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ili upotrijebite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i odaberite \"Uništi sve podatke na uređaju\"\', \"Zaključaj program za učitavanje operativnog sistema\" i \"Prisilno programiraj sve particije\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Korištenje načina rada od 16 kB neovisnog o veličini stranice"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"U načinu ste rada od 16 kB neovisnom o veličini stranice. Integritet softvera se ne može garantirati u ovom načinu rada i svi podaci pohranjeni na telefonu dok je program za učitavanje operativnog sistema otključan bi mogli biti izloženi riziku. Neke funkcije će biti onemogućene u ovim načinima, pa neke aplikacije možda neće funkcionirati. Da ponovo uđete u proizvodni način rada, morate se vratiti u način rada od 4 kB i zatim zaključati program za učitavanje operativnog sistema na uređaju. Dodirnite da pročitate više."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"U načinu ste rada od 16 kB neovisnom o veličini stranice. Integritet softvera se ne može garantirati u ovom načinu rada i svi podaci pohranjeni na telefonu dok je program za učitavanje operativnog sistema otključan bi mogli biti izloženi riziku. Neke funkcije će biti onemogućene u ovim načinima, pa neke aplikacije možda neće funkcionirati. Da ponovo uđete u proizvodni način rada, morate se vratiti u način rada od 4K i zatim otključati program za učitavanje operativnog sistema na uređaju. To će ponovo vratiti uređaj na fabričke postavke i vratiti proizvodne postavke. Nakon što se uređaj uspješno pokrene u Androidu, onemogućite OEM otključavanje u Opcijama za programere. Ako se uređaj ne pokrene u Androidu ili ako je nestabilan, reprogramirajte uređaj najnovijim fabričkim slikama sa <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ili upotrijebite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i odaberite \"Uništi sve podatke na uređaju\"\', \"Zaključaj program za učitavanje operativnog sistema\" i \"Prisilno programiraj sve particije\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Način rada od 16 kB neovisan o veličini stranice"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Pročitajte više"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Obrađivač izvještaja o greškama"</string>
@@ -5004,7 +5074,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Koristi kačenje aplikacije"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Koristi opcije za programere"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristi uslugu štampanja"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dozvoli više korisnika"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"dozvoliti, višestruko, korisnik, dopustiti, mnogo"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"više, korisnici, profili, osobe, računi, promjena, mnogo"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Koristi bežično otklanjanje grešaka"</string>
@@ -5348,4 +5419,6 @@
<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 s uređaja <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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
index 9b23023..baae348 100644
--- a/res/values-ca/arrays.xml
+++ b/res/values-ca/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Hora de dormir"</item>
+ <item msgid="4152450357280759894">"Conducció"</item>
+ <item msgid="7096549258219399423">"Immersiu"</item>
+ <item msgid="2760716776980432977">"Gestionat"</item>
+ <item msgid="601734478369121764">"Estrella"</item>
+ <item msgid="6243809315432780521">"Calendari"</item>
+ <item msgid="4913577903148415331">"Hora"</item>
+ <item msgid="3653377604690057780">"Teatre"</item>
+ <item msgid="3843711267408385410">"Flor"</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 538bb08..71b655b 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Configuració de l\'audiòfon"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Drecera, compatibilitat amb audiòfons"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Valors predefinits"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"L\'audiòleg no ha programat cap valor predefinit"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"No s\'ha pogut actualitzar el valor predefinit"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Sortida d\'àudio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Sobre la sortida d\'àudio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Més informació sobre Desbloqueig amb rellotge"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Afegeix un rellotge"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Suprimeix el rellotge"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Desbloqueig facial i amb empremta digital"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueig facial i amb empremta digital"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueig facial i amb empremta digital per a la feina"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Cal fer la configuració"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Cara i empremtes digitals afegides"</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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_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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vols reiniciar el dispositiu?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"El registre detallat de l\'NFC només està indicat per a activitats de desenvolupament. Les dades de l\'NFC addicionals estan incloses als informes d\'errors, que poden contenir informació privada. Reinicia el dispositiu per canviar aquesta configuració."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reinicia"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Emet"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"duplicar"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Activa pantalla sense fil"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptatius"</string>
<string name="brightness" msgid="6216871641021779698">"Nivell de brillantor"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Brillantor adaptativa"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Sobre la brillantor adaptativa"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"La brillantor de la pantalla s\'ajustarà automàticament al teu entorn i a la teva activitat. Pots moure el control lliscant manualment perquè la brillantor adaptativa aprengui les teves preferències."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activat"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desactivat"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Seleccionat per l\'usuari: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Parla"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocitat del punter"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controlador de joc"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirigeix la vibració"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Envia la vibració al controlador de joc quan estigui connectat"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continua igualment"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancel·la"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Configuració de l\'ampliació"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Desplaçament amb un dit"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mou l\'àrea d\'ampliació arrossegant un dit."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mou l\'àrea d\'ampliació arrossegant dos dits."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"No està disponible mentre només s\'amplia una part de la pantalla"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Toca un botó per fer zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Amplia la pantalla ràpidament per engrandir el contingut"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Per ampliar</b>:<br/> {0,number,integer}. Utilitza la drecera per iniciar l\'ampliació.<br/> {1,number,integer}. Toca la pantalla.<br/> {2,number,integer}. Arrossega 2 dits per moure\'t per la pantalla.<br/> {3,number,integer}. Pinça amb 2 dits per ajustar el zoom.<br/> {4,number,integer}. Utilitza la drecera per aturar l\'ampliació.<br/><br/> <b>Per ampliar temporalment</b>:<br/> {0,number,integer}. Assegura\'t que el tipus d\'ampliació estigui definit com a pantalla completa.<br/> {1,number,integer}. Utilitza la drecera per iniciar l\'ampliació.<br/> {2,number,integer}. Mantén premut qualsevol punt de la pantalla.<br/> {3,number,integer}. Arrossega un dit per moure\'t per la pantalla.<br/> {4,number,integer}. Aixeca el dit per aturar l\'ampliació."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Quan l\'opció d\'ampliació està activada, pots ampliar la pantalla.\n\n"<b>"Per ampliar-la"</b>", activa l\'opció i toca qualsevol punt de la pantalla.\n"<ul><li>"Arrossega dos o més dits per desplaçar-te."</li>\n<li>"Pinça amb dos o més dits per ajustar el zoom."</li></ul>\n\n<b>"Per fer zoom temporalment"</b>", activa l\'ampliació i mantén premut qualsevol punt de la pantalla.\n"<ul><li>"Arrossega per moure\'t per la pantalla."</li>\n<li>"Aixeca el dit per allunyar la pantalla."</li></ul>\n\n"No es pot ampliar el teclat ni la barra de navegació."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Pàgina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Drecera del botó d\'accessibilitat"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Cap}=1{S\'ha definit 1 programació}other{S\'han definit # programacions}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"No molestis"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modes prioritaris"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Rep notificacions només de persones i aplicacions importants"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Selecciona el tipus d\'activació"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Hora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Exemple: \"De 9:30 a 17 h\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendari"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Exemple: \"Calendari personal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Restringeix les interrupcions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activa el mode No molestis"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Les alarmes i els sons multimèdia poden interrompre"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programacions"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Suprimeix les programacions"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Suprimeix"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edita"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programacions"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programació"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Afegeix un calendari"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Utilitza el calendari"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programació"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Defineix una programació"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programa"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programació"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silencia en hores concretes"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permet les interrupcions sonores"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloqueja interrupcions visuals"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permet senyals visuals"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificacions que et poden arribar"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Concentra\'t"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Accions addicionals"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Configuració de la pantalla"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opcions de pantalla"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activa el tema fosc"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Canvia l\'SO i les aplicacions perquè prioritzin el text clar sobre fons fosc, que pot ser millor per a la vista i suposa un estalvi de bateria important en alguns dispositius"</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_notification_filter_title" msgid="443728483176031977">"Filtra interrupcions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No es filtra cap interrupció"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcions de pantalla per a les notificacions filtrades"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Quan el mode No molestis estigui activat"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Notificacions sense so"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Altres"</string>
<string name="no_channels" msgid="4716199078612071915">"Aquesta aplicació no ha publicat cap notificació"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostra les categories no utilitzades"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Opcions de configuració addicionals a l\'aplicació"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostra les categories no utilitzades"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Amaga les categories no utilitzades"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Aplicacions seleccionades"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Cap"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Tot"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permet que les aplicacions ignorin el mode No molestis"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplicacions que poden interrompre"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Selecciona més aplicacions"</string>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Canvia el nom"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Canvia la icona"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Canvia la icona"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Advertiment"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Tanca"</string>
<string name="device_feedback" msgid="5351614458411688608">"Envia suggeriments sobre el dispositiu"</string>
@@ -4286,7 +4347,7 @@
<string name="system_navigation_title" msgid="4890381153527184636">"Mode de navegació"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"Navegació amb 2 botons"</string>
<string name="swipe_up_to_switch_apps_summary" msgid="1415457307836359560">"Per canviar d\'aplicació, fes lliscar cap amunt el botó d\'inici. Per veure totes les aplicacions, torna a lliscar cap amunt. Per tornar enrere, toca el botó Enrere."</string>
- <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Seguretat i emergència"</string>
+ <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Seguretat personal i emergència"</string>
<string name="emergency_dashboard_summary" msgid="401033951074039302">"Emergència SOS, informació mèdica, alertes"</string>
<string name="edge_to_edge_navigation_title" msgid="714427081306043819">"Navegació amb gestos"</string>
<string name="edge_to_edge_navigation_summary" msgid="818109176611921504">"Per anar a l\'inici, llisca cap amunt des de la part inferior de la pantalla. Per canviar d\'aplicació, llisca cap amunt des de la part inferior, mantén premut i deixa anar. Per tornar enrere, llisca des de la vora esquerra o dreta."</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"La partició de dades d\'aquest dispositiu s\'ha de convertir al format ext4 abans d\'utilitzar l\'opció per a desenvolupadors de 16 kB. No es pot garantir la integritat del programari en aquest mode, i les dades que estiguin emmagatzemades al dispositiu mentre el bootloader està desbloquejat poden estar en perill. Per activar l\'opció de 16 kB, caldrà que el dispositiu es reiniciï una vegada més. Quan estiguis en aquest mode, podràs alternar entre el mode de 4 kB i el mode de 16 kB amb un sol reinici. Com que es desactivaran algunes funcions en aquests modes, és possible que algunes aplicacions no funcionin. Per fer que el dispositiu torni al mode de producció, hauràs de tornar al mode de 4 kB i, a continuació, bloquejar el bootloader, que restablirà les dades de fàbrica del dispositiu. Quan el dispositiu s\'iniciï a Android correctament, desactiva el desbloqueig OEM a Opcions per a desenvolupadors. Es netejaran les dades del dispositiu i el sistema de fitxers es canviarà al format ext4 després de la confirmació. Quan es completi aquesta acció, torna i activa el mode de 16 kB de nou."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Esborra totes les dades"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"No s\'ha pogut canviar el format a ext4 ni netejar-ne la partició de dades."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Es requereix el desbloqueig del bootloader per al mode de 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Aquest dispositiu ha de tenir el bootloader desbloquejat abans d\'utilitzar l\'opció per a desenvolupadors de 16 kB. No es pot garantir la integritat del programari en aquest mode, i les dades que estiguin emmagatzemades al dispositiu mentre el bootloader està desbloquejat poden estar en perill. En activar el mode de 16 kB, es netejaran totes les dades d\'usuari i opcions de configuració. Quan s\'hagi desbloquejat el bootloader, caldrà que el dispositiu es reiniciï dues vegades per activar l\'opció de 16 kB. Quan estiguis en aquest mode, podràs alternar entre el mode de 4 kB i el mode de 16 kB amb un sol reinici. Com que es desactivaran algunes funcions en aquests modes, és possible que algunes aplicacions no funcionin. Per fer que el dispositiu torni al mode de producció, hauràs de tornar al mode de 4 kB i, a continuació, bloquejar l\'OEM o el bootloader, que restablirà les dades de fàbrica del dispositiu. Desbloqueja el bootloader i torna-ho a provar. Pots consultar les instruccions per fer-ho a <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"S\'està utilitzant el mode independent de la pàgina de 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Estàs utilitzant l\'opció de 4 kB del mode independent de la pàgina. No es pot garantir la integritat del programari en aquest mode, i les dades que estiguin emmagatzemades al dispositiu mentre el bootloader està desbloquejat poden estar en perill. Com que es desactivaran algunes funcions en aquests modes, és possible que algunes aplicacions no funcionin. Per tornar a entrar al mode de producció, has de bloquejar el bootloader del dispositiu. Toca per obtenir més informació."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Estàs utilitzant l\'opció de 4 kB del mode independent de la pàgina. No es pot garantir la integritat del programari en aquest mode, i les dades que estiguin emmagatzemades al dispositiu mentre el bootloader està desbloquejat poden estar en perill. Com que es desactivaran algunes funcions en aquests modes, és possible que algunes aplicacions no funcionin. Per tornar a entrar al mode de producció, has de bloquejar el bootloader del dispositiu. Aquesta acció tornarà a restablir les dades de fàbrica del dispositiu i en restaurarà la configuració de producció. Quan el dispositiu s\'iniciï a Android correctament, desactiva el desbloqueig OEM a Opcions per a desenvolupadors. Si el dispositiu no es pot iniciar a Android o és inestable, torna a instal·lar-hi les darreres imatges de fàbrica des de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o utilitza <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i selecciona Neteja el dispositiu, Bloqueja el bootloader i Força la instal·lació de totes les particions."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"S\'està utilitzant el mode independent de la pàgina de 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Estàs utilitzant l\'opció de 16 kB del mode independent de la pàgina. No es pot garantir la integritat del programari en aquest mode, i les dades que estiguin emmagatzemades al dispositiu mentre el bootloader està desbloquejat poden estar en perill. Com que es desactivaran algunes funcions en aquests modes, és possible que algunes aplicacions no funcionin. Per entrar al mode de producció de nou, has de tornar al mode de 4 kB i, a continuació, bloquejar el bootloader del dispositiu. Toca per obtenir més informació."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Estàs utilitzant l\'opció de 16 kB del mode independent de la pàgina. No es pot garantir la integritat del programari en aquest mode, i les dades que estiguin emmagatzemades al dispositiu mentre el bootloader està desbloquejat poden estar en perill. Com que es desactivaran algunes funcions en aquests modes, és possible que algunes aplicacions no funcionin. Per entrar al mode de producció de nou, has de tornar al mode de 4 kB i, a continuació, bloquejar el bootloader del dispositiu. Aquesta acció tornarà a restablir les dades de fàbrica del dispositiu i en restaurarà la configuració de producció. Quan el dispositiu s\'iniciï a Android correctament, desactiva el desbloqueig OEM a Opcions per a desenvolupadors. Si el dispositiu no es pot iniciar a Android o és inestable, torna a instal·lar-hi les darreres imatges de fàbrica des de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o utilitza <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i selecciona Neteja el dispositiu, Bloqueja el bootloader i Força la instal·lació de totes les particions."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Mode independent de la pàgina de 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Més informació"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Gestor d\'informes d\'errors"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Utilitza la fixació d\'aplicacions"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Utilitza les opcions per a desenvolupadors"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Utilitza el servei d\'impressió"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permet diversos usuaris"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"permet, múltiple, usuari, permís, diversos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"diversos, usuaris, perfils, persones, comptes, canviar, molts"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Utilitza la depuració sense fil"</string>
@@ -5353,4 +5418,6 @@
<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, primer desactiva la compartició d\'àudio."</string>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index 5296677..990b636 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Večerka"</item>
+ <item msgid="4152450357280759894">"Jízda autem"</item>
+ <item msgid="7096549258219399423">"Pohlcující"</item>
+ <item msgid="2760716776980432977">"Spravováno"</item>
+ <item msgid="601734478369121764">"Hvězdička"</item>
+ <item msgid="6243809315432780521">"Kalendář"</item>
+ <item msgid="4913577903148415331">"Čas"</item>
+ <item msgid="3653377604690057780">"Divadlo"</item>
+ <item msgid="3843711267408385410">"Květina"</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 0de1058..a9fe56c 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Nastavení naslouchátek"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Zkratka, kompatibilita s naslouchátky"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Předvolba"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Váš audiolog žádné předvolby nenaprogramoval"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Předvolbu nelze aktualizovat"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Zvukový výstup"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Informace o zvukovém výstupu"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Další informace o odemknutí pomocí hodinek"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Přidat hodinky"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Odstranit hodinky"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Odemknutí otiskem prstu nebo obličejem"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Odemknutí obličejem a otiskem prstu"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Odemknutí obličejem a otiskem prstu pro práci"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Nutné nastavení"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Byl přidán obličej a otisky prstů"</string>
@@ -575,7 +576,7 @@
<string name="private_space_new_lock_message" msgid="3117703578905489206">"Na další obrazovce budete muset zadat PIN, gesto nebo heslo zařízení"</string>
<string name="private_space_auto_lock_title" msgid="8663409382910601261">"Automaticky zamykat soukromý prostor"</string>
<string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Pokud zařízení nějakou dobu nepoužijete, soukromý prostor se může automaticky zamknout"</string>
- <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Vždy, když se zařízení zamkne"</string>
+ <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Vždy, když se zamkne zařízení"</string>
<string name="private_space_auto_lock_after_inactivity" msgid="7107814517866649733">"5 minut po vypnutí obrazovky"</string>
<string name="private_space_auto_lock_after_device_restart" msgid="288755768725895029">"Pouze po restartu zařízení"</string>
<string name="private_space_hide_page_title" msgid="3364639176511877414">"Skrýt soukromý prostor"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Nainstalujte aplikace"</b>\n"Nainstalujte aplikace, které chcete mít soukromé ve svém prostoru"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Upozornění"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Když prostor uzamknete, aplikace se zastaví"</b>\n"Když prostor uzamknete, aplikace v něm se zastaví a nebudete od nich dostávat oznámení"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Soukromé prostory nejsou vhodné pro aplikace, které potřebují běžet na pozadí nebo odesílat kritická upozornění, jako jsou lékařské aplikace. Oznámení a aktivita na pozadí se totiž při uzamčení prostoru zastaví.\n\nKdyž je soukromý prostor uzamčen, aplikace v soukromém prostoru se nezobrazují ve správci oprávnění, na panelu ochrany soukromí ani v dalších nastaveních.\n\nSoukromý prostor nelze přesunout do nového zařízení. Na novém zařízení bude nutné nastavit nový soukromý prostor.\n\nDo soukromého prostoru se může dostat kdokoli, kdo vaše zařízení připojí k počítači nebo nainstaluje škodlivé aplikace."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Soukromé prostory nejsou vhodné pro aplikace, které potřebují běžet na pozadí nebo odesílat kritická upozornění, jako jsou lékařské aplikace. Oznámení a aktivita na pozadí se totiž při uzamčení prostoru zastaví.\n\nKdyž je soukromý prostor uzamčen, aplikace v něm se nezobrazují ve správci oprávnění, na panelu ochrany soukromí ani v jiných nastaveních.\n\nSoukromý prostor nelze obnovit do nového zařízení. Pokud ho budete chtít používat na jiném zařízení, budete si na něm muset nastavit další prostor.\n\nDo soukromého prostoru se může dostat kdokoli, kdo zařízení připojí k počítači nebo do zařízení nainstaluje škodlivé aplikace."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Další informace o soukromém prostoru"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Bude to chvíli trvat"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Nastavování soukromého prostoru…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Restartovat zařízení?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Podrobné protokolování funkce NFC je určeno pouze pro účely vývoje. Další data funkce NFC budou zahrnuta ve zprávách o chybě, které mohou obsahovat soukromé informace. Pokud toto nastavení chcete změnit, restartujte zařízení."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restartovat"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Odesílání"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"zrcadlení"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Povolit bezdrátové zobrazení"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptivní"</string>
<string name="brightness" msgid="6216871641021779698">"Úroveň jasu"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptivní jas"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Informace o adaptivním jasu"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Jas obrazovky se automaticky přizpůsobí okolí a činnostem. Ručním posunutím posuvníku informujete funkci adaptivního jasu o svých preferencích."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Zapnuto"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Vypnuto"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Vybrané uživatelem: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Řeč"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Rychlost kurzoru"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Herní ovladače"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Vibrace při přesměrování"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Odeslat vibrace do herního ovladače, je-li připojen"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Přesto pokračovat"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Zrušit"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Nastavení zvětšení"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Posouvání jedním prstem"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Oblast zvětšení posunete přetažením jedním prstem."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Oblast zvětšení posunete přetažením dvěma prsty."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Při zvětšení pouze části obrazovky není k dispozici"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Přiblížení zobrazení klepnutím na tlačítko"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Obrazovku si můžete rychle přiblížit, aby byl obsah větší."</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Přiblížení:</b><br/> {0,number,integer}. Zvětšení spusťte pomocí zkratky.<br/> {1,number,integer}. Klepněte na obrazovku.<br/> {2,number,integer}. Po obrazovce se pohybujte přetažením dvou prstů.<br/> {3,number,integer}. Přiblížení upravte stažením a roztažením dvou prstů.<br/> {4,number,integer}. Zvětšení ukončete pomocí zkratky.<br/><br/> <b>Dočasné přiblížení:</b><br/> {0,number,integer}. Zkontrolujte, zda je typ zvětšení nastaven na celou obrazovku.<br/> {1,number,integer}. Zvětšení spusťte pomocí zkratky.<br/> {2,number,integer}. Podržte jakékoli místo na obrazovce.<br/> {3,number,integer}. Po obrazovce se pohybujte přetažením prstu.<br/> {4,number,integer}. Zvětšení ukončete zvednutím prstu."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Když je zapnuté zvětšení, můžete přibližovat obsah na obrazovce.\n\n"<b>"Chcete-li obsah přiblížit"</b>", spusťte zvětšení a poté klepněte kamkoliv na obrazovku.\n"<ul><li>"Přetažením dvěma nebo více prsty můžete obsah posouvat."</li>\n<li>"Stažením nebo roztažením dvou či více prstů upravíte přiblížení."</li></ul>\n\n<b>"Chcete-li obsah přiblížit dočasně"</b>", spusťte zvětšení a poté se dotkněte libovolného místa na obrazovce a podržte ho.\n"<ul><li>"Přetažením se můžete pohybovat po obrazovce."</li>\n<li>"Zvednutím prstu zobrazení vrátíte do původního stavu."</li></ul>\n\n"Na klávesnici a navigačním panelu přiblížení není k dispozici."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Strana <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> z <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Zkratka tlačítka přístupnosti"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Žádný}=1{Nastaven 1 plán}few{Nastaveny # plány}many{Nastaveno # plánu}other{Nastaveno # plánů}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Nerušit"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Režim priority"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Přijímat pouze oznámení od důležitých lidí a z důležitých aplikací"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Vyberte typ aktivace"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Čas"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Příklad: 9:30–17:00"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendář"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Příklad: Osobní kalendář"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Omezení vyrušení"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Zapněte funkci Nerušit"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Vyrušovat mohou budíky a zvuky médií"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Plány"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Smazat plány"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Smazat"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Upravit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Plány"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Plán"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Přidejte kalendář"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Použít kalendář"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Plán"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Nastavení plánu"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Plán"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Plán"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Ztlumit telefon v určitou dobu"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Povolit vyrušení, která vydávají zvuk"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokovat vizuální vyrušení"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Povolit vizuální signály"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Oznámení, která se k vám mohou dostat"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Soustřeďte se"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Další akce"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Nastavení displeje"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Možnosti zobrazení"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"zapnout tmavý motiv"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Přepněte operační systém a aplikace tak, aby upřednostňovaly světlý text na tmavém pozadí. Může to být příjemnější pro oči a na některých zařízeních to výrazně šetří baterii"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Žádné změny zobrazení}=1{{effect_1}}=2{{effect_1} a {effect_2}}=3{{effect_1}, {effect_2} a {effect_3}}few{{effect_1}, {effect_2} a ještě #}many{{effect_1}, {effect_2} a ještě #}other{{effect_1}, {effect_2} a ještě #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrovat přerušení"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Žádná přerušení se nefiltrují"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Možnosti zobrazení filtrovaných oznámení"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Když je zapnutý režim Nerušit"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Oznámení bez zvukového upozornění"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorie"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Jiné"</string>
<string name="no_channels" msgid="4716199078612071915">"Tato aplikace neodeslala žádná oznámení"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Zobrazit nepoužívané kategorie"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Další nastavení v aplikaci"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Zobrazit nepoužívané kategorie"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Skrýt nepoužívané kategorie"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Vybrané aplikace"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nic"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Vše"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Povolit přepisování aplikací"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikace, které smí vyrušovat"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Vybrat další aplikace"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Na hodinu (tedy do {time}) přepnout do režimu Pouze budíky}few{Na # hodiny (tedy do {time}) přepnout do režimu Pouze budíky}many{Na # hodiny (tedy do {time}) přepnout do režimu Pouze budíky}other{Na # hodin (tedy do {time}) přepnout do režimu Pouze budíky}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Přepnout do režimu Pouze budíky až do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Přejít do režimu Vždy vyrušit"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Přejmenovat"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Změnit ikonu"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Změnit ikonu"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Varování"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Zavřít"</string>
<string name="device_feedback" msgid="5351614458411688608">"Odeslat zpětnou vazbu o tomto zařízení"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Před použitím 16KB možnosti pro vývojáře je potřeba převést datový oddíl tohoto zařízení na systém souborů ext4. V tomto režimu nelze zaručit integritu softwaru a veškerá data uložená v telefonu při odemknutém bootloaderu mohou být ohrožena. K aktivaci 16KB režimu pak bude potřeba zařízení restartovat ještě jednou. Po jeho aktivaci pak bude k přepnutí mezi 4KB a 16KB režimem stačit pouze jeden restart. Některé funkce budou v těchto režimech zakázány, takže některé aplikace nemusí fungovat. Pokud budete chtít zařízení vrátit do produkčního režimu, budete systém muset přepnout zpět do 4KB režimu a uzamknout bootloader, čímž zařízení resetujete do továrního nastavení. Až se systém Android v zařízení úspěšně spustí, vypněte v sekci Pro vývojáře možnost Odemknutí OEM. Po potvrzení se zařízení vymaže a systém souborů se změní na ext4. Po dokončení se vraťte a aktivujte 16KB režim znovu."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Vymazat všechna data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Přeformátování na ext4 a nevratné vymazání datového oddílu se nezdařilo."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB režim vyžaduje odemknutí bootloaderu"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"K použití možnosti 16KB režimu pro vývojáře musí mít zařízení odemknutý bootloader. V tomto režimu nelze zaručit integritu softwaru a veškerá data uložená v telefonu při odemknutém bootloaderu mohou být ohrožena. Při aktivaci 16KB režimu se vymažou všechna uživatelská data a nastavení. Po odemknutí bootloaderu bude aktivace 16KB režimu vyžadovat dva restarty. Po jeho aktivaci pak bude k přepnutí mezi 4KB a 16KB režimem stačit pouze jeden restart. Některé funkce budou v těchto režimech zakázány, takže některé aplikace nemusí fungovat. Pokud budete chtít zařízení vrátit do produkčního režimu, budete systém muset přepnout zpět do 4KB režimu a pak v něm deaktivovat odemknutí OEM / uzamknout bootloader (čímž zařízení resetujete do továrního nastavení). Odemkněte bootloader a zkuste to znovu. Pokyny, jak to provést, najdete na stránce <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Používáte 4KB stránkově agnostický režim"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Používáte 4KB verzi stránkově agnostického režimu. V tomto režimu nelze zaručit integritu softwaru a veškerá data uložená v telefonu při odemknutém bootloaderu mohou být ohrožena. Některé funkce budou v těchto režimech zakázány, takže některé aplikace nemusí fungovat. Pokud chcete znovu aktivovat produkční režim, musíte uzamknout bootloader zařízení. Další informace zobrazíte klepnutím."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Používáte 4KB verzi stránkově agnostického režimu. V tomto režimu nelze zaručit integritu softwaru a veškerá data uložená v telefonu při odemknutém bootloaderu mohou být ohrožena. Některé funkce budou v těchto režimech zakázány, takže některé aplikace nemusí fungovat. Pokud chcete znovu aktivovat produkční režim, musíte uzamknout bootloader zařízení. Tím zařízení znovu resetujete do továrního nastavení a obnovíte v něm produkční nastavení. Až se systém Android v zařízení úspěšně spustí, vypněte v sekci Pro vývojáře možnost Odemknutí OEM. Pokud se systém Android v zařízení nespustí nebo nebude stabilní, flashujte zařízení na nejnovější tovární obrazy ze stránky <a href=\"https://developers.google.com/android/images\">https://developers .google.com/android/images</a> nebo použijte nástroj <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> a vyberte Wipe Device (Vymazat zařízení), Lock Bootloader (Zamknout bootloader) a Force Flash all partitions (Flashovat všechny oddíly)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Používáte 16KB stránkově agnostický režim"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Aktuálně používáte 16KB verzi stránkově agnostického režimu. V tomto režimu nelze zaručit integritu softwaru a veškerá data uložená v telefonu při odemknutém bootloaderu mohou být ohrožena. Některé funkce budou v těchto režimech zakázány, takže některé aplikace nemusí fungovat. Pokud chcete znovu aktivovat produkční režim, musíte přepnout zpět na 4KB režim a poté uzamknout bootloader zařízení. Další informace zobrazíte klepnutím."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Aktuálně používáte 16KB verzi stránkově agnostického režimu. V tomto režimu nelze zaručit integritu softwaru a veškerá data uložená v telefonu při odemknutém bootloaderu mohou být ohrožena. Některé funkce budou v těchto režimech zakázány, takže některé aplikace nemusí fungovat. Pokud chcete znovu aktivovat produkční režim, musíte přepnout zpět na 4KB režim a poté uzamknout bootloader zařízení. Tím zařízení znovu resetujete do továrního nastavení a obnovíte v něm produkční nastavení. Až se systém Android v zařízení úspěšně spustí, vypněte v sekci Pro vývojáře možnost Odemknutí OEM. Pokud se systém Android v zařízení nespustí nebo nebude stabilní, flashujte zařízení na nejnovější tovární obrazy ze stránky <a href=\"https://developers.google.com/android/images\">https://developers .google.com/android/images</a> nebo použijte nástroj <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> a vyberte Wipe Device (Vymazat zařízení), Lock Bootloader (Zamknout bootloader) a Force Flash all partitions (Flashovat všechny oddíly)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB stránkově agnostický režim"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Další informace"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Nástroj pro zprávy o chybách"</string>
@@ -5011,7 +5075,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Používat připnutí aplikace"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Používat nastavení pro vývojáře"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Používat tiskovou službu"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Povolit více uživatelů"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"povolit, několik, uživatel, mnoho"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"několik, více, uživatelé, profily, lidé, účty, přepínání, mnoho"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Používat bezdrátové ladění"</string>
@@ -5355,4 +5420,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index 0664775..39d41c2 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Sengetid"</item>
+ <item msgid="4152450357280759894">"Kørsel"</item>
+ <item msgid="7096549258219399423">"Opslugende"</item>
+ <item msgid="2760716776980432977">"Administreret"</item>
+ <item msgid="601734478369121764">"Stjerne"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Tidspunkt"</item>
+ <item msgid="3653377604690057780">"Teater"</item>
+ <item msgid="3843711267408385410">"Blomst"</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 53f6dd2..227acb7 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Indstillinger for høreapparat"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Genvej, høreapparatskompatibilitet"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Forindstilling"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Din audiolog har ingen forprogrammerede indstillinger"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Forindstillingen kunne ikke opdateres"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Lydudgang"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Om lydudgang"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Få flere oplysninger om uroplåsning"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Tilføj ur"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Fjern ur"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingeraftryk og ansigtsoplåsning"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Ansigtsoplåsning og fingeroplåsning"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ansigtsoplåsning og fingeroplåsning til arbejdsprofil"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Konfiguration er påkrævet"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Ansigt og fingeraftryk er tilføjet"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installer apps"</b>\n"Installer apps, du vil holde private i dit område"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Husk!"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps afbrydes, når du låser dit område"</b>\n"Hvis du låser dit område, afbrydes apps i området, og du modtager ikke notifikationer fra dem"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private områder er ikke egnet til apps, der skal køre i baggrunden eller sende kritiske notifikationer, f.eks. medicinske apps. Dette skyldes, at notifikationer og baggrundsaktivitet stoppes, når dit område er låst.\n\nApps i dit private område vises ikke i Tilladelsesadministrator, privatlivspanelet eller andre indstillinger, når dit private område er låst.\n\nDu kan ikke flytte dit private område til en ny enhed. Du skal konfigurere et andet privat område, hvis du vil bruge det på en anden enhed.\n\nPersoner, der forbinder din enhed til en computer eller installerer skadelige apps på enheden, kan muligvis tilgå dit private område."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private områder er ikke egnet til apps, der skal køre i baggrunden eller sende kritiske notifikationer, f.eks. medicinske apps. Dette skyldes, at notifikationer og baggrundsaktivitet stoppes, når dit område er låst.\n\nApps i dit private område vises ikke i Tilladelsesadministrator, privatlivspanelet eller andre indstillinger, når dit private område er låst.\n\nDu kan ikke gendanne dit private område på en ny enhed. Du skal konfigurere et andet område, hvis du vil bruge det på en anden enhed.\n\nPersoner, der forbinder din enhed til en computer eller installerer skadelige apps på enheden, kan muligvis tilgå dit private område."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Få flere oplysninger om privat område"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Det tager et øjeblik"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Konfigurerer et privat område…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vil du genstarte enheden?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detaljeret NFC-logging er kun beregnet til udvikling. Yderligere NFC-data inkluderes i fejlrapporter, som muligvis indeholder private oplysninger. Genstart enheden for at ændre denne indstilling."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Genstart"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"spejl"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Aktivér trådløs skærm"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Selvjusterende"</string>
<string name="brightness" msgid="6216871641021779698">"Lysstyrke"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Automatisk lysstyrke"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Skærmens lysstyrke tilpasses automatisk på baggrund af dine omgivelser og dine aktiviteter. Du kan flytte skyderen manuelt for at hjælpe Automatisk lysstyrke med at lære dine præferencer."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Om automatisk lysstyrke"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Skærmens lysstyrke tilpasses automatisk på baggrund af dine omgivelser og dine aktiviteter. Du kan flytte skyderen manuelt for at hjælpe automatisk lysstyrke med at lære dine præferencer."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Til"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Fra"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Skærmens hvidbalance"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Brugervalgt: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Tale"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Markørens hastighed"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Spillekontroller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Omdiriger vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibration til spillecontroller, når den er tilsluttet"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Fortsæt alligevel"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Annuller"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Indstillinger for forstørrelse"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Panorering med én finger"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Flyt forstørrelsesområdet ved at trække med én finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Flyt forstørrelsesområdet ved at trække med to fingre."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Utilgængelig, når kun en del af skærmen forstørres"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tryk på en knap for at zoome"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zoom hurtigt ind på skærmen for at forstørre indhold"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Sådan zoomer du ind:</b><br/> {0,number,integer}. Brug genvejen til at starte forstørrelse<br/> {1,number,integer}. Tryk på skærmen<br/> {2,number,integer}. Træk med to fingre for at navigere rundt på skærmen<br/> {3,number,integer}. Knib med to fingre for at zoome ind eller ud<br/> {4,number,integer}. Brug genvejen til at stoppe forstørrelse<br/><br/><b>Sådan zoomer du midlertidigt ind:</b><br/> {0,number,integer}. Sørg for, at forstørrelsestypen er indstillet til fuld skærm<br/> {1,number,integer}. Brug genvejen til at starte forstørrelse<br/> {2,number,integer}. Hold fingeren nede et vilkårligt sted på skærmen<br/> {3,number,integer}. Træk fingeren for at navigere rundt på skærmen<br/> {4,number,integer}. Løft fingeren for at stoppe forstørrelse"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Når forstørrelse er aktiveret, kan du zoome ind på skærmen.\n\n"<b>"Hvis du vil zoome"</b>", skal du åbne forstørrelse og derefter trykke et vilkårligt sted på skærmen.\n"<ul><li>"Træk med to eller flere fingre for at rulle"</li>\n<li>"Knib sammen med to eller flere fingre for at justere zoomniveauet"</li></ul>\n\n<b>"Hvis du vil zoome midlertidigt"</b>", skal du åbne forstørrelse og holde fingeren nede et vilkårligt sted på skærmen.\n"<ul><li>"Træk for at udforske forskellige dele af skærmen"</li>\n<li>"Løft fingeren for at zoome ud"</li></ul>\n\n"Du kan ikke zoome ind på tastaturet eller navigationslinjen."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Side <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> af <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Genvej til knappen til hjælpefunktioner"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ingen}=1{1 tidsplan er angivet}one{# tidsplan er angivet}other{# tidsplaner er angivet}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Forstyr ikke"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Tilstande med prioritet"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Få kun notifikationer fra vigtige personer og apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Vælg aktiveringstype"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Tidspunkt"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"F.eks. \"9.30 – 17.00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"F.eks. \"Personlig kalender\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Begræns antallet af afbrydelser"</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_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>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Rediger"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Tidsplaner"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Tidsplan"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Tilføj en kalender"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Brug din kalender"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Tidsplan"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Angiv en 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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Planlæg"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Gør telefonen lydløs på bestemte tidspunkter"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Tillad afbrydelser, der laver lyd"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloker visuelle forstyrrelser"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Tillad visuelle signaler"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifikationer, du kan modtage"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Hold fokus"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Yderligere handlinger"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Indstillinger for visning"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Visningsmuligheder"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"aktivér mørkt tema"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Indstil OS og apps til at foretrække lys tekst på en mørk baggrund, hvilket kan være mere behageligt for øjnene og medføre betydelig batteribesparelse på nogle enheder"</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="mode_notification_filter_title" msgid="443728483176031977">"Bortfiltrér forstyrrelser"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ingen forstyrrelser bortfiltreres"</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>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorier"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Andre"</string>
<string name="no_channels" msgid="4716199078612071915">"Denne app har ikke sendt nogen notifikationer"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Vis ikke-anvendte kategorier"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Flere indstillinger i appen"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Vis ikke-anvendte kategorier"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Skjul ikke-anvendte kategorier"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Alle"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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_add_header" msgid="3201829605075172536">"Vælg flere apps"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Skift til kun alarmer i én time (indtil {time})}one{Skift til kun alarmer i # time (indtil {time})}other{Skift til kun alarmer i # timer (indtil {time})}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Skift til Kun alarmer frem til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Skift til Afbryd altid"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Omdøb"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Skift ikon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Skift ikon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Advarsel"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Luk"</string>
<string name="device_feedback" msgid="5351614458411688608">"Send feedback om denne enhed"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Denne enheds datapartition skal konverteres til ext4, før du kan bruge udviklerindstillingen med 16 kB. Softwareintegriteten kan ikke garanteres i denne tilstand, og eventuelle data, der gemmes på telefonen, mens bootloaderen er ulåst, kan være sårbare. Aktivering af indstillingen med 16 kB kræver én yderligere genstart efter dette. Når du er i denne tilstand, kan du skifte mellem tilstanden med 4 kB og tilstanden med 16 kB ved blot at genstarte en enkelt gang. Nogle funktioner deaktiveres i disse tilstande, så nogle apps fungerer muligvis ikke. Hvis du vil skifte tilbage til produktionstilstand på enheden, skal du skifte tilbage til tilstanden med 4 kB og derefter låse bootloaderen, hvilket vil gendanne enhedens fabriksindstillinger. Når enheden er startet i Android, skal du deaktivere OEM-oplåsning i Indstillinger for udviklere. Enheden ryddes, og filsystemet ændres til ext4 efter bekræftelse. Når dette er gjort, skal du vende tilbage for at aktivere 16 kB igen."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Ryd alle data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Datapartitionen kunne ikke omformateres og ryddes til ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Oplåsning af bootloader er påkrævet ved brug af tilstanden med 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Bootloader skal være låst op på denne enhed, før du kan bruge udviklerindstillingen med 16 kB. Softwareintegriteten kan ikke garanteres i denne tilstand, og eventuelle data, der gemmes på telefonen, mens bootloaderen er ulåst, kan være sårbare. Alle brugerdata og -indstillinger ryddes, når du aktiverer tilstanden med 16 kB. Når bootloaderen er låst op, forudsætter brug af indstillingen med 16 kB to genstarter. Når du er i denne tilstand, kan du skifte mellem tilstanden med 4 kB og tilstanden med 16 kB ved blot at genstarte en enkelt gang. Nogle funktioner deaktiveres i disse tilstande, så nogle apps fungerer muligvis ikke. Hvis du vil skifte tilbage til produktionstilstand på enheden, skal du skifte tilbage til tilstanden med 4 kB og derefter låse OEM/bootloaderen, hvilket gendanner enheden fabriksindstillinger. Lås bootloaderen op, og prøv igen. Du kan se, hvordan du gør dette, på <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Brug af den sideagnostiske tilstand med 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Du er i tilstanden med 4 kB i den sideagnostiske tilstand. Softwareintegriteten kan ikke garanteres i denne tilstand, og eventuelle data, der gemmes på telefonen, mens bootloaderen er ulåst, kan være sårbare. Nogle funktioner deaktiveres i disse tilstande, så nogle apps fungerer muligvis ikke. Hvis du vil skifte tilbage til produktionstilstand, skal du låse bootloaderen på enheden. Tryk for at læse mere."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Du er i tilstanden med 4 kB i den sideagnostiske tilstand. Softwareintegriteten kan ikke garanteres i denne tilstand, og eventuelle data, der gemmes på telefonen, mens bootloaderen er ulåst, kan være sårbare. Nogle funktioner deaktiveres i disse tilstande, så nogle apps fungerer muligvis ikke. Hvis du vil skifte tilbage til produktionstilstand, skal du låse bootloaderen på enheden. Denne handling gendanner enhedens fabriksindstillinger til produktionsindstillingerne. Når enheden er startet i Android, skal du deaktivere OEM-oplåsning i Indstillinger for udviklere. Hvis enheden ikke kan starte i Android, eller hvis den er ustabil, skal du flashe enheden igen med de oprindelige systembilleder fra <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> eller bruge <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> og vælge \"Ryd enhed\", \"Lås bootloader\" og \"Gennemtving flash af alle partitioner\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Brug af den sideagnostiske tilstand med 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Du er i den sideagnostiske tilstand med 16 kB. Softwareintegriteten kan ikke garanteres i denne tilstand, og eventuelle data, der gemmes på telefonen, mens bootloaderen er ulåst, kan være sårbare. Nogle funktioner deaktiveres i disse tilstande, så nogle apps fungerer muligvis ikke. Hvis du vil vende tilbage til produktionstilstand, skal du skifte tilbage til tilstanden med 4 kB og derefter låse bootloaderen på enheden. Tryk for at læse mere."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Du er i den sideagnostiske tilstand med 16 kB. Softwareintegriteten kan ikke garanteres i denne tilstand, og eventuelle data, der gemmes på telefonen, mens bootloaderen er ulåst, kan være sårbare. Nogle funktioner deaktiveres i disse tilstande, så nogle apps fungerer muligvis ikke. Hvis du vil vende tilbage til produktionstilstand, skal du skifte tilbage til tilstanden med 4 kB og derefter låse bootloaderen på enheden. Denne handling gendanner enhedens fabriksindstillinger til produktionsindstillingerne. Når enheden er startet i Android, skal du deaktivere OEM-oplåsning i Indstillinger for udviklere. Hvis enheden ikke kan starte i Android, eller hvis den er ustabil, skal du flashe enheden igen med de oprindelige systembilleder fra <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> eller bruge <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> og vælge \"Ryd enhed\", \"Lås bootloader\" og \"Gennemtving flash af alle partitioner\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Den sideagnostiske tilstanden med 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Læs mere"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Håndtering af fejlrapport"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Brug appfastgørelse"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Brug Indstillinger for udviklere"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Brug en udskrivningstjeneste"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Tillad flere brugere"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"tillad, flere, brugere, mange"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"flere, brugere, profiler, personer, konti, skift, mange"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Brug trådløs fejlretning"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index f5245a3..20b7e30 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Schlafenszeit"</item>
+ <item msgid="4152450357280759894">"Autofahren"</item>
+ <item msgid="7096549258219399423">"Immersiv"</item>
+ <item msgid="2760716776980432977">"Verwaltet"</item>
+ <item msgid="601734478369121764">"Stern"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Zeit"</item>
+ <item msgid="3653377604690057780">"Theater"</item>
+ <item msgid="3843711267408385410">"Blüte"</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 bc76709..242628d 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hörgeräteeinstellungen"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Verknüpfung, Kompatibilität mit Hörgeräten"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Voreinstellung"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Der Hörgeräteakustiker hat keine Voreinstellungen festgelegt"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Voreinstellung konnte nicht aktualisiert werden"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audioausgabe"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Informationen zur Audioausgabe"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Weitere Informationen zu „Mit Smartwatch entsperren“"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Smartwatch hinzufügen"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Smartwatch entfernen"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Entsperrung per Gesichtserkennung und Fingerabdruck"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Entsperrung per Gesichtserkennung & Fingerabdruck"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Entsperrung per Gesichtserkennung & Fingerabdruck für die Arbeit"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Einrichtung erforderlich"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Gesicht und Fingerabdrücke hinzugefügt"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Apps installieren"</b>\n"Du kannst in deinem Profil Apps installieren, die privat bleiben sollen"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Wichtige Hinweise"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps werden beendet, wenn du dein Profil sperrst"</b>\n"Wenn du dein Profil sperrst, werden die Apps darin beendet und du erhältst von ihnen keine Benachrichtigungen"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Vertrauliche Profile eignen sich nicht für Apps, die im Hintergrund laufen oder wichtige Benachrichtigungen senden müssen, wie z. B. medizinische Apps. Das liegt daran, dass Benachrichtigungen und Hintergrundaktivitäten gestoppt werden, wenn dein Profil gesperrt ist.\n\nWenn dein vertrauliches Profil gesperrt ist, werden Apps darin nicht im Berechtigungsmanager, Privatsphäre-Dashboard und anderen Einstellungen angezeigt.\n\nDein vertrauliches Profil kann nicht auf ein neues Gerät übertragen werden. Du musst ein weiteres vertrauliches Profil einrichten, wenn du es auf einem anderen Gerät verwenden möchtest.\n\nJeder, der dein Gerät mit einem Computer verbindet oder auf dem Gerät schädliche Apps installiert, kann möglicherweise auf dein vertrauliches Profil zugreifen."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Vertrauliche Profile eignen sich nicht für Apps, die im Hintergrund laufen oder wichtige Benachrichtigungen senden müssen, wie z. B. medizinische Apps. Das liegt daran, dass Benachrichtigungen und Hintergrundaktivitäten gestoppt werden, wenn dein Profil gesperrt ist.\n\nWenn dein vertrauliches Profil gesperrt ist, werden Apps darin nicht im Berechtigungsmanager, Privatsphäre-Dashboard und anderen Einstellungen angezeigt.\n\nDein vertrauliches Profil kann nicht auf ein neues Gerät übertragen werden. Wenn du auf einem anderen Gerät ein vertrauliches Profil nutzen möchtest, musst du ein neues einrichten.\n\nPersonen, die dein Gerät mit einem Computer verbinden oder schädliche Apps auf deinem Gerät installieren, haben möglicherweise auch Zugriff auf dein vertrauliches Profil."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Informationen zum vertraulichen Profil"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Das kann einen Moment dauern"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Das vertrauliche Profil wird eingerichtet…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Gerät neu starten?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Die detaillierte NFC-Protokollierung wird nur zu Entwicklungszwecken verwendet. Dazu gehören auch zusätzliche NFC-Daten in Fehlerberichten, die private Informationen enthalten können. Starte dein Gerät neu, um diese Einstellung zu ändern."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Neu starten"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Streamen"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"spiegeln"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Kabellose Übertragung aktivieren"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptiv"</string>
<string name="brightness" msgid="6216871641021779698">"Helligkeit"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Automatische Helligkeit"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Die Helligkeit des Displays passt sich automatisch an deine Umgebung und deine Aktivitäten an. Mit dem Schieberegler kannst du manuell nachjustieren und die Funktion „Automatische Helligkeit“ merkt sich deine Präferenz."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Informationen zur automatischen Helligkeit"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Die Helligkeit des Displays passt sich automatisch an deine Umgebung und deine Aktivitäten an. Mit dem Schieberegler kannst du sie manuell nach Wunsch anpassen und die Funktion „Automatische Helligkeit“ merkt sich deine Präferenz."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"An"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Aus"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Weißabgleich des Bildschirms"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Nutzerauswahl: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Spracheingabe, -erkennung und -ausgabe"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Zeigergeschwindigkeit"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Gamecontroller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Vibration weiterleiten"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Vibration an Gamecontroller senden, sofern eine Verbindung besteht"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Trotzdem fortfahren"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Abbrechen"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Vergrößerungseinstellungen"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Schwenken mit einem Finger"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Verschiebe den Vergrößerungsbereich mit einem Finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Verschiebe den Vergrößerungsbereich mit zwei Fingern."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nicht verfügbar, solange nur ein Teil des Bildschirms vergrößert wird"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Zum Zoomen auf eine Schaltfläche tippen"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Du kannst auf dem Display schnell heranzoomen, um Inhalte zu vergrößern"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>So zoomst du heran:</b><br/> {0,number,integer}. Starte die Vergrößerung über den Kurzbefehl<br/> {1,number,integer}. Tippe auf das Display<br/> {2,number,integer}. Ziehe mit zwei Fingern, um den angezeigten Bildschirmausschnitt zu ändern<br/> {3,number,integer}. Ziehe zwei Finger auseinander oder zusammen, um den Zoom anzupassen<br/> {4,number,integer}. Beende die Vergrößerung über den Kurzbefehl<br/><br/> <b>So zoomst du vorübergehend heran:</b><br/> {0,number,integer}. Achte darauf, dass als Art der Vergrößerung „Vollbild“ ausgewählt ist<br/> {1,number,integer}. Starte die Vergrößerung über den Kurzbefehl<br/> {2,number,integer}. Halte eine beliebige Stelle auf dem Display gedrückt<br/> {3,number,integer}. Ziehe mit dem Finger, um den angezeigten Bildschirmausschnitt zu ändern<br/> {4,number,integer}. Hebe den Finger, um die Vergrößerung zu beenden"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Wenn die Vergrößerung aktiviert ist, kannst du Elemente auf dem Bildschirm heranzoomen.\n\n"<b>"Wenn du zoomen möchtest"</b>", starte die Vergrößerung und tippe dann auf eine beliebige Stelle auf dem Bildschirm.\n"<ul><li>"Zum Scrollen ziehe mit zwei oder mehr Fingern"</li>\n<li>"Zum Anpassen des Zooms ziehe zwei oder mehr Finger zusammen bzw. auseinander"</li></ul>\n\n<b>"Wenn du vorübergehend heranzoomen möchtest"</b>", starte die Vergrößerung und tippe dann auf eine beliebige Stelle auf dem Bildschirm und halte sie gedrückt.\n"<ul><li>"Wenn du den angezeigten Bildschirmausschnitt verschieben möchtest, ziehe den Bildschirm"</li>\n<li>"Zum Herauszoomen hebe den Finger"</li></ul>\n\n"In die Tastatur oder Navigationsleiste kann nicht hineingezoomt werden."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Seite <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> von <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Kurzbefehl: Schaltfläche „Bedienungshilfen“"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Prioritätsmodi"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Benachrichtigungen nur von wichtigen Personen und Apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Aktivierungstyp auswählen"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Uhrzeit"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Beispiel: „09:30 bis 17:00 Uhr“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Beispiel: „Persönlicher Kalender“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Unterbrechungen einschränken"</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_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>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Bearbeiten"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Zeitpläne"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Zeitplan"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Kalender hinzufügen"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Kalender verwenden"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Zeitplan"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Zeitplan festlegen"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Zeitplan"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> Std. <xliff:g id="MINUTES">%2$d</xliff:g> Min."</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Zeitplan"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Smartphone zu bestimmten Zeiten stummschalten"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Unterbrechungen mit Tönen zulassen"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Visuelle Störungen blockieren"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Visuelle Signale zulassen"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Benachrichtigungen, die dich erreichen können"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Mehr Konzentration"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Weitere Aktionen"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Anzeigeeinstellungen"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Optionen anzeigen"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"Dunkles Design aktivieren"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Stelle das Betriebssystem und die Apps so ein, dass vor einem dunklen Hintergrund heller Text bevorzugt wird. Das strengt die Augen weniger an und kann auf manchen Geräten die Akkulaufzeit erheblich verlängern."</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_notification_filter_title" msgid="443728483176031977">"Unterbrechungen filtern"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Es werden keine Unterbrechungen gefiltert"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Anzeigeoptionen für gefilterte Benachrichtigungen"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Wenn „Bitte nicht stören“ aktiviert ist"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Kein akustisches Signal bei Benachrichtigungen"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorien"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Andere"</string>
<string name="no_channels" msgid="4716199078612071915">"Für diese App gibt es keine Benachrichtigungen"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Ungenutzte Kategorien anzeigen"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Zusätzliche Einstellungen in der App"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Ungenutzte Kategorien anzeigen"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ungenutzte Kategorien ausblenden"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Alle"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Überschreiben durch Apps zulassen"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps, die unterbrechen dürfen"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Weitere Apps auswählen"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Eine Stunde lang bis {time} zur Option „nur Weckrufe“ wechseln}other{# Stunden lang bis {time} zur Option „nur Weckrufe“ wechseln}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Bis <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> zur Option \"Nur Weckrufe\" wechseln"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Zur Option \"Immer unterbrechen\" wechseln"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Umbenennen"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Symbol ändern"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Symbol ändern"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Warnung"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Schließen"</string>
<string name="device_feedback" msgid="5351614458411688608">"Feedback zu diesem Gerät senden"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Bevor die 16‑KB-Entwickleroption verwendet werden kann, muss die Datenpartition des Geräts in ext4 umgewandelt werden. Beachte, dass bei entsperrtem Bootloader die Softwareintegrität nicht sichergestellt werden kann und alle auf dem Smartphone gespeicherten Daten gefährdet sind. Zum Aktivieren der 16‑KB-Option muss das Gerät danach noch einmal neu gestartet werden. Wenn du dann in diesem Modus bist, reicht für den Wechsel zwischen dem 4‑KB-Modus und dem 16‑KB-Modus ein einmaliger Neustart aus. Einige Funktionen werden in diesen Modi deaktiviert, weshalb bestimmte Anwendungen möglicherweise nicht funktionieren. Wenn du das Gerät in den Produktionsmodus zurückversetzen möchtest, musst du zurück in den 4‑KB-Modus wechseln und dann den Bootloader sperren. Dadurch wird das Gerät auf die Werkseinstellungen zurückgesetzt. Nachdem das Gerät hochgefahren und Android gestartet wurde, deaktiviere in den Entwickleroptionen die OEM-Entsperrung. Alle Daten auf dem Gerät werden gelöscht und das Dateisystem wird nach entsprechender Bestätigung in ext4 geändert. Nach Abschluss dieses Vorgangs kannst du hierher zurückkehren, um den 16‑KB-Modus zu aktivieren."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Alle Daten löschen"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Die Datenpartition konnte nicht gelöscht und mit ext4 neu formatiert werden."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Für den 16‑KB-Modus muss der Bootloader entsperrt werden"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Bevor auf diesem Gerät die 16‑KB-Entwickleroption verwendet werden kann, muss der Bootloader entsperrt werden. Beachte, dass bei entsperrtem Bootloader die Softwareintegrität nicht sichergestellt werden kann und alle auf dem Smartphone gespeicherten Daten gefährdet sind. Durch Aktivieren des 16‑KB-Modus werden alle Nutzerdaten und ‑einstellungen gelöscht. Nachdem der Bootloader entsperrt wurde, sind zur Aktivierung des 16‑KB-Modus zwei Neustarts erforderlich. Wenn du dann in diesem Modus bist, reicht für den Wechsel zwischen dem 4‑KB-Modus und dem 16‑KB-Modus ein einmaliger Neustart aus. Einige Funktionen werden in diesen Modi deaktiviert, weshalb bestimmte Anwendungen möglicherweise nicht funktionieren. Wenn du das Gerät in den Produktionsmodus zurückversetzen möchtest, musst du zurück in den 4‑KB-Modus wechseln und dann die OEM-/Bootloader-Sperre einrichten. Dadurch wird das Gerät auf die Werkseinstellungen zurückgesetzt. Bitte entsperre den Bootloader und versuch es noch einmal. Eine Anleitung hierzu findest du unter <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Speicherseitenunabhängigen 4‑KB-Modus verwenden"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Du befindest dich im 4‑KB-Modus des speicherseitenunabhängigen Modus. Beachte, dass bei entsperrtem Bootloader die Softwareintegrität nicht sichergestellt werden kann und alle auf dem Smartphone gespeicherten Daten gefährdet sind. Einige Funktionen werden in diesen Modi deaktiviert, weshalb bestimmte Anwendungen möglicherweise nicht funktionieren. Wenn du wieder in den Produktionsmodus wechseln möchtest, musst du den Bootloader des Geräts sperren. Wenn du mehr erfahren möchtest, tippe hier."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Du befindest dich im 4‑KB-Modus des speicherseitenunabhängigen Modus. Beachte, dass bei entsperrtem Bootloader die Softwareintegrität nicht sichergestellt werden kann und alle auf dem Smartphone gespeicherten Daten gefährdet sind. Einige Funktionen werden in diesen Modi deaktiviert, weshalb bestimmte Anwendungen möglicherweise nicht funktionieren. Wenn du wieder in den Produktionsmodus wechseln möchtest, musst du den Bootloader des Geräts sperren. Dadurch wird das Gerät wieder auf die Werkseinstellungen zurückgesetzt und die Produktionseinstellungen werden wiederhergestellt. Nachdem das Gerät hochgefahren und Android gestartet wurde, deaktiviere in den Entwickleroptionen die OEM-Entsperrung. Wenn Android auf dem Gerät nicht gestartet werden kann oder das Gerät instabil ist, flashe das aktuelle Factory Image unter <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> oder verwende <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> und wähle „Gerätedaten löschen“, „Bootloader sperren“ und „Flashen aller Partitionen erzwingen“ aus."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Hinweis zu speicherseitenunabhängigem 16‑KB-Modus"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Du befindest dich im 16‑KB-Modus des speicherseitenunabhängigen Modus. Beachte, dass bei entsperrtem Bootloader die Softwareintegrität nicht sichergestellt werden kann und alle auf dem Smartphone gespeicherten Daten gefährdet sind. Einige Funktionen werden in diesen Modi deaktiviert, weshalb bestimmte Anwendungen möglicherweise nicht funktionieren. Wenn du wieder in den Produktionsmodus wechseln möchtest, musst du zurück zum 4‑KB-Modus wechseln und dann den Bootloader des Geräts sperren. Wenn du mehr erfahren möchtest, tippe hier."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Du befindest dich im 16‑KB-Modus des speicherseitenunabhängigen Modus. Beachte, dass bei entsperrtem Bootloader die Softwareintegrität nicht sichergestellt werden kann und alle auf dem Smartphone gespeicherten Daten gefährdet sind. Einige Funktionen werden in diesen Modi deaktiviert, weshalb bestimmte Anwendungen möglicherweise nicht funktionieren. Wenn du wieder in den Produktionsmodus wechseln möchtest, musst du zurück zum 4‑KB-Modus wechseln und dann den Bootloader des Geräts sperren. Dadurch wird das Gerät wieder auf die Werkseinstellungen zurückgesetzt und die Produktionseinstellungen werden wiederhergestellt. Nachdem das Gerät hochgefahren und Android gestartet wurde, deaktiviere in den Entwickleroptionen die OEM-Entsperrung. Wenn Android auf dem Gerät nicht gestartet werden kann oder das Gerät instabil läuft, flashe das aktuelle Factory Image unter <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> oder verwende <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> und wähle „Gerätedaten löschen“, „Bootloader sperren“ und „Flashen aller Partitionen erzwingen“ aus."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Speicherseitenunabhängiger 16‑KB-Modus"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Weitere Informationen"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Fehlerbericht-Handler"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Bildschirmfixierung verwenden"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Entwickleroptionen verwenden"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Druckdienst verwenden"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Mehrere Nutzer zulassen"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"zulassen, mehrere, Nutzer, Erlaubnis, viele"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"mehrere, Nutzer, Profile, Personen, Konten, wechseln, viele"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Debugging über WLAN verwenden"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index 23d07bd..d5db9b1 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Ώρα για ύπνο"</item>
+ <item msgid="4152450357280759894">"Οδήγηση"</item>
+ <item msgid="7096549258219399423">"Καθηλωτικό"</item>
+ <item msgid="2760716776980432977">"Διαχειριζόμενο"</item>
+ <item msgid="601734478369121764">"Αστέρι"</item>
+ <item msgid="6243809315432780521">"Ημερολόγιο"</item>
+ <item msgid="4913577903148415331">"Ώρα"</item>
+ <item msgid="3653377604690057780">"Θέατρο"</item>
+ <item msgid="3843711267408385410">"Λουλούδι"</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 e4d2923..4c14084 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Ρυθμίσεις συσκευής ακοής"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Συντόμευση, συμβατότητα με βοηθήματα ακοής"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Προεπιλογή"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Ο ακοολόγος σας δεν έχει προγραμματίσει προεπιλογές"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Δεν ήταν δυνατή η ενημέρωση της προεπιλογής"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Έξοδος ήχου"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Σχετικά με την έξοδο ήχου"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Μάθετε περισσότερα σχετικά με το Ξεκλείδωμα ρολογιού"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Προσθήκη ρολογιού"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Κατάργηση ρολογιού"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Ξεκλείδωμα με δακτυλικό αποτύπωμα και με το πρόσωπο"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Ξεκλείδωμα με πρόσωπο/δακτυλ. αποτύπωμα"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ξεκλείδωμα με πρόσωπο και δακτυλικό αποτύπωμα για την εργασία"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Απαιτείται ρύθμιση"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Προστέθηκε πρόσωπο και δακτυλικά αποτυπώματα"</string>
@@ -562,7 +563,7 @@
<string name="private_space_fingerprint_enroll_introduction_message" msgid="9092068873421435300">"Χρησιμοποιήστε το δακτυλικό σας αποτύπωμα για να ξεκλειδώσετε τον ιδιωτικό χώρο σας ή να επαληθεύετε την ταυτότητά σας, για παράδειγμα, όταν συνδέεστε σε εφαρμογές ή εγκρίνετε κάποια αγορά"</string>
<string name="private_space_fingerprint_enroll_introduction_footer_message" msgid="7125255484447984854">"Ο ιδιωτικός χώρος σας μπορεί να ξεκλειδωθεί άθελά σας, για παράδειγμα, εάν κάποιος τοποθετήσει το δάχτυλό σας στη συσκευή."</string>
<string name="private_space_fingerprint_enroll_finish_message" msgid="4754797926493316965">"Χρησιμοποιήστε το δακτυλικό σας αποτύπωμα για να ξεκλειδώσετε τον ιδιωτικό χώρο σας ή για να εγκρίνετε αγορές"</string>
- <string name="private_space_face_enroll_introduction_title" msgid="3717541082520006032">"Ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο για ιδιωτικό χώρο"</string>
+ <string name="private_space_face_enroll_introduction_title" msgid="3717541082520006032">"Ρύθμιση λειτ. Ξεκλείδωμα με το πρόσωπο για ιδιωτικό χώρο"</string>
<string name="private_space_face_enroll_introduction_message" msgid="250239418499081821">"Χρησιμοποιήστε το πρόσωπό σας για να ξεκλειδώσετε τον ιδιωτικό χώρο σας ή για να επαληθεύσετε την ταυτότητά σας, για παράδειγμα κατά τη σύνδεση σε εφαρμογές ή την έγκριση μιας αγοράς"</string>
<string name="private_space_face_enroll_introduction_info_looking" msgid="5694757845303924042">"Ο ιδιωτικός χώρος μπορεί να ξεκλειδωθεί εάν κοιτάξετε το τηλέφωνό σας, ακόμη και άθελά σας. Ο ιδιωτικός χώρος σας μπορεί επίσης να ξεκλειδωθεί από κάποιο άτομο που σας μοιάζει πολύ, όπως για παράδειγμα, τον δίδυμο αδελφό σας, ή σε περίπτωση που κάποιος πλησιάσει τη συσκευή στο πρόσωπό σας."</string>
<string name="private_space_face_enroll_introduction_info_less_secure" msgid="8460719783943533172">"Το ξεκλείδωμα του ιδιωτικού χώρου σας με τη χρήση του προσώπου σας ενδέχεται να είναι λιγότερο ασφαλές από τη χρήση ενός ισχυρού μοτίβου, ενός PIN ή ενός κωδικού πρόσβασης"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Επανεκκίνηση συσκευής;"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Η καταγραφή των λεπτομερειών NFC προορίζεται μόνο για σκοπούς ανάπτυξης. Επιπλέον δεδομένα NFC περιλαμβάνονται στις αναφορές σφαλμάτων, οι οποίες ενδέχεται να περιέχουν ιδιωτικές πληροφορίες. Επανεκκινήστε τη συσκευή σας για να αλλάξετε αυτήν τη ρύθμιση."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Επανεκκίνηση"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Μετάδοση"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"κατοπτρισμός"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Ενεργοποίηση ασύρματης οθόνης"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Προσαρμοστικό"</string>
<string name="brightness" msgid="6216871641021779698">"Επίπεδο φωτεινότητας"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Προσαρμοστική φωτεινότητα"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Σχετικά με την προσαρμοστική φωτεινότητα"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Η φωτεινότητα της οθόνης σας θα προσαρμοστεί αυτόματα στο περιβάλλον και τις δραστηριότητές σας. Μπορείτε να μετακινήσετε χειροκίνητα το ρυθμιστικό, για να ενημερωθεί η προσαρμοστική φωτεινότητα σχετικά με τις ρυθμίσεις σας."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Ενεργή"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Ανενεργή"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Συνέχεια ούτως ή άλλως"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Ακύρωση"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Ρυθμίσεις μεγέθυνσης"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Μετακίνηση με ένα δάχτυλο"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Μετακινήστε την περιοχή μεγιστοπ. σύροντας με ένα δάχτυλο."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Μετακινήστε την περιοχή μεγιστοπ. σύροντας με δύο δάχτυλα."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Μη διαθέσιμο όταν μεγιστοποιείται μόνο ένα τμήμα της οθόνης"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Πατήστε ένα κουμπί για εστίαση"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Μεγεθύνετε γρήγορα την οθόνη προκειμένου το περιεχόμενο να εμφανίζεται μεγαλύτερο"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Για μεγέθυνση:</b><br/> {0,number,integer}. Χρησιμοποιήστε τη συντόμευση για να ξεκινήσετε τη μεγιστοποίηση<br/> {1,number,integer}. Πατήστε την οθόνη<br/> {2,number,integer}. Σύρετε 2 δάχτυλα για να μετακινηθείτε στην οθόνη<br/> {3,number,integer}. Πλησιάστε δύο δάχτυλα μεταξύ τους για προσαρμογή της εστίασης<br/> {4,number,integer}. Χρησιμοποιήστε τη συντόμευση για να διακόψετε τη μεγιστοποίηση<br/><br/> <b>Για προσωρινή μεγέθυνση:</b><br/> {0,number,integer}. Βεβαιωθείτε ότι ο τύπος μεγέθυνσης έχει οριστεί σε πλήρη οθόνη<br/> {1,number,integer}. Χρησιμοποιήστε τη συντόμευση για να ξεκινήσετε τη μεγιστοποίηση<br/> {2,number,integer}. Αγγίξτε παρατεταμένα οπουδήποτε στην οθόνη<br/> {3,number,integer}. Σύρετε το δάχτυλό σας για να μετακινηθείτε στην οθόνη<br/> {4,number,integer}. Σηκώστε το δάχτυλό σας για διακοπή της μεγιστοποίησης"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Όταν η μεγέθυνση είναι ενεργοποιημένη, μπορείτε να μεγεθύνετε την οθόνη σας.\n\n"<b>"Για εστίαση "</b>", ανοίξτε τη μεγέθυνση και, στη συνέχεια, πατήστε οπουδήποτε στην οθόνη σας.\n"<ul><li>"Σύρετε 2 ή περισσότερα δάχτυλα για κύλιση"</li>\n<li>"Πλησιάστε 2 ή περισσότερα δάχτυλα για να προσαρμόσετε την εστίαση"</li></ul>\n\n<b>"Για προσωρινή εστίαση"</b>", ανοίξτε τη μεγέθυνση και, στη συνέχεια, αγγίξτε παρατεταμένα οπουδήποτε στην οθόνη.\n"<ul><li>"Σύρετε για να μετακινηθείτε στην οθόνη"</li>\n<li>"Ανασηκώστε το δάχτυλο για σμίκρυνση"</li></ul>\n\n"Δεν μπορείτε να κάνετε μεγέθυνση στο πληκτρολόγιο ή τη γραμμή πλοήγησης."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Σελίδα <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">"Συντόμευση κουμπιού προσβασιμότητας"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Λειτουργίες προτεραιότητας"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Λήψη ειδοποιήσεων μόνο από σημαντικά άτομα και εφαρμογές"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Επιλογή τύπου ενεργοποίησης"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Ώρα"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Π.χ. \"9.30-5.00 μ.μ.\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Ημερολόγιο"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Π.χ. \"Προσωπικό ημερολόγιο\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Περιορισμός διακοπών"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Διαγραφή προγραμμάτων"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Διαγραφή"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Προσθήκη ημερολογίου"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Χρήση του ημερολογίου σας"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Πρόγραμμα"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Ορίστε ένα πρόγραμμα"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Πρόγραμμα"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Σίγαση τηλεφώνου ορισμένες ώρες"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Να επιτρέπονται οι διακοπές που συνοδεύονται από ήχο"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Αποκλ. οπτικών αντιπ/σμών"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Να επιτρέπονται οπτικά σήματα"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Ειδοποιήσεις που μπορούν να προβληθούν"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Παραμείνετε συγκεντρωμένοι"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Επιπλέον ενέργειες"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Ρυθμίσεις προβολής"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Επιλογές προβολής"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ενεργοποίηση σκούρου θέματος"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Κάντε εναλλαγή του λειτουργικού συστήματος και των εφαρμογών για να προτιμάται φωτεινό κείμενο σε σκοτεινό φόντο, κάτι που μπορεί να είναι πιο ξεκούραστο για τα μάτια και να αποφέρει σημαντική εξοικονόμηση μπαταρίας σε ορισμένες συσκευές"</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="mode_notification_filter_title" msgid="443728483176031977">"Φιλτράρισμα διακοπών"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Δεν φιλτράρονται διακοπές"</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>
@@ -3591,7 +3652,7 @@
<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="notification_listener_disable_warning_summary" msgid="8373396293802088961">"Εάν απενεργοποιήσετε την πρόσβαση σε ειδοποιήσεις για το <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>, ενδεχομένως να απενεργοποιηθεί και η πρόσβασή του στη λειτουργία \"Μην ενοχλείτε\"."</string>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Εμφάνιση μη χρησιμοπ. κατηγοριών"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Απόκρυψη μη χρησιμοπ. κατηγοριών"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Όλες"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Μετονομασία"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Αλλαγή εικονιδίου"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Αλλαγή εικονιδίου"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Ειδοποίηση"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Κλείσιμο"</string>
<string name="device_feedback" msgid="5351614458411688608">"Αποστολή σχολίων για τη συσκευή"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Το διαμέρισμα δεδομένων αυτής της συσκευής πρέπει να μετατραπεί σε ext4 πριν από τη χρήση της επιλογής 16 KB για προγραμματιστές. Δεν είναι δυνατή η εγγύηση της ακεραιότητας του λογισμικού σε αυτή τη λειτουργία. Επίσης, τυχόν δεδομένα τα οποία αποθηκεύονται στο τηλέφωνο ενώ είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης ενδέχεται να κινδυνεύουν. Η ενεργοποίηση της επιλογής 16 KB απαιτεί μία ακόμα επανεκκίνηση μετά από αυτό. Όταν βρίσκεστε σε αυτή τη λειτουργία, μπορείτε να κάνετε εναλλαγή μεταξύ των λειτουργιών 4 KB και 16 KB με μία μόνο επανεκκίνηση. Ορισμένες δυνατότητες θα απενεργοποιηθούν σε αυτές τις λειτουργίες, επομένως ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν. Για να επιστρέψετε τη συσκευή στη λειτουργία παραγωγής, θα πρέπει να μεταβείτε ξανά στη λειτουργία 4 KB και κατόπιν να κλειδώσετε το πρόγραμμα φόρτωσης εκκίνησης, γεγονός που οδηγεί στην επαναφορά των εργοστασιακών ρυθμίσεων της συσκευής. Μετά την επιτυχημένη εκκίνηση της συσκευής στο Android, απενεργοποιήστε το OEM ξεκλείδωμα στις Επιλογές για προγραμματιστές. Θα γίνει εκκαθάριση της συσκευής και το σύστημα αρχείων θα αλλάξει σε ext4 κατόπιν επιβεβαίωσης. Αφού ολοκληρωθεί αυτή η διαδικασία, επιστρέψτε για να ενεργοποιήσετε ξανά τη λειτουργία 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Διαγραφή όλων των δεδομένων"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Απέτυχε η αλλαγή μορφής και η εκκαθάριση του διαμερίσματος δεδομένων σε ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Απαιτείται ξεκλείδωμα προγράμματος φόρτωσης εκκίνησης για τη λειτουργία 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Για να είναι δυνατή η χρήση της επιλογής 16 KB για προγραμματιστές, πρέπει να είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης σε αυτή τη συσκευή. Δεν είναι δυνατή η εγγύηση της ακεραιότητας του λογισμικού σε αυτή τη λειτουργία. Επίσης, τυχόν δεδομένα τα οποία αποθηκεύονται στο τηλέφωνο ενώ είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης ενδέχεται να κινδυνεύουν. Όλα τα δεδομένα και οι ρυθμίσεις χρήστη θα εκκαθαριστούν κατά την ενεργοποίηση της λειτουργίας 16 KB. Μετά το ξεκλείδωμα του προγράμματος φόρτωσης εκκίνησης, η ενεργοποίηση της επιλογής 16 KB απαιτεί δύο επανεκκινήσεις. Όταν βρίσκεστε σε αυτή τη λειτουργία, μπορείτε να κάνετε εναλλαγή μεταξύ των λειτουργιών 4 KB και 16 KB με μία μόνο επανεκκίνηση. Ορισμένες δυνατότητες θα απενεργοποιηθούν σε αυτές τις λειτουργίες, επομένως ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν. Για να επιστρέψετε τη συσκευή στη λειτουργία παραγωγής, θα πρέπει να μεταβείτε ξανά στη λειτουργία 4 KB και κατόπιν να εφαρμόσετε κλείδωμα OEM/προγράμματος φόρτωσης εκκίνησης (το οποίο οδηγεί στην επαναφορά των εργοστασιακών ρυθμίσεων) στη συσκευή. Ξεκλειδώστε το πρόγραμμα φόρτωσης εκκίνησης και δοκιμάστε ξανά. Μπορείτε να δείτε οδηγίες για την εκτέλεση αυτής της διαδικασίας στη διεύθυνση <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Χρήση της λειτουργίας 4 KB που δεν εξαρτάται από το μέγεθος σελίδας"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Βρίσκεστε στη λειτουργία 4 KB της λειτουργίας που δεν εξαρτάται από το μέγεθος σελίδας. Δεν είναι δυνατή η εγγύηση της ακεραιότητας του λογισμικού σε αυτή τη λειτουργία. Επίσης, τυχόν δεδομένα τα οποία αποθηκεύονται στο τηλέφωνο ενώ είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης ενδέχεται να κινδυνεύουν. Ορισμένες δυνατότητες θα απενεργοποιηθούν σε αυτές τις λειτουργίες, επομένως ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν. Για να εισέλθετε ξανά στη λειτουργία παραγωγής, πρέπει να κλειδώσετε το πρόγραμμα φόρτωσης εκκίνησης της συσκευής. Πατήστε για να διαβάσετε περισσότερα."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Βρίσκεστε στη λειτουργία 4 KB της λειτουργίας που δεν εξαρτάται από το μέγεθος σελίδας. Δεν είναι δυνατή η εγγύηση της ακεραιότητας του λογισμικού σε αυτή τη λειτουργία. Επίσης, τυχόν δεδομένα τα οποία αποθηκεύονται στο τηλέφωνο ενώ είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης ενδέχεται να κινδυνεύουν. Ορισμένες δυνατότητες θα απενεργοποιηθούν σε αυτές τις λειτουργίες, επομένως ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν. Για να εισέλθετε ξανά στη λειτουργία παραγωγής, πρέπει να κλειδώσετε το πρόγραμμα φόρτωσης εκκίνησης της συσκευής. Αυτή η ενέργεια θα είχε ως αποτέλεσμα την επαναφορά των εργοστασιακών ρυθμίσεων ξανά, καθώς και την επαναφορά της συσκευής στις ρυθμίσεις παραγωγής. Μετά την επιτυχημένη εκκίνηση της συσκευής στο Android, απενεργοποιήστε το OEM ξεκλείδωμα στις Επιλογές για προγραμματιστές. Αν η συσκευή δεν ολοκληρώσει την εκκίνηση στο Android με επιτυχία ή είναι ασταθής, εγκαταστήστε εκ νέου τις πιο πρόσφατες εργοστασιακές εικόνες στη συσκευή από τη διεύθυνση <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ή χρησιμοποιήστε <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> και επιλέξτε Εκκαθάριση συσκευής, Κλείδωμα προγράμματος φόρτωσης εκκίνησης και Αναγκαστικό flash όλων των διαμερισμάτων."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Χρήση της λειτουργίας 16 KB που δεν εξαρτάται από το μέγεθος σελίδας"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Βρίσκεστε στη λειτουργία 16 KB της λειτουργίας που δεν εξαρτάται από το μέγεθος σελίδας. Δεν είναι δυνατή η εγγύηση της ακεραιότητας του λογισμικού σε αυτή τη λειτουργία. Επίσης, τυχόν δεδομένα τα οποία αποθηκεύονται στο τηλέφωνο ενώ είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης ενδέχεται να κινδυνεύουν. Ορισμένες δυνατότητες θα απενεργοποιηθούν σε αυτές τις λειτουργίες, επομένως ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν. Για να εισέλθετε ξανά στη λειτουργία παραγωγής, πρέπει να μεταβείτε ξανά στη λειτουργία 4 KB και κατόπιν να κλειδώσετε το πρόγραμμα φόρτωσης εκκίνησης της συσκευής. Πατήστε για να διαβάσετε περισσότερα."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Βρίσκεστε στη λειτουργία 16 KB της λειτουργίας που δεν εξαρτάται από το μέγεθος σελίδας. Δεν είναι δυνατή η εγγύηση της ακεραιότητας του λογισμικού σε αυτή τη λειτουργία. Επίσης, τυχόν δεδομένα τα οποία αποθηκεύονται στο τηλέφωνο ενώ είναι ξεκλειδωμένο το πρόγραμμα φόρτωσης εκκίνησης ενδέχεται να κινδυνεύουν. Ορισμένες δυνατότητες θα απενεργοποιηθούν σε αυτές τις λειτουργίες, επομένως ορισμένες εφαρμογές ενδέχεται να μην λειτουργούν. Για να εισέλθετε ξανά στη λειτουργία παραγωγής, πρέπει να μεταβείτε ξανά στη λειτουργία 4 KB και κατόπιν να κλειδώσετε το πρόγραμμα φόρτωσης εκκίνησης της συσκευής. Αυτή η ενέργεια θα είχε ως αποτέλεσμα την επαναφορά των εργοστασιακών ρυθμίσεων ξανά, καθώς και την επαναφορά της συσκευής στις ρυθμίσεις παραγωγής. Μετά την επιτυχημένη εκκίνηση της συσκευής στο Android, απενεργοποιήστε το OEM ξεκλείδωμα στις Επιλογές για προγραμματιστές. Αν η συσκευή δεν ολοκληρώσει την εκκίνηση στο Android με επιτυχία ή είναι ασταθής, εγκαταστήστε εκ νέου τις πιο πρόσφατες εργοστασιακές εικόνες στη συσκευή από τη διεύθυνση <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ή χρησιμοποιήστε <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> και επιλέξτε Εκκαθάριση συσκευής, Κλείδωμα προγράμματος φόρτωσης εκκίνησης και Αναγκαστικό flash όλων των διαμερισμάτων."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Λειτουργία 16 KB που δεν εξαρτάται από το μέγεθος σελίδας"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Διαβάστε περισσότερα"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Χειρισμός Αναφοράς σφάλματος"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Να επιτρέπονται πολλαπλοί χρήστες"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-en-rAU/arrays.xml b/res/values-en-rAU/arrays.xml
index ab87841..53f9b0a 100644
--- a/res/values-en-rAU/arrays.xml
+++ b/res/values-en-rAU/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Bedtime"</item>
+ <item msgid="4152450357280759894">"Driving"</item>
+ <item msgid="7096549258219399423">"Immersive"</item>
+ <item msgid="2760716776980432977">"Managed"</item>
+ <item msgid="601734478369121764">"Star"</item>
+ <item msgid="6243809315432780521">"Calendar"</item>
+ <item msgid="4913577903148415331">"Time"</item>
+ <item msgid="3653377604690057780">"Theatre"</item>
+ <item msgid="3843711267408385410">"Flower"</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 87ce261..6ea608b 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hearing device settings"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shortcut, hearing aid compatibility"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"There are no presets programmed by your audiologist"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Couldn\'t update preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio output"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"About audio output"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Learn more about Watch Unlock"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Add watch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remove watch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingerprint and Face Unlock"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Face and Fingerprint Unlock"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Face and Fingerprint Unlock for work"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Setup needed"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Face and fingerprints added"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Install apps"</b>\n"Install apps that you want to keep private in your space"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Bear in mind"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps stop when you lock your space"</b>\n"When you lock your space, apps in your space are stopped and you won\'t receive notifications from them"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in Permission manager, privacy dashboard and other settings when your private space is locked.\n\nYour private space can\'t be moved to a new device. You\'ll need to set up another private space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs harmful apps on your device may be able to access your private space."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in Permission manager, privacy dashboard and other settings when private space is locked.\n\nYour private space can\'t be restored to a new device. You\'ll need to set up another space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs malicious apps on your device may be able to access your private space."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Learn more about private space"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"This will take a few moments"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Setting up private space…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Restart device?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detailed NFC logging is intended for development purposes only. Additional NFC data is included in bug reports, which may contain private information. Restart your device to change this setting."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restart"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirror"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Enable wireless display"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Brightness level"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptive brightness"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"About adaptive brightness"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"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>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"On"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Off"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"User selected: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Speech"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Pointer speed"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Game Controller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirect vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibration to game controller when connected"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continue anyway"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancel"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Magnification settings"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"One-finger panning"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Move the magnification area by dragging one finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Move the magnification area by dragging two fingers."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Unavailable while only magnifying part of the screen"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tap a button to zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Quickly zoom in on the screen to make content larger"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag two fingers to move around screen<br/> {3,number,integer}. Pinch with two fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> <b>To zoom in temporarily:</b><br/> {0,number,integer}. Make sure that your magnification type is set to full screen<br/> {1,number,integer}. Use shortcut to start magnification<br/> {2,number,integer}. Touch and hold anywhere on the screen<br/> {3,number,integer}. Drag finger to move around screen<br/> {4,number,integer}. Lift finger to stop magnification"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"When magnification is turned on, you can zoom in on your screen.\n\n"<b>"To zoom"</b>", start magnification, then tap anywhere on the screen.\n"<ul><li>"Drag 2 or more fingers to scroll"</li>\n<li>"Pinch 2 or more fingers to adjust zoom"</li></ul>\n\n<b>"To zoom temporarily"</b>", start magnification, then touch and hold anywhere on the screen.\n"<ul><li>"Drag to move around the screen"</li>\n<li>"Lift finger to zoom out"</li></ul>\n\n"You can’t zoom in on the keyboard or navigation bar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Accessibility button shortcut"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{None}=1{1 schedule set}other{# schedules set}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Do Not Disturb"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Priority modes"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Only get notified by important people and apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Select activation type"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Time"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"e.g. \'9.30 – 5.00 p.m.\'"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"e.g. \'Personal calendar\'"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limit interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Turn on Do Not Disturb"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarms and media sounds can interrupt"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Schedules"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Delete schedules"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Delete"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Schedules"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schedule"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Add a calendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Use your calendar"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Schedule"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Set a schedule"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schedule"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g>hr, <xliff:g id="MINUTES">%2$d</xliff:g>min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schedule"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silence phone at certain times"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Allow interruptions that make sound"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Block visual disturbances"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Allow visual signals"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifications that can reach you"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Stay focused"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Additional actions"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Display settings"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Display options"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"Enable Dark theme"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Switch the OS and apps to prefer light text on a dark background, which may be easier on the eyes and confers significant battery savings on some devices"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No display changes}=1{{effect_1}}=2{{effect_1} and {effect_2}}=3{{effect_1}, {effect_2} and {effect_3}}other{{effect_1}, {effect_2} and # more}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No interruptions are filtered"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Display options for filtered notifications"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"When Do Not Disturb is on"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"No sound from notifications"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Other"</string>
<string name="no_channels" msgid="4716199078612071915">"This app has not posted any notifications"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Show unused categories"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Additional settings in the app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Show unused categories"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Hide unused categories"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Selected apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"None"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"All"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Allow apps to override"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps that can interrupt"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Select more apps"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Change to alarms only for one hour until {time}}other{Change to alarms only for # hours until {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Change to alarms only until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Change to always interrupt"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Rename"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Change icon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Change icon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Warning"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Close"</string>
<string name="device_feedback" msgid="5351614458411688608">"Send feedback about this device"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"This device\'s data partition needs to be converted to ext4 before using the 16 KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Activating the 16 KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to Production mode, you would need to switch back to 4 KB mode and then lock the bootloader, which factory resets the device. Once the device successfully boots into Android, disable OEM unlocking in Developer options. The device will be wiped and the filesystem will be changed to ext4 after confirmation. Once this completes, please come back to enable 16 KB again."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Erase all data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Failed to reformat and wipe the data partition to ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader unlock required for 16 KB mode"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"This device needs to have the bootloader unlocked before using the 16 KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. All user data and settings will be wiped when activating 16 KB mode. Once the bootloader is unlocked, activating the 16 KB option will require two reboots. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to Production mode, you would need to switch back to 4 KB mode and then OEM/bootloader lock (which factory resets) the device. Please unlock the bootloader and try again. You can see instructions for how to do this at <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Using 4 KB page-agnostic mode"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must lock the bootloader of the device. Tap to read more."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must lock the bootloader of the device. This would factory reset the device again and restore it to production settings. Once the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe device\', \'Lock bootloader\' and \'Force flash all partitions\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Using 16 KB page-agnostic mode"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must switch back to 4 KB mode and then lock the bootloader of the device. Tap to read more."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must switch back to 4 KB mode and then lock the bootloader of the device. This would factory reset the device again and restore it to production settings. Once the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe device\', \'Lock bootloader\' and \'Force flash all partitions\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB page-agnostic mode"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Read more"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Bug report handler"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Use app pinning"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Use Developer options"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Use print service"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Allow multiple users"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"allow, multiple, user, permit, many"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiple, users, profiles, people, accounts, switch, many"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Use wireless debugging"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-en-rCA/arrays.xml b/res/values-en-rCA/arrays.xml
index 61ce5d2..3dee62f 100644
--- a/res/values-en-rCA/arrays.xml
+++ b/res/values-en-rCA/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Bedtime"</item>
+ <item msgid="4152450357280759894">"Driving"</item>
+ <item msgid="7096549258219399423">"Immersive"</item>
+ <item msgid="2760716776980432977">"Managed"</item>
+ <item msgid="601734478369121764">"Star"</item>
+ <item msgid="6243809315432780521">"Calendar"</item>
+ <item msgid="4913577903148415331">"Time"</item>
+ <item msgid="3653377604690057780">"Theater"</item>
+ <item msgid="3843711267408385410">"Flower"</item>
+ </string-array>
+ <string-array name="display_over_apps_permission_change_exempt">
+ </string-array>
</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 960344f..4e5f1d4 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -65,8 +65,7 @@
<string name="bluetooth_disconnect_title" msgid="4581951246357823044">"Disconnect device?"</string>
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Pair new device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
- <!-- no translation found for bluetooth_screen_auto_on_title (2203993262483477532) -->
- <skip />
+ <string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatically turn on tomorrow"</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>
@@ -77,6 +76,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hearing device settings"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shortcut, hearing aid compatibility"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"There are no presets programmed by your audiologist"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Couldn’t update preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio output"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"About audio output"</string>
@@ -437,7 +437,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Learn more about Watch Unlock"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Add watch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remove watch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingerprint & Face Unlock"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Face and Fingerprint Unlock"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Face and Fingerprint Unlock for work"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Setup needed"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Face and fingerprints added"</string>
@@ -614,10 +614,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Install apps"</b>\n"Install apps that you want to keep private in your space"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Keep in mind"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps stop when you lock your space"</b>\n"When you lock your space, apps in your space are stopped and you won’t receive notifications from them"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in permission manager, privacy dashboard, and other settings when your private space is locked.\n\nYour private space can\'t be moved to a new device. You\'ll need to set up another private space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs harmful apps on your device may be able to access your private space."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in permission manager, privacy dashboard, and other settings when private space is locked.\n\nYour private space can\'t be restored to a new device. You’ll need to set up another space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs malicious apps on your device may be able to access your private space."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Learn more about private space"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"This will take a few moments"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Setting up private space…"</string>
@@ -851,6 +849,21 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Restart Device?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detail NFC logging is intended for development purposes only. Additional NFC data is included in bug reports, which may contain private information. Restart your device to change this setting."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restart"</string>
+ <string name="keywords_external_display" msgid="4181375057920134909">"mirror, external display, connected display, usb display, resolution, rotation"</string>
+ <string name="external_display_on" msgid="2560104443500154333">"On"</string>
+ <string name="external_display_off" msgid="5634413756025351374">"Off"</string>
+ <string name="external_display_settings_title" msgid="6256884595821605779">"External Display"</string>
+ <string name="external_display_use_title" msgid="8198257340836261386">"Use external display"</string>
+ <string name="external_display_resolution_settings_title" msgid="2446784716488289268">"Display resolution"</string>
+ <string name="external_display_not_found" msgid="1912355133386555798">"External display is disconnected"</string>
+ <string name="external_display_rotation" msgid="7160062306817490204">"Rotation"</string>
+ <string name="external_display_standard_rotation" msgid="545969032327487219">"Standard"</string>
+ <string name="external_display_rotation_90" msgid="7371530414227542947">"90°"</string>
+ <string name="external_display_rotation_180" msgid="6469137724447819841">"180°"</string>
+ <string name="external_display_rotation_270" msgid="7819322302457740514">"270°"</string>
+ <string name="external_display_change_resolution_footer_title" msgid="9024291681663573443">"Changing rotation or resolution may stop any apps that are currently running"</string>
+ <string name="external_display_not_found_footer_title" msgid="8882902921634316363">"Your device must be connected to an external display to mirror your screen"</string>
+ <string name="external_display_more_options_title" msgid="1222751990705118774">"More options"</string>
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirror"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Enable wireless display"</string>
@@ -1192,6 +1205,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Brightness level"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptive brightness"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"About adaptive brightness"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"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>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"On"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Off"</string>
@@ -1972,6 +1986,9 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"User selected: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Speech"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Pointer speed"</string>
+ <string name="pointer_scale" msgid="4941564570571663964">"Pointer scale"</string>
+ <string name="pointer_scale_decrease_content_description" msgid="4479646756230008068">"Decrease pointer scale"</string>
+ <string name="pointer_scale_increase_content_description" msgid="1049632123702664450">"Increase pointer scale"</string>
<string name="game_controller_settings_category" msgid="8557472715034961918">"Game Controller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirect vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibration to game controller when connected"</string>
@@ -2094,7 +2111,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continue anyway"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancel"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Magnification settings"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"One-finger panning"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Move magnifier with 1 finger"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Drag 1 finger to move around the screen"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Move the magnification area by dragging one finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Move the magnification area by dragging two fingers."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Unavailable while only magnifying part of the screen"</string>
@@ -2118,6 +2136,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tap a button to zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Quickly zoom in on the screen to make content larger"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag two fingers to move around screen<br/> {3,number,integer}. Pinch with two fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> <b>To zoom in temporarily:</b><br/> {0,number,integer}. Make sure your magnification type is set to full screen<br/> {1,number,integer}. Use shortcut to start magnification<br/> {2,number,integer}. Touch and hold anywhere on the screen<br/> {3,number,integer}. Drag finger to move around screen<br/> {4,number,integer}. Lift finger to stop magnification"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag 2 fingers to move around the screen<br/> {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> You can also zoom in temporarily and more."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag 1 or 2 fingers to move around the screen<br/> {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> You can also zoom in temporarily and more."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"When magnification is turned on, you can zoom in on your screen.\n\n"<b>"To zoom"</b>", start magnification, then tap the screen anywhere.\n"<ul><li>"Drag two or more fingers to scroll"</li>\n<li>"Pinch two or more fingers to adjust the zoom"</li></ul>\n\n<b>"To zoom temporarily"</b>", start magnification, then touch and hold the screen anywhere.\n"<ul><li>"Drag to move around the screen"</li>\n<li>"Lift finger to zoom out"</li></ul>\n\n"You can\'t zoom in on the keyboard or navigation bar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Accessibility button shortcut"</string>
@@ -3323,13 +3343,24 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{None}=1{1 schedule set}other{# schedules set}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Do Not Disturb"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Priority Modes"</string>
+ <string name="zen_modes_add_mode" msgid="4806287336036228772">"Add a mode"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Only get notified by important people and apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Select activation type"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Time"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Ex. \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Ex. \"Personal calendar\""</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>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limit interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Turn on Do Not Disturb"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarms and media sounds can interrupt"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Schedules"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Delete schedules"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Delete"</string>
+ <string name="zen_mode_menu_delete_mode" msgid="3190031534736428573">"Delete mode"</string>
+ <string name="zen_mode_delete_mode_confirmation" msgid="7594340592051947392">"Delete \"<xliff:g id="MODE">%1$s</xliff:g>\" mode?"</string>
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Schedules"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schedule"</string>
@@ -3340,6 +3371,8 @@
<string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Set a schedule"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schedule"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> hr, <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
+ <skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schedule"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silence phone at certain times"</string>
<string name="zen_mode_automation_suggestion_summary" msgid="1946750790084170826">"Set Do Not Disturb rules"</string>
@@ -3349,7 +3382,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Allow interruptions that make sound"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Block visual disturbances"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Allow visual signals"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifications that can reach you"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Stay focused"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Additional actions"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Display settings"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Display options"</string>
@@ -3366,6 +3399,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"enable dark theme"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Switch the OS and apps to prefer light text on a dark background, which may be easier on the eyes and confers significant battery savings on some devices"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No display changes}=1{{effect_1}}=2{{effect_1} and {effect_2}}=3{{effect_1}, {effect_2}, and {effect_3}}other{{effect_1}, {effect_2}, and # more}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No interruptions are filtered"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Display options for filtered notifications"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"When Do Not Disturb is on"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"No sound from notifications"</string>
@@ -3659,6 +3694,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Other"</string>
<string name="no_channels" msgid="4716199078612071915">"This app has not posted any notifications"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Show unused categories"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Additional settings in the app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Show unused categories"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Hide unused categories"</string>
@@ -3768,6 +3804,7 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Selected apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"None"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"All"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{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}}"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Allow apps to override"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps that can interrupt"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Select more apps"</string>
@@ -4861,14 +4898,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"This device’s data partition needs to be converted to ext4 before using the 16KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Activating the 16KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4KB and 16KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to production mode, you would need to switch back to 4KB mode and then lock the bootloader, which factory resets the device. After the device successfully boots into Android, disable OEM unlocking in Developer options. The device will be wiped and the filesystem will be changed to ext4 after confirmation. After this completes, please come back to enable 16KB again."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Erase all data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Failed to reformat and wipe the data partition to ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader Unlock Required for 16KB Mode"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"This device needs to have the bootloader unlocked before using the 16KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. All user data and settings will be wiped when activating 16KB mode. Once the bootloader is unlocked, activating the 16KB option will require two reboots. Once you are in this mode, you can switch back and forth between 4KB and 16KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to production mode, you would need to switch back to 4KB mode and then OEM/bootloader lock (which factory resets) the device. Please unlock the bootloader and try again. You can see instructions for how to do this at <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Using 4KB page-agnostic mode"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"You are in the 4KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must lock the bootloader of the device. Tap to read more."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"You are in the 4KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must lock the bootloader of the device. This would factory reset the device again and restore it to production settings. After the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe Device\', \'Lock Bootloader\' and \'Force Flash all partitions\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Using 16KB page-agnostic mode"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"You are in the 16KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must, switch back to 4K mode and then lock the bootloader of the device. Tap to read more."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"You are in the 16KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must, switch back to 4K mode and then lock the bootloader of the device. This would factory reset the device again and restore it to production settings. After the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe Device\', \'Lock Bootloader\' and \'Force Flash all partitions\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB Page-agnostic Mode"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Read more"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Bug report handler"</string>
@@ -5000,7 +5040,7 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Use app pinning"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Use developer options"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Use print service"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Allow multiple users"</string>
+ <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"Allow user switch"</string>
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"allow, multiple, user, permit, many"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiple, users, profiles, people, accounts, switch, many"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Use wireless debugging"</string>
@@ -5344,4 +5384,5 @@
<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="homepage_search" msgid="6759334912284663559">"Search Settings"</string>
</resources>
diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml
index ab87841..53f9b0a 100644
--- a/res/values-en-rGB/arrays.xml
+++ b/res/values-en-rGB/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Bedtime"</item>
+ <item msgid="4152450357280759894">"Driving"</item>
+ <item msgid="7096549258219399423">"Immersive"</item>
+ <item msgid="2760716776980432977">"Managed"</item>
+ <item msgid="601734478369121764">"Star"</item>
+ <item msgid="6243809315432780521">"Calendar"</item>
+ <item msgid="4913577903148415331">"Time"</item>
+ <item msgid="3653377604690057780">"Theatre"</item>
+ <item msgid="3843711267408385410">"Flower"</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 482e870..7e320a4 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hearing device settings"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shortcut, hearing aid compatibility"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"There are no presets programmed by your audiologist"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Couldn\'t update preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio output"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"About audio output"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Learn more about Watch Unlock"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Add watch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remove watch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingerprint and Face Unlock"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Face and Fingerprint Unlock"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Face and Fingerprint Unlock for work"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Setup needed"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Face and fingerprints added"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Install apps"</b>\n"Install apps that you want to keep private in your space"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Bear in mind"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps stop when you lock your space"</b>\n"When you lock your space, apps in your space are stopped and you won\'t receive notifications from them"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in Permission manager, privacy dashboard and other settings when your private space is locked.\n\nYour private space can\'t be moved to a new device. You\'ll need to set up another private space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs harmful apps on your device may be able to access your private space."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in Permission manager, privacy dashboard and other settings when private space is locked.\n\nYour private space can\'t be restored to a new device. You\'ll need to set up another space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs malicious apps on your device may be able to access your private space."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Learn more about private space"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"This will take a few moments"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Setting up private space…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Restart device?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detailed NFC logging is intended for development purposes only. Additional NFC data is included in bug reports, which may contain private information. Restart your device to change this setting."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restart"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirror"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Enable wireless display"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Brightness level"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptive brightness"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"About adaptive brightness"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"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>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"On"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Off"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"User selected: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Speech"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Pointer speed"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Game Controller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirect vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibration to game controller when connected"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continue anyway"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancel"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Magnification settings"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"One-finger panning"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Move the magnification area by dragging one finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Move the magnification area by dragging two fingers."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Unavailable while only magnifying part of the screen"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tap a button to zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Quickly zoom in on the screen to make content larger"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag two fingers to move around screen<br/> {3,number,integer}. Pinch with two fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> <b>To zoom in temporarily:</b><br/> {0,number,integer}. Make sure that your magnification type is set to full screen<br/> {1,number,integer}. Use shortcut to start magnification<br/> {2,number,integer}. Touch and hold anywhere on the screen<br/> {3,number,integer}. Drag finger to move around screen<br/> {4,number,integer}. Lift finger to stop magnification"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"When magnification is turned on, you can zoom in on your screen.\n\n"<b>"To zoom"</b>", start magnification, then tap anywhere on the screen.\n"<ul><li>"Drag 2 or more fingers to scroll"</li>\n<li>"Pinch 2 or more fingers to adjust zoom"</li></ul>\n\n<b>"To zoom temporarily"</b>", start magnification, then touch and hold anywhere on the screen.\n"<ul><li>"Drag to move around the screen"</li>\n<li>"Lift finger to zoom out"</li></ul>\n\n"You can’t zoom in on the keyboard or navigation bar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Accessibility button shortcut"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{None}=1{1 schedule set}other{# schedules set}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Do Not Disturb"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Priority modes"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Only get notified by important people and apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Select activation type"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Time"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"e.g. \'9.30 – 5.00 p.m.\'"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"e.g. \'Personal calendar\'"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limit interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Turn on Do Not Disturb"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarms and media sounds can interrupt"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Schedules"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Delete schedules"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Delete"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Schedules"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schedule"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Add a calendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Use your calendar"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Schedule"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Set a schedule"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schedule"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g>hr, <xliff:g id="MINUTES">%2$d</xliff:g>min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schedule"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silence phone at certain times"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Allow interruptions that make sound"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Block visual disturbances"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Allow visual signals"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifications that can reach you"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Stay focused"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Additional actions"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Display settings"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Display options"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"Enable Dark theme"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Switch the OS and apps to prefer light text on a dark background, which may be easier on the eyes and confers significant battery savings on some devices"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No display changes}=1{{effect_1}}=2{{effect_1} and {effect_2}}=3{{effect_1}, {effect_2} and {effect_3}}other{{effect_1}, {effect_2} and # more}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No interruptions are filtered"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Display options for filtered notifications"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"When Do Not Disturb is on"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"No sound from notifications"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Other"</string>
<string name="no_channels" msgid="4716199078612071915">"This app has not posted any notifications"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Show unused categories"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Additional settings in the app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Show unused categories"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Hide unused categories"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Selected apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"None"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"All"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Allow apps to override"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps that can interrupt"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Select more apps"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Change to alarms only for one hour until {time}}other{Change to alarms only for # hours until {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Change to alarms only until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Change to always interrupt"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Rename"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Change icon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Change icon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Warning"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Close"</string>
<string name="device_feedback" msgid="5351614458411688608">"Send feedback about this device"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"This device\'s data partition needs to be converted to ext4 before using the 16 KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Activating the 16 KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to Production mode, you would need to switch back to 4 KB mode and then lock the bootloader, which factory resets the device. Once the device successfully boots into Android, disable OEM unlocking in Developer options. The device will be wiped and the filesystem will be changed to ext4 after confirmation. Once this completes, please come back to enable 16 KB again."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Erase all data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Failed to reformat and wipe the data partition to ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader unlock required for 16 KB mode"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"This device needs to have the bootloader unlocked before using the 16 KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. All user data and settings will be wiped when activating 16 KB mode. Once the bootloader is unlocked, activating the 16 KB option will require two reboots. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to Production mode, you would need to switch back to 4 KB mode and then OEM/bootloader lock (which factory resets) the device. Please unlock the bootloader and try again. You can see instructions for how to do this at <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Using 4 KB page-agnostic mode"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must lock the bootloader of the device. Tap to read more."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must lock the bootloader of the device. This would factory reset the device again and restore it to production settings. Once the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe device\', \'Lock bootloader\' and \'Force flash all partitions\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Using 16 KB page-agnostic mode"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must switch back to 4 KB mode and then lock the bootloader of the device. Tap to read more."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must switch back to 4 KB mode and then lock the bootloader of the device. This would factory reset the device again and restore it to production settings. Once the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe device\', \'Lock bootloader\' and \'Force flash all partitions\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB page-agnostic mode"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Read more"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Bug report handler"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Use app pinning"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Use Developer options"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Use print service"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Allow multiple users"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"allow, multiple, user, permit, many"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiple, users, profiles, people, accounts, switch, many"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Use wireless debugging"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-en-rIN/arrays.xml b/res/values-en-rIN/arrays.xml
index ab87841..53f9b0a 100644
--- a/res/values-en-rIN/arrays.xml
+++ b/res/values-en-rIN/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Bedtime"</item>
+ <item msgid="4152450357280759894">"Driving"</item>
+ <item msgid="7096549258219399423">"Immersive"</item>
+ <item msgid="2760716776980432977">"Managed"</item>
+ <item msgid="601734478369121764">"Star"</item>
+ <item msgid="6243809315432780521">"Calendar"</item>
+ <item msgid="4913577903148415331">"Time"</item>
+ <item msgid="3653377604690057780">"Theatre"</item>
+ <item msgid="3843711267408385410">"Flower"</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 c45d3e7..784f0ef 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hearing device settings"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shortcut, hearing aid compatibility"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"There are no presets programmed by your audiologist"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Couldn\'t update preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio output"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"About audio output"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Learn more about Watch Unlock"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Add watch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remove watch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingerprint and Face Unlock"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Face and Fingerprint Unlock"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Face and Fingerprint Unlock for work"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Setup needed"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Face and fingerprints added"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Install apps"</b>\n"Install apps that you want to keep private in your space"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Bear in mind"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps stop when you lock your space"</b>\n"When you lock your space, apps in your space are stopped and you won\'t receive notifications from them"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in Permission manager, privacy dashboard and other settings when your private space is locked.\n\nYour private space can\'t be moved to a new device. You\'ll need to set up another private space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs harmful apps on your device may be able to access your private space."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in Permission manager, privacy dashboard and other settings when private space is locked.\n\nYour private space can\'t be restored to a new device. You\'ll need to set up another space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs malicious apps on your device may be able to access your private space."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Learn more about private space"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"This will take a few moments"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Setting up private space…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Restart device?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detailed NFC logging is intended for development purposes only. Additional NFC data is included in bug reports, which may contain private information. Restart your device to change this setting."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restart"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirror"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Enable wireless display"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Brightness level"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptive brightness"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"About adaptive brightness"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"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>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"On"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Off"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"User selected: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Speech"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Pointer speed"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Game Controller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirect vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibration to game controller when connected"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continue anyway"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancel"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Magnification settings"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"One-finger panning"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Move the magnification area by dragging one finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Move the magnification area by dragging two fingers."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Unavailable while only magnifying part of the screen"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tap a button to zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Quickly zoom in on the screen to make content larger"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag two fingers to move around screen<br/> {3,number,integer}. Pinch with two fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> <b>To zoom in temporarily:</b><br/> {0,number,integer}. Make sure that your magnification type is set to full screen<br/> {1,number,integer}. Use shortcut to start magnification<br/> {2,number,integer}. Touch and hold anywhere on the screen<br/> {3,number,integer}. Drag finger to move around screen<br/> {4,number,integer}. Lift finger to stop magnification"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"When magnification is turned on, you can zoom in on your screen.\n\n"<b>"To zoom"</b>", start magnification, then tap anywhere on the screen.\n"<ul><li>"Drag 2 or more fingers to scroll"</li>\n<li>"Pinch 2 or more fingers to adjust zoom"</li></ul>\n\n<b>"To zoom temporarily"</b>", start magnification, then touch and hold anywhere on the screen.\n"<ul><li>"Drag to move around the screen"</li>\n<li>"Lift finger to zoom out"</li></ul>\n\n"You can’t zoom in on the keyboard or navigation bar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Accessibility button shortcut"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{None}=1{1 schedule set}other{# schedules set}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Do Not Disturb"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Priority modes"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Only get notified by important people and apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Select activation type"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Time"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"e.g. \'9.30 – 5.00 p.m.\'"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"e.g. \'Personal calendar\'"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limit interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Turn on Do Not Disturb"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarms and media sounds can interrupt"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Schedules"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Delete schedules"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Delete"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Schedules"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schedule"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Add a calendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Use your calendar"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Schedule"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Set a schedule"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schedule"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g>hr, <xliff:g id="MINUTES">%2$d</xliff:g>min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schedule"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silence phone at certain times"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Allow interruptions that make sound"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Block visual disturbances"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Allow visual signals"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifications that can reach you"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Stay focused"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Additional actions"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Display settings"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Display options"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"Enable Dark theme"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Switch the OS and apps to prefer light text on a dark background, which may be easier on the eyes and confers significant battery savings on some devices"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No display changes}=1{{effect_1}}=2{{effect_1} and {effect_2}}=3{{effect_1}, {effect_2} and {effect_3}}other{{effect_1}, {effect_2} and # more}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No interruptions are filtered"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Display options for filtered notifications"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"When Do Not Disturb is on"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"No sound from notifications"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Other"</string>
<string name="no_channels" msgid="4716199078612071915">"This app has not posted any notifications"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Show unused categories"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Additional settings in the app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Show unused categories"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Hide unused categories"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Selected apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"None"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"All"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Allow apps to override"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps that can interrupt"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Select more apps"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Change to alarms only for one hour until {time}}other{Change to alarms only for # hours until {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Change to alarms only until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Change to always interrupt"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Rename"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Change icon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Change icon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Warning"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Close"</string>
<string name="device_feedback" msgid="5351614458411688608">"Send feedback about this device"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"This device\'s data partition needs to be converted to ext4 before using the 16 KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Activating the 16 KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to Production mode, you would need to switch back to 4 KB mode and then lock the bootloader, which factory resets the device. Once the device successfully boots into Android, disable OEM unlocking in Developer options. The device will be wiped and the filesystem will be changed to ext4 after confirmation. Once this completes, please come back to enable 16 KB again."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Erase all data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Failed to reformat and wipe the data partition to ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader unlock required for 16 KB mode"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"This device needs to have the bootloader unlocked before using the 16 KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. All user data and settings will be wiped when activating 16 KB mode. Once the bootloader is unlocked, activating the 16 KB option will require two reboots. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to Production mode, you would need to switch back to 4 KB mode and then OEM/bootloader lock (which factory resets) the device. Please unlock the bootloader and try again. You can see instructions for how to do this at <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Using 4 KB page-agnostic mode"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must lock the bootloader of the device. Tap to read more."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must lock the bootloader of the device. This would factory reset the device again and restore it to production settings. Once the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe device\', \'Lock bootloader\' and \'Force flash all partitions\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Using 16 KB page-agnostic mode"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must switch back to 4 KB mode and then lock the bootloader of the device. Tap to read more."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the Production mode, you must switch back to 4 KB mode and then lock the bootloader of the device. This would factory reset the device again and restore it to production settings. Once the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe device\', \'Lock bootloader\' and \'Force flash all partitions\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB page-agnostic mode"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Read more"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Bug report handler"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Use app pinning"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Use Developer options"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Use print service"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Allow multiple users"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"allow, multiple, user, permit, many"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiple, users, profiles, people, accounts, switch, many"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Use wireless debugging"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-en-rXC/arrays.xml b/res/values-en-rXC/arrays.xml
index 2fed1f9..2fbc34c 100644
--- a/res/values-en-rXC/arrays.xml
+++ b/res/values-en-rXC/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Bedtime"</item>
+ <item msgid="4152450357280759894">"Driving"</item>
+ <item msgid="7096549258219399423">"Immersive"</item>
+ <item msgid="2760716776980432977">"Managed"</item>
+ <item msgid="601734478369121764">"Star"</item>
+ <item msgid="6243809315432780521">"Calendar"</item>
+ <item msgid="4913577903148415331">"Time"</item>
+ <item msgid="3653377604690057780">"Theater"</item>
+ <item msgid="3843711267408385410">"Flower"</item>
+ </string-array>
+ <string-array name="display_over_apps_permission_change_exempt">
+ </string-array>
</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 2df22db..11aecf8 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -65,8 +65,7 @@
<string name="bluetooth_disconnect_title" msgid="4581951246357823044">"Disconnect device?"</string>
<string name="bluetooth_pairing_pref_title" msgid="3497193027590444598">"Pair new device"</string>
<string name="keywords_add_bt_device" msgid="4533191164203174011">"bluetooth"</string>
- <!-- no translation found for bluetooth_screen_auto_on_title (2203993262483477532) -->
- <skip />
+ <string name="bluetooth_screen_auto_on_title" msgid="2203993262483477532">"Automatically turn on tomorrow"</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>
@@ -77,6 +76,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hearing device settings"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shortcut, hearing aid compatibility"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"There are no presets programmed by your audiologist"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Couldn’t update preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio output"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"About audio output"</string>
@@ -437,7 +437,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Learn more about Watch Unlock"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Add watch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remove watch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingerprint & Face Unlock"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Face & Fingerprint Unlock"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Face & Fingerprint Unlock for work"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Setup needed"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Face and fingerprints added"</string>
@@ -614,10 +614,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830">""<b>"Install apps"</b>"\nInstall apps that you want to keep private in your space"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Keep in mind"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169">""<b>"Apps stop when you lock your space"</b>"\nWhen you lock your space, apps in your space are stopped and you won’t receive notifications from them"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in permission manager, privacy dashboard, and other settings when your private space is locked.\n\nYour private space can\'t be moved to a new device. You\'ll need to set up another private space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs harmful apps on your device may be able to access your private space."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private spaces are not suitable for apps that need to run in the background or send critical notifications, such as medical apps. This is because notifications and background activity are stopped when your space is locked.\n\nApps in your private space won\'t appear in permission manager, privacy dashboard, and other settings when private space is locked.\n\nYour private space can\'t be restored to a new device. You’ll need to set up another space if you want to use it on another device.\n\nAnyone that connects your device to a computer or installs malicious apps on your device may be able to access your private space."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Learn more about private space"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"This will take a few moments"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Setting up private space…"</string>
@@ -851,6 +849,21 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Restart Device?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detail NFC logging is intended for development purposes only. Additional NFC data is included in bug reports, which may contain private information. Restart your device to change this setting."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restart"</string>
+ <string name="keywords_external_display" msgid="4181375057920134909">"mirror, external display, connected display, usb display, resolution, rotation"</string>
+ <string name="external_display_on" msgid="2560104443500154333">"On"</string>
+ <string name="external_display_off" msgid="5634413756025351374">"Off"</string>
+ <string name="external_display_settings_title" msgid="6256884595821605779">"External Display"</string>
+ <string name="external_display_use_title" msgid="8198257340836261386">"Use external display"</string>
+ <string name="external_display_resolution_settings_title" msgid="2446784716488289268">"Display resolution"</string>
+ <string name="external_display_not_found" msgid="1912355133386555798">"External display is disconnected"</string>
+ <string name="external_display_rotation" msgid="7160062306817490204">"Rotation"</string>
+ <string name="external_display_standard_rotation" msgid="545969032327487219">"Standard"</string>
+ <string name="external_display_rotation_90" msgid="7371530414227542947">"90°"</string>
+ <string name="external_display_rotation_180" msgid="6469137724447819841">"180°"</string>
+ <string name="external_display_rotation_270" msgid="7819322302457740514">"270°"</string>
+ <string name="external_display_change_resolution_footer_title" msgid="9024291681663573443">"Changing rotation or resolution may stop any apps that are currently running"</string>
+ <string name="external_display_not_found_footer_title" msgid="8882902921634316363">"Your device must be connected to an external display to mirror your screen"</string>
+ <string name="external_display_more_options_title" msgid="1222751990705118774">"More options"</string>
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirror"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Enable wireless display"</string>
@@ -1192,6 +1205,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Brightness level"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptive brightness"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"About adaptive brightness"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"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>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"On"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Off"</string>
@@ -1972,6 +1986,9 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"User selected: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Speech"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Pointer speed"</string>
+ <string name="pointer_scale" msgid="4941564570571663964">"Pointer scale"</string>
+ <string name="pointer_scale_decrease_content_description" msgid="4479646756230008068">"Decrease pointer scale"</string>
+ <string name="pointer_scale_increase_content_description" msgid="1049632123702664450">"Increase pointer scale"</string>
<string name="game_controller_settings_category" msgid="8557472715034961918">"Game Controller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirect vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibration to game controller when connected"</string>
@@ -2094,7 +2111,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continue anyway"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancel"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Magnification settings"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"One-finger panning"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Move magnifier with 1 finger"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Drag 1 finger to move around the screen"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Move the magnification area by dragging one finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Move the magnification area by dragging two fingers."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Unavailable while only magnifying part of the screen"</string>
@@ -2118,6 +2136,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tap a button to zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Quickly zoom in on the screen to make content larger"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag 2 fingers to move around screen<br/> {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> <b>To zoom in temporarily:</b><br/> {0,number,integer}. Make sure your magnification type is set to full screen<br/> {1,number,integer}. Use shortcut to start magnification<br/> {2,number,integer}. Touch & hold anywhere on the screen<br/> {3,number,integer}. Drag finger to move around screen<br/> {4,number,integer}. Lift finger to stop magnification"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag 2 fingers to move around the screen<br/> {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> You can also zoom in temporarily and more."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>To zoom in:</b><br/> {0,number,integer}. Use shortcut to start magnification<br/> {1,number,integer}. Tap the screen<br/> {2,number,integer}. Drag 1 or 2 fingers to move around the screen<br/> {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/> {4,number,integer}. Use shortcut to stop magnification<br/><br/> You can also zoom in temporarily and more."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"When magnification is turned on, you can zoom in on your screen.\n\n"<b>"To zoom"</b>", start magnification, then tap anywhere on the screen.\n"<ul>""<li>"Drag 2 or more fingers to scroll"</li>"\n"<li>"Pinch 2 or more fingers to adjust zoom"</li>""</ul>"\n\n"<b>"To zoom temporarily"</b>", start magnification, then touch & hold anywhere on the screen.\n"<ul>""<li>"Drag to move around the screen"</li>"\n"<li>"Lift finger to zoom out"</li>""</ul>"\n\nYou can’t zoom in on the keyboard or navigation bar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> of <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Accessibility button shortcut"</string>
@@ -3323,13 +3343,24 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{None}=1{1 schedule set}other{# schedules set}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Do Not Disturb"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Priority Modes"</string>
+ <string name="zen_modes_add_mode" msgid="4806287336036228772">"Add a mode"</string>
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Only get notified by important people and apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Select activation type"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Time"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Ex. \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Ex. \"Personal calendar\""</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>
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limit interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Turn on Do Not Disturb"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarms and media sounds can interrupt"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Schedules"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Delete schedules"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Delete"</string>
+ <string name="zen_mode_menu_delete_mode" msgid="3190031534736428573">"Delete mode"</string>
+ <string name="zen_mode_delete_mode_confirmation" msgid="7594340592051947392">"Delete \"<xliff:g id="MODE">%1$s</xliff:g>\" mode?"</string>
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Schedules"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schedule"</string>
@@ -3340,6 +3371,8 @@
<string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Set a schedule"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schedule"</string>
<string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> hr, <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
+ <skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schedule"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silence phone at certain times"</string>
<string name="zen_mode_automation_suggestion_summary" msgid="1946750790084170826">"Set Do Not Disturb rules"</string>
@@ -3349,7 +3382,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Allow interruptions that make sound"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Block visual disturbances"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Allow visual signals"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifications that can reach you"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Stay focused"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Additional actions"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Display settings"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Display options"</string>
@@ -3366,6 +3399,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"enable dark theme"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Switch the OS and apps to prefer light text on a dark background, which may be easier on the eyes and confers significant battery savings on some devices"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No display changes}=1{{effect_1}}=2{{effect_1} and {effect_2}}=3{{effect_1}, {effect_2}, and {effect_3}}other{{effect_1}, {effect_2}, and # more}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No interruptions are filtered"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Display options for filtered notifications"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"When Do Not Disturb is on"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"No sound from notifications"</string>
@@ -3659,6 +3694,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Other"</string>
<string name="no_channels" msgid="4716199078612071915">"This app has not posted any notifications"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Show unused categories"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Additional settings in the app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Show unused categories"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Hide unused categories"</string>
@@ -3768,6 +3804,7 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Selected apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"None"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"All"</string>
+ <string name="zen_mode_apps_subtext" msgid="1764211974662012877">"{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}}"</string>
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Allow apps to override"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps that can interrupt"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Select more apps"</string>
@@ -4861,14 +4898,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"This device’s data partition needs to be converted to ext4 before using the 16KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Activating the 16KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4KB and 16KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to production mode, you would need to switch back to 4KB mode and then lock the bootloader, which factory resets the device. After the device successfully boots into Android, disable OEM unlocking in Developer options. The device will be wiped and the filesystem will be changed to ext4 after confirmation. After this completes, please come back to enable 16KB again."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Erase all data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Failed to reformat and wipe the data partition to ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader Unlock Required for 16KB Mode"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"This device needs to have the bootloader unlocked before using the 16KB developer option. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. All user data and settings will be wiped when activating 16KB mode. Once the bootloader is unlocked, activating the 16KB option will require two reboots. Once you are in this mode, you can switch back and forth between 4KB and 16KB mode with a single reboot. Some features will be disabled in these modes, so some applications may not work. To return the device to production mode, you would need to switch back to 4KB mode and then OEM/bootloader lock (which factory resets) the device. Please unlock the bootloader and try again. You can see instructions for how to do this at <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Using 4KB page-agnostic mode"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"You are in the 4KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must lock the bootloader of the device. Tap to read more."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"You are in the 4KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must lock the bootloader of the device. This would factory reset the device again and restore it to production settings. After the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe Device\', \'Lock Bootloader\' and \'Force Flash all partitions\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Using 16KB page-agnostic mode"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"You are in the 16KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must, switch back to 4K mode and then lock the bootloader of the device. Tap to read more."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"You are in the 16KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work. In order to re-enter the production mode, you must, switch back to 4K mode and then lock the bootloader of the device. This would factory reset the device again and restore it to production settings. After the device successfully boots into Android, disable OEM unlocking in Developer options. If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> and select \'Wipe Device\', \'Lock Bootloader\' and \'Force Flash all partitions\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB Page-agnostic Mode"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Read more"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Bug report handler"</string>
@@ -5000,7 +5040,7 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Use app pinning"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Use developer options"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Use print service"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Allow multiple users"</string>
+ <string name="multiple_users_main_switch_title" msgid="9158796544835843201">"Allow user switch"</string>
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"allow, multiple, user, permit, many"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiple, users, profiles, people, accounts, switch, many"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Use wireless debugging"</string>
@@ -5344,4 +5384,5 @@
<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="homepage_search" msgid="6759334912284663559">"Search Settings"</string>
</resources>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index d22996d..c6e9f86 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Hora de dormir"</item>
+ <item msgid="4152450357280759894">"Mientras se conduce"</item>
+ <item msgid="7096549258219399423">"Inmersivo"</item>
+ <item msgid="2760716776980432977">"Administrado"</item>
+ <item msgid="601734478369121764">"Estrella"</item>
+ <item msgid="6243809315432780521">"Calendario"</item>
+ <item msgid="4913577903148415331">"Hora"</item>
+ <item msgid="3653377604690057780">"Teatro"</item>
+ <item msgid="3843711267408385410">"Flor"</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 a7eda34..d4d81fe 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Configuración de dispositivos auditivos"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Acceso directo, compatibilidad con audífonos"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Ajuste predeterminado"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Tu audiólogo no programó ningún ajuste predeterminado"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"No se pudo actualizar el ajuste predeterminado"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Salida de audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Info. sobre salida de audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Más información sobre Desbloqueo del reloj"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Agregar reloj"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Quitar reloj"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Desbloqueo facial y con huellas dactilares"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueo facial y con huellas dactilares"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueo facial y con huellas dactilares para el trabajo"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Se requiere configuración"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Se agregaron huellas dactilares y el rostro"</string>
@@ -614,10 +615,8 @@
<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>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Las apps se detienen cuando bloqueas tu espacio"</b>\n"Cuando bloquees tu espacio, las apps en él se detendrán, y no recibirás notificaciones de ellas"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"No se recomienda el uso de espacios privados para apps que necesitan ejecutarse en segundo plano o enviar notificaciones críticas, como apps médicas. Esto se debe a que las notificaciones y la actividad en segundo plano se detienen cuando el espacio está bloqueado.\n\nLas apps del espacio privado no se mostrarán en el Administrador de permisos, el Panel de privacidad ni en otras secciones de configuración cuando el espacio privado esté bloqueado.\n\nNo se puede transferir el espacio privado a un dispositivo nuevo. Deberás configurar un espacio privado nuevo si quieres usar la función en otro dispositivo.\n\nCualquier persona que conecte tu dispositivo a una computadora o le instale apps dañinas podría acceder a tu espacio privado."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"No se recomienda el uso de espacios privados para apps que necesitan ejecutarse en segundo plano o enviar notificaciones críticas, como apps médicas. Esto se debe a que las notificaciones y la actividad en segundo plano se detienen cuando el espacio está bloqueado.\n\nLas apps del espacio privado no se mostrarán en el Administrador de permisos, el Panel de privacidad ni en otras secciones de configuración cuando el espacio privado esté bloqueado.\n\nNo se puede restablecer el espacio privado en un dispositivo nuevo. Deberás configurar otro espacio si quieres usarlo en otro dispositivo.\n\nCualquier persona que conecte tu dispositivo a una computadora o le instale apps maliciosas podría acceder a tu espacio privado."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Más información sobre el espacio privado"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"El proceso tardará unos minutos"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configurando espacio privado…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"¿Quieres reiniciar el dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"El registro detallado de NFC está destinado únicamente a fines de desarrollo. Se incluyen datos de NFC adicionales en los informes de errores, que podrían contener información privada. Reinicia el dispositivo para cambiar la configuración."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reiniciar"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Transmitir"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"duplicar"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Habilitar pantalla inalámbrica"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Automáticos"</string>
<string name="brightness" msgid="6216871641021779698">"Nivel de brillo"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Brillo automático"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Acerca del brillo automático"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"El brillo de la pantalla se ajustará automáticamente según el entorno y las actividades que hagas. Puedes mover el control deslizante para que la función de brillo automático reconozca tus preferencias."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activado"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Inhabilitado"</string>
@@ -1264,7 +1294,7 @@
<string name="screen_timeout_summary" msgid="5558778019594643427">"Después de <xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g> de inactividad"</string>
<string name="screen_timeout_summary_not_set" msgid="5107680774964178875">"No establecido"</string>
<string name="wallpaper_settings_title" msgid="5635129851136006383">"Fondo de pantalla"</string>
- <string name="style_and_wallpaper_settings_title" msgid="2232042809407308946">"Fondo de pantalla y estilo"</string>
+ <string name="style_and_wallpaper_settings_title" msgid="2232042809407308946">"Estilo y fondo de pantalla"</string>
<string name="wallpaper_dashboard_summary" msgid="2324472863981057118">"Pantalla principal, pantalla de bloqueo"</string>
<string name="wallpaper_suggestion_title" msgid="3812842717939877330">"Cambiar fondo de pantalla"</string>
<string name="wallpaper_suggestion_summary" msgid="9077061486716754784">"Personalizar tu pantalla"</string>
@@ -1548,7 +1578,7 @@
<string name="tether_settings_summary_usb_and_bluetooth_and_ethernet" msgid="5880591133984166550">"USB, Bluetooth y Ethernet"</string>
<string name="tether_settings_summary_all" msgid="7565193614882005775">"Hotspot, USB, Bluetooth y Ethernet"</string>
<string name="tether_settings_summary_off" msgid="2526164899130351968">"No se comparte Internet con otros dispositivos"</string>
- <string name="tether_preference_summary_off" msgid="6266799346319794630">"Desactivados"</string>
+ <string name="tether_preference_summary_off" msgid="6266799346319794630">"No"</string>
<string name="usb_tethering_button_text" msgid="7364633823180913777">"Conexión mediante USB"</string>
<string name="bluetooth_tether_checkbox_text" msgid="6108398414967813545">"Conexión Bluetooth"</string>
<string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"Conexión Ethernet"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Seleccionado por el usuario: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voz"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocidad del puntero"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controlador de juegos"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redireccionar vibración"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Enviar la vibración al controlador de juegos cuando esté conectado"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuar de todos modos"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancelar"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Configuración de ampliación"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Desplazamiento con un dedo"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Arrastrar un dedo para mover el área de ampliación."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Arrastrar dos dedos para mover el área de ampliación."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"No disponible mientras se amplía parte de la pantalla"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Presiona un botón para ampliar"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Acerca rápidamente la pantalla para que el contenido se muestre en un tamaño más grande"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Para acercar, haz lo siguiente:</b><br/> {0,number,integer}. Usa la combinación para comenzar la ampliación.<br/> {1,number,integer}. Presiona la pantalla.<br/> {2,number,integer}. Arrastra 2 dedos para moverte por la pantalla.<br/> {3,number,integer}. Pellizca con 2 dedos para ajustar el zoom.<br/> {4,number,integer}. Usa la combinación para detener la ampliación.<br/><br/> <b>Para acercar de manera temporal, haz lo siguiente:</b><br/> {0,number,integer}. Asegúrate de que el tipo de ampliación esté configurado en pantalla completa.<br/> {1,number,integer}. Usa la combinación para comenzar la ampliación.<br/> {2,number,integer}. Mantén presionada cualquier parte de la pantalla.<br/> {3,number,integer}. Arrastra un dedo para moverte por la pantalla.<br/> {4,number,integer}. Levanta el dedo para detener la ampliación."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Cuando la ampliación esté activada, podrás acercar el contenido en pantalla.\n\n"<b>"Para usar el zoom"</b>", inicia la ampliación y, luego, presiona cualquier parte de la pantalla.\n"<ul><li>"Arrastra 2 o más dedos para desplazarte."</li>\n<li>"Pellizca con 2 o más dedos para ajustar el zoom."</li></ul>\n\n<b>"Para hacer zoom de manera temporal"</b>", inicia la ampliación y, luego, mantén presionada cualquier parte de la pantalla.\n"<ul><li>"Arrastra el dedo para moverte por la pantalla."</li>\n<li>"Levanta el dedo para alejar el contenido."</li></ul>\n\n"No puedes acercar con el teclado ni en la barra de navegación."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Acceso directo al botón de accesibilidad"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ninguno}=1{Se estableció 1 programa}other{Se establecieron # programas}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"No interrumpir"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modos de prioridad"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<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="5135520719771212697">"Seleccionar tipo de activación"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Hora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"P. ej.: \"9:30 a.m.–5:00 p.m.\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendario"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"P. ej.: \"Calendario personal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitar las interrupciones"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activar No interrumpir"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Los sonidos multimedia y las alarmas pueden interrumpir"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programaciones"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Borrar programas"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Borrar"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editar"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programas"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programa"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Agrega un calendario"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Usa tu calendario"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programa"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Establecer un programa"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programa"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programa"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silenciar en ciertos momentos"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Habilitar interrupciones con sonido"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquear alteraciones visuales"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permitir señales visuales"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificaciones que puedes recibir"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Concéntrate"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Acciones adicionales"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Configuración de visualización"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opciones de visualización"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"Habilitar el tema oscuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Cambia el SO y las apps para preferir el texto claro sobre un fondo oscuro, lo que puede ser más cómodo para los ojos y genera un ahorro de batería significativo en algunos dispositivos."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Sin cambios de visualización}=1{{effect_1}}=2{{effect_1} y {effect_2}}=3{{effect_1}, {effect_2} y {effect_3}}other{{effect_1}, {effect_2} y # más}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrar interrupciones"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No se filtran interrupciones"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opciones de visualización de notificaciones filtradas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Cuando se activa No interrumpir"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Notificaciones sin sonido"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorías"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Otros"</string>
<string name="no_channels" msgid="4716199078612071915">"Esta app no publicó ninguna notificación"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostrar categorías sin usar"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Opciones de configuración adicionales de la app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostrar categorías sin usar"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ocultar categorías sin usar"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Apps seleccionadas"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ninguna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Todo"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permitir que las apps anulen No interrumpir"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps que pueden interrumpir"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Seleccionar más apps"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Cambiar a solo alarmas durante una hora hasta la hora {time}}other{Cambiar a solo alarmas durante # horas hasta la hora {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Cambiar a solo alarmas hasta la(s) <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Cambiar a interrumpir siempre"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Cambiar nombre"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Cambiar ícono"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Cambiar ícono"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Advertencia"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Cerrar"</string>
<string name="device_feedback" msgid="5351614458411688608">"Enviar comentarios sobre el dispositivo"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"La partición de datos del dispositivo debe convertirse a ext4 antes de usar la opción para desarrolladores de 16 KB. No se puede garantizar la integridad del software en este modo, y los datos almacenados en el teléfono podrían estar en riesgo durante el desbloqueo del bootloader. Si activas la opción de 16 KB, deberás volver a reiniciar. Una vez que se habilite este modo, podrás cambiar entre los modos de 4 KB y 16 KB con un único reinicio. Algunas funciones quedan inhabilitadas en estos modos, así que algunas aplicaciones podrían no ejecutarse. Para revertir el dispositivo al modo de producción, debes volver al modo de 4 KB y bloquear el bootloader, lo que restablecerá la configuración del dispositivo. Una vez que el dispositivo se inicie correctamente ejecutando Android, inhabilita el desbloqueo para OEM en Opciones para desarrolladores. Después de la confirmación, se limpiará el dispositivo, y el sistema de archivos cambiará a ext4. Una vez que se complete el proceso, vuelve a habilitar nuevamente el modo de 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Borrar todos los datos"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"No se pudo volver a formatear el dispositivo y falló la limpieza de la partición de datos a ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Debes desbloquear el bootloader para usar el modo de 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Este dispositivo debe tener el bootloader desbloqueado para poder usar la opción para desarrolladores de 16 KB. No se puede garantizar la integridad del software en este modo, y los datos almacenados en el teléfono podrían estar en riesgo durante el desbloqueo del bootloader. Se limpiarán la configuración y los datos del usuario cuando se active el modo de 16 KB. Una vez que se desbloquee el bootloader, deberás reiniciar dos veces para activar la opción de 16 KB. Una vez que se habilite este modo, podrás cambiar entre los modos de 4 KB y 16 KB con un único reinicio. Algunas funciones quedan inhabilitadas en estos modos, así que algunas aplicaciones podrían no ejecutarse. Para revertir el dispositivo al modo de producción, debes volver al modo de 4 KB y bloquear el dispositivo con OEM/bootloader (lo que restablecerá la configuración de fábrica). Desbloquea el bootloader y vuelve a intentarlo. Puedes ver las instrucciones de este proceso en <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Modo independiente de la página de 4 KB en uso"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Estás en el modo de 4 KB del modo independiente de la página. No se puede garantizar la integridad del software en este modo, y los datos almacenados en el teléfono podrían estar en riesgo durante el desbloqueo del bootloader. Algunas funciones quedan inhabilitadas en estos modos, así que algunas aplicaciones podrían no ejecutarse. Para volver a entrar al modo de producción, debes bloquear el bootloader del dispositivo. Presiona para obtener más información."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Estás en el modo de 4 KB del modo independiente de la página. No se puede garantizar la integridad del software en este modo, y los datos almacenados en el teléfono podrían estar en riesgo durante el desbloqueo del bootloader. Algunas funciones quedan inhabilitadas en estos modos, así que algunas aplicaciones podrían no ejecutarse. Para volver a entrar al modo de producción, debes bloquear el bootloader del dispositivo. Se restablecerá la configuración de fábrica del dispositivo, que quedará en modo de producción. Una vez que el dispositivo se inicie correctamente ejecutando Android, inhabilita el desbloqueo para OEM en Opciones para desarrolladores. Si el dispositivo no se puede iniciar ejecutando Android o si es inestable, actualízalo con las imágenes de fábrica más recientes de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>, o bien usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> y selecciona \"Limpiar el dispositivo\", \"Bloquear el bootloader\" y \"Forzar la escritura de todas las particiones en la memoria flash\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Modo independiente de la página de 16 KB en uso"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Estás en el modo de 16 KB del modo independiente de la página. No se puede garantizar la integridad del software en este modo, y los datos almacenados en el teléfono podrían estar en riesgo durante el desbloqueo del bootloader. Algunas funciones quedan inhabilitadas en estos modos, así que algunas aplicaciones podrían no ejecutarse. Para volver a entrar al modo de producción, debes volver al modo de 4 KB y bloquear el bootloader del dispositivo. Presiona para obtener más información."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Estás en el modo de 16 KB del modo independiente de la página. No se puede garantizar la integridad del software en este modo, y los datos almacenados en el teléfono podrían estar en riesgo durante el desbloqueo del bootloader. Algunas funciones quedan inhabilitadas en estos modos, así que algunas aplicaciones podrían no ejecutarse. Para volver a entrar al modo de producción, debes volver al modo de 4 KB y bloquear el bootloader del dispositivo. Se restablecerá la configuración de fábrica del dispositivo, que quedará en modo de producción. Una vez que el dispositivo se inicie correctamente ejecutando Android, inhabilita el desbloqueo para OEM en Opciones para desarrolladores. Si el dispositivo no se puede iniciar ejecutando Android o si es inestable, actualízalo con las imágenes de fábrica más recientes de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>, o bien usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> y selecciona \"Limpiar el dispositivo\", \"Bloquear el bootloader\" y \"Forzar la escritura de todas las particiones en la memoria flash\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modo independiente de la página de 16 KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Leer más"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Controlador de informes de errores"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usar fijación de apps"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar opciones para desarrolladores"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usar servicio de impresión"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir varios usuarios"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"permitir, varios, usuarios, habilitar, muchos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"múltiples, usuarios, perfiles, personas, cuentas, cambiar, muchos"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usar depuración inalámbrica"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index d236131..186e414 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Descanso"</item>
+ <item msgid="4152450357280759894">"En coche"</item>
+ <item msgid="7096549258219399423">"Inmersivo"</item>
+ <item msgid="2760716776980432977">"Gestionado"</item>
+ <item msgid="601734478369121764">"Estrella"</item>
+ <item msgid="6243809315432780521">"Calendario"</item>
+ <item msgid="4913577903148415331">"Hora"</item>
+ <item msgid="3653377604690057780">"Teatro"</item>
+ <item msgid="3843711267408385410">"Flor"</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 3fc067a..11bf83e 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Ajustes de audífonos"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Acceso directo, compatibilidad con audífonos"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preajuste"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Tu audiólogo no ha programado ningún preajuste"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"No se ha podido actualizar el preajuste"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Salida de audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Acerca de la salida de audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Más información sobre Desbloqueo con reloj"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Añadir reloj"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Quitar reloj"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Desbloqueo facial y con huella digital"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueo facial y con huella digital"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueo facial y con huella digital para el trabajo"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Hay que configurarlo"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Cara y huellas digitales añadidas"</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Los espacios privados no son adecuados para aplicaciones que deban ejecutarse en segundo plano o enviar notificaciones críticas, como las aplicaciones médicas. Esto se debe a que las notificaciones y la actividad en segundo plano se detienen cuando tu espacio está bloqueado.\n\nLas aplicaciones de tu espacio privado no aparecerán en el Gestor de permisos, en el panel de privacidad ni en otros ajustes cuando tu espacio privado esté bloqueado.\n\nTu espacio privado no puede trasladarse a otro dispositivo. Deberás configurar otro espacio privado si quieres usarlo en otro dispositivo.\n\nCualquier persona que conecte tu dispositivo a un ordenador o instale aplicaciones dañinas en tu dispositivo podría acceder a tu espacio privado."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Los espacios privados no son adecuados para aplicaciones que deban ejecutarse en segundo plano o enviar notificaciones críticas, como las aplicaciones médicas. Esto se debe a que las notificaciones y la actividad en segundo plano se detienen cuando tu espacio está bloqueado.\n\nLas aplicaciones de tu espacio privado no aparecerán en el Gestor de permisos, en el panel de privacidad ni en otros ajustes cuando tu espacio privado esté bloqueado.\n\nTu espacio privado no se puede restaurar en otro dispositivo. Deberás configurar otro espacio si quieres usarlo en otro dispositivo.\n\nCualquier persona que conecte tu dispositivo a un ordenador o instale aplicaciones maliciosas en tu dispositivo podría acceder a tu espacio privado."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Más información sobre el espacio privado"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Tardará un momento"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configurando espacio privado…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"¿Reiniciar dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"El registro detallado de NFC solo se usa para fines de desarrollo. Además, se incluyen datos adicionales de NFC en los informes de errores, que pueden contener información privada. Reinicia tu dispositivo para cambiar este ajuste."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reiniciar"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Enviar"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"proyectar"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Habilitar pantalla inalámbrica"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptativos"</string>
<string name="brightness" msgid="6216871641021779698">"Nivel de brillo"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Brillo adaptativo"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Acerca del brillo adaptativo"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"El brillo de la pantalla se ajustará automáticamente según el entorno y lo que hagas. Puedes mover el control deslizante para que la función Brillo adaptativo reconozca tus preferencias."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activado"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desactivado"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Seleccionado por el usuario: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voz"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocidad del puntero del ratón"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Mandos de videojuegos"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirigir vibración"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Enviar vibración al mando para juegos cuando esté conectado"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuar de todos modos"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancelar"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Ajustes de ampliación"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Desplazarse con un dedo"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mueve la lupa de área arrastrándola con un dedo."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mueve la lupa de área arrastrándola con dos dedos."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"No disponible cuando se amplía solo parte de la pantalla"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Toca un botón para ampliar"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Amplía rápidamente la pantalla para que el contenido se vea más grande"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Para ampliar:</b><br/> {0,number,integer}. Usa el acceso directo para iniciar la ampliación.<br/> {1,number,integer}. Toca la pantalla.<br/> {2,number,integer}. Arrastra dos dedos para moverte por la pantalla.<br/> {3,number,integer}. Pellizca con dos dedos para ajustar el zoom.<br/> {4,number,integer}. Usa el acceso directo para detener la ampliación.<br/><br/> <b>Para ampliar de forma temporal:</b><br/> {0,number,integer}. Asegúrate de que has configurado el tipo de ampliación como pantalla completa.<br/> {1,number,integer}. Usa el acceso directo para iniciar la ampliación.<br/> {2,number,integer}. Mantén pulsada cualquier parte de la pantalla.<br/> {3,number,integer}. Arrastra el dedo para moverte por la pantalla.<br/> {4,number,integer}. Levanta el dedo para detener la ampliación."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Si la ampliación está activada, puedes ampliar la pantalla.\n\n"<b>"Para ampliar"</b>", inicia la ampliación y toca la parte de la pantalla que quieras ampliar.\n"<ul><li>"Arrastra al menos dos dedos para desplazarte."</li>\n<li>"Pellizca la pantalla con al menos dos dedos para ajustar el zoom."</li></ul>\n\n<b>"Para ampliar elementos temporalmente"</b>", inicia la ampliación y mantén pulsada cualquier parte de la pantalla.\n"<ul><li>"Arrastra un dedo para desplazarte por la pantalla."</li>\n<li>"Levanta el dedo para reducir la imagen."</li></ul>\n\n"El teclado y la barra de navegación no se pueden ampliar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Acceso directo al botón de accesibilidad"</string>
@@ -2230,10 +2273,10 @@
<string name="accessibility_control_timeout_preference_intro_text" msgid="1398116710556762245">"Elige durante cuánto tiempo quieres que se muestren los mensajes temporales que te piden que lleves a cabo una acción"</string>
<string name="accessibility_long_press_timeout_preference_title" msgid="5237764682976688855">"Retraso al mantener pulsado"</string>
<string name="accessibility_display_inversion_preference_title" msgid="5476133104746207952">"Invertir colores"</string>
- <string name="accessibility_display_inversion_switch_title" msgid="7458595722552743503">"Usar Invertir colores"</string>
- <string name="accessibility_display_inversion_shortcut_title" msgid="6889624526691513462">"Acceso directo a Invertir colores"</string>
- <string name="accessibility_display_inversion_preference_intro_text" msgid="1159663288481145318">"Invertir colores hace que las pantallas claras se vuelvan oscuras y que las pantallas oscuras se vuelvan claras."</string>
- <string name="accessibility_display_inversion_preference_subtitle" msgid="4494767676482389509">"<b>Ten en cuenta lo siguiente:</b><br/> <ol> <li> Los colores cambiarán en el contenido multimedia y las imágenes.</li> <li> Invertir colores funciona en todas las aplicaciones.</li> <li> Si lo que quieres es que se muestre un fondo oscuro, prueba mejor a usar el tema oscuro.</li> </ol>"</string>
+ <string name="accessibility_display_inversion_switch_title" msgid="7458595722552743503">"Usar Inversión de colores"</string>
+ <string name="accessibility_display_inversion_shortcut_title" msgid="6889624526691513462">"Acceso directo a Inversión de colores"</string>
+ <string name="accessibility_display_inversion_preference_intro_text" msgid="1159663288481145318">"Inversión de colores hace que las pantallas claras se vuelvan oscuras y que las pantallas oscuras se vuelvan claras."</string>
+ <string name="accessibility_display_inversion_preference_subtitle" msgid="4494767676482389509">"<b>Ten en cuenta lo siguiente:</b><br/> <ol> <li> Los colores cambiarán en el contenido multimedia y las imágenes.</li> <li> Inversión de colores funciona en todas las aplicaciones.</li> <li> Si lo que quieres es que se muestre un fondo oscuro, prueba mejor a usar el tema oscuro.</li> </ol>"</string>
<string name="accessibility_action_label_panel_slice" msgid="1313725957071602932">"acceder a Ajustes"</string>
<string name="accessibility_autoclick_preference_title" msgid="2703143361605555752">"Clic automático (tiempo permanencia)"</string>
<string name="accessibility_autoclick_about_title" msgid="152923024405552594">"Clic automático (permanencia)"</string>
@@ -2284,8 +2327,8 @@
<string name="accessibility_daltonizer_shortcut_title" msgid="7480360363995502369">"Acceso directo a Corrección de color"</string>
<string name="accessibility_daltonizer_about_title" msgid="6063650804116981287">"Acerca de la corrección de color"</string>
<string name="accessibility_daltonizer_footer_learn_more_content_description" msgid="2091679253892040910">"Más información sobre la corrección de color"</string>
- <string name="accessibility_color_inversion_about_title" msgid="8275754480247040136">"Acerca de invertir colores"</string>
- <string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"Más información sobre Invertir colores"</string>
+ <string name="accessibility_color_inversion_about_title" msgid="8275754480247040136">"Acerca de inversión de colores"</string>
+ <string name="accessibility_color_inversion_footer_learn_more_content_description" msgid="5382579548498952445">"Más información sobre Inversión de colores"</string>
<string name="accessibility_captioning_primary_switch_title" msgid="3663677340286206100">"Mostrar subtítulos"</string>
<string name="accessibility_captioning_primary_switch_summary" msgid="2544094070306830218">"Solo en aplicaciones compatibles"</string>
<string name="captioning_appearance_title" msgid="3128792092290011408">"Tamaño y estilo de los subtítulos"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ninguna}=1{1 programación creada}other{# programaciones creadas}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"No molestar"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modos prioritarios"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Recibe notificaciones solo de personas y aplicaciones importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Selecciona un tipo de activación"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Hora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Por ejemplo, \"De 9:30 a 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendario"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Por ejemplo, \"Calendario personal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitar interrupciones"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activar No molestar"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Las alarmas y los sonidos multimedia pueden interrumpirte"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programaciones"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Eliminar programaciones"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Eliminar"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editar"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programaciones"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programación"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Añade un calendario"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Usa el calendario"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programación"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Crea una programación"</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 <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programación"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silenciar teléfono en ciertos momentos"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permitir interrupciones que reproduzcan sonido"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquear interrupciones visuales"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permitir señales visuales"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificaciones que pueden llegarte"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Concentración"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Acciones adicionales"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Ajustes de la pantalla"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opciones de visualización"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"habilitar tema oscuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Se prioriza que el SO y las aplicaciones usen un texto claro sobre fondo oscuro, lo que puede resultar más agradable a la vista y supone un importante ahorro de batería en algunos dispositivos"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No hay cambios en la pantalla}=1{{effect_1}}=2{{effect_1} y {effect_2}}=3{{effect_1}, {effect_2} y {effect_3}}other{{effect_1}, {effect_2}, y # más}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrar interrupciones"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"No se filtra ninguna interrupción"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opciones de visualización para las notificaciones filtradas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Cuando el modo No molestar esté activado"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Notificaciones sin sonido"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorías"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Otros"</string>
<string name="no_channels" msgid="4716199078612071915">"Esta aplicación no ha publicado ninguna notificación"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostrar categorías no usadas"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Ajustes adicionales de la aplicación"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostrar categorías no usadas"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ocultar categorías no usadas"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Aplicaciones seleccionadas"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ninguna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Todas"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permitir que las aplicaciones anulen el modo No molestar"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplicaciones que pueden interrumpirte"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Seleccionar más aplicaciones"</string>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Cambiar nombre"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Cambiar icono"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Cambiar icono"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Advertencia"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Cerrar"</string>
<string name="device_feedback" msgid="5351614458411688608">"Enviar comentarios sobre el dispositivo"</string>
@@ -3917,7 +3978,7 @@
<string name="app_link_open_always_summary" msgid="4524005594295855117">"{count,plural, =1{La aplicación quiere abrir # enlace}other{La aplicación quiere abrir # enlaces}}"</string>
<string name="open_supported_links_footer" msgid="3188808142432787933">"La aplicación quiere abrir los siguientes enlaces:"</string>
<string name="assist_and_voice_input_title" msgid="6317935163145135914">"Asistencia y entrada de voz"</string>
- <string name="default_assist_title" msgid="1182435129627493758">"Asistente digital"</string>
+ <string name="default_assist_title" msgid="1182435129627493758">"Aplicación de asistente digital"</string>
<string name="default_digital_assistant_title" msgid="5654663086385490838">"Aplicación de asistente digital predeterminada"</string>
<string name="assistant_security_warning_agree" msgid="9013334158753473359">"Aceptar"</string>
<string name="default_browser_title" msgid="8342074390782390458">"Aplicación de navegador"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"La partición de datos de este dispositivo debe convertirse a ext4 antes de usar la opción para desarrolladores de 16 KB. En este modo no se puede garantizar la integridad del software, y los datos que haya almacenados en el teléfono mientras el bootloader está desbloqueado pueden correr peligro. Para activar la opción de 16 KB, se necesitará un reinicio más. Una vez que estés en este modo, podrás alternar entre el modo de 4 KB y de 16 KB con un solo reinicio. Algunas funciones se inhabilitarán en estos modos, por lo que es posible que algunas aplicaciones no funcionen. Para que el dispositivo vuelva al modo de producción, tendrás que volver al modo de 4 KB y luego bloquear el bootloader, lo que restablecerá el estado de fábrica del dispositivo. Una vez que el dispositivo se inicie correctamente en Android, inhabilita el desbloqueo de OEM en Opciones para desarrolladores. Tras confirmar, se borrarán los datos del dispositivo y el sistema de archivos cambiará a ext4. Cuando se complete esta operación, vuelve a habilitar la opción de 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Borrar todos los datos"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"No se ha podido borrar ni reformatear la partición de datos a ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Desbloqueo del bootloader necesario para el modo de 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Para usar la opción para desarrolladores de 16 kB, este dispositivo debe tener el bootloader desbloqueado. En este modo no se puede garantizar la integridad del software, y los datos que haya almacenados en el teléfono mientras el bootloader está desbloqueado pueden correr peligro. Al activar el modo de 16 kB, se borrarán todos los ajustes y datos del usuario. Una vez que el bootloader esté desbloqueado, harán falta dos reinicios para activar la opción de 16 kB. Una vez que estés en este modo, podrás alternar entre el modo de 4 kB y de 16 kB con un solo reinicio. Algunas funciones se inhabilitarán en estos modos, por lo que es posible que algunas aplicaciones no funcionen. Para que el dispositivo vuelva al modo de producción, tendrás que volver al modo de 4 kB y luego bloquear el OEM o el bootloader, lo que restablece el estado de fábrica del dispositivo. Desbloquea el bootloader e inténtalo de nuevo. Puedes consultar las instrucciones para hacerlo en <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Usando el modo independiente de la página de 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Estás en el modo de 4 KB del modo independiente de la página. En este modo no se puede garantizar la integridad del software, y los datos que haya almacenados en el teléfono mientras el bootloader está desbloqueado pueden correr peligro. Algunas funciones se inhabilitarán en estos modos, por lo que es posible que algunas aplicaciones no funcionen. Para volver al modo de producción, debes bloquear el bootloader del dispositivo. Toca para ver más información."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Estás en el modo de 4 KB del modo independiente de la página. En este modo no se puede garantizar la integridad del software, y los datos que haya almacenados en el teléfono mientras el bootloader está desbloqueado pueden correr peligro. Algunas funciones se inhabilitarán en estos modos, por lo que es posible que algunas aplicaciones no funcionen. Para volver al modo de producción, debes bloquear el bootloader del dispositivo. Esta acción restablecerá de nuevo el estado de fábrica del dispositivo y restaurará los ajustes de producción. Una vez que el dispositivo se inicie correctamente en Android, inhabilita el desbloqueo de OEM en Opciones para desarrolladores. Si el dispositivo no se puede iniciar en Android o es inestable, vuelve a instalar las últimas imágenes de fábrica de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> y selecciona Wipe Device (Borrar los datos del dispositivo), Lock Bootloader (Bloquear bootloader) y Force Flash all partitions (Forzar la instalación de todas las particiones)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Usando el modo independiente de la página de 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Estás en el modo de 16 kB del modo independiente de la página. En este modo no se puede garantizar la integridad del software, y los datos que haya almacenados en el teléfono mientras el bootloader está desbloqueado pueden correr peligro. Algunas funciones se inhabilitarán en estos modos, por lo que es posible que algunas aplicaciones no funcionen. Para volver al modo de producción, debes volver al modo de 4 kB y luego bloquear el bootloader del dispositivo. Toca para ver más información."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Estás en el modo de 16 kB del modo independiente de la página. En este modo no se puede garantizar la integridad del software, y los datos que haya almacenados en el teléfono mientras el bootloader está desbloqueado pueden correr peligro. Algunas funciones se inhabilitarán en estos modos, por lo que es posible que algunas aplicaciones no funcionen. Para volver al modo de producción, debes volver al modo de 4 kB y luego bloquear el bootloader del dispositivo. Esta acción restablecerá de nuevo el estado de fábrica del dispositivo y restaurará los ajustes de producción. Una vez que el dispositivo se inicie correctamente en Android, inhabilita el desbloqueo de OEM en Opciones para desarrolladores. Si el dispositivo no se puede iniciar en Android o es inestable, vuelve a instalar las últimas imágenes de fábrica de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> y selecciona Wipe Device (Borrar los datos del dispositivo), Lock Bootloader (Bloquear bootloader) y Force Flash all partitions (Forzar la instalación de todas las particiones)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modo independiente de la página de 16 KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Más información"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Controlador de informes de errores"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usar Fijar aplicaciones"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar Opciones para desarrolladores"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usa servicio de impresión"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir varios usuarios"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"permitir, varios, usuarios, habilitar, muchos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"múltiples, usuarios, perfiles, personas, cuentas, cambiar, muchos"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usar depuración inalámbrica"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml
index 687895d..a2bfb9c 100644
--- a/res/values-et/arrays.xml
+++ b/res/values-et/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Uneaeg"</item>
+ <item msgid="4152450357280759894">"Sõitmine"</item>
+ <item msgid="7096549258219399423">"Kaasahaarav"</item>
+ <item msgid="2760716776980432977">"Hallatud"</item>
+ <item msgid="601734478369121764">"Tärn"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Kellaaeg"</item>
+ <item msgid="3653377604690057780">"Kinosaal"</item>
+ <item msgid="3843711267408385410">"Lill"</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 081893c..e616a1f 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Kuuldeseade seaded"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Otsetee, ühilduvus kuuldeaparaatidega"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Eelseadistus"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Teie audioloog ei ole ühtegi eelseadistust programmeerinud"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Eelseadistust ei saanud värskendada"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Heliväljund"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Teave heliväljundi kohta"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Lisateave kellaga avamise kohta"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Lisa kell"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Kella eemaldamine"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Sõrmejälje ja näoga avamine"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Näo ja sõrmejäljega avamine"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Näo ja sõrmejäljega avamine töö jaoks"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Seadistamine on vajalik"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Nägu ja sõrmejäljed on lisatud"</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"See võtab mõne hetke"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Privaatse ruumi seadistamine …"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Kas taaskäivitada seade?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Üksikasjalik NFC logimine on mõeldud ainult arenduseks. Veaaruannetesse kaasatakse täiendavad NFC andmed, mis võivad sisaldada privaatset teavet. Selle seade muutmiseks taaskäivitage oma seade."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Taaskäivita"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Ülekandmine"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"peegeldamine"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Luba juhtmeta ekraaniühendus"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Kohanduvad"</string>
<string name="brightness" msgid="6216871641021779698">"Ereduse tase"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Kohanduv eredus"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Kohanduva ereduse teave"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Teie ekraanikuva eredust kohandatakse automaatselt teie keskkonna ja tegevuste järgi. Võite liugurit käsitsi liigutada, et aidata kohanduval eredusel teie eelistusi õppida."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Sees"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Väljas"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Kasutaja valitud: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Kõne"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Kursori kiirus"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Mängukontroller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Vibreerimise ümbersuunamine"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Saadab vibreerimise mängukontrollerisse, kui see on ühendatud"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Jätka ikkagi"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Tühista"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Suurendamisseaded"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Ühe sõrmega paanimine"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Suurendusala teisaldamiseks lohistage ühe sõrmega."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Suurendusala teisaldamiseks lohistage kahe sõrmega."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Pole saadaval, kui suurendatakse ainult osa ekraanist"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Suumimiseks puudutage nuppu"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Suumige ekraanil kiiresti sisse, et sisu suuremalt kuvada"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Sissesuumimiseks toimige järgmiselt.</b><br/> {0,number,integer}. Kasutage suurendamise alustamiseks otseteed.<br/> {1,number,integer}. Puudutage ekraani.<br/> {2,number,integer}. Ekraanikuval liikumiseks lohistage kahe sõrmega.<br/> {3,number,integer}. Suumi kohandamiseks liigutage ekraanil kaht sõrme kokku-lahku.<br/> {4,number,integer}. Kasutage suurendamise lõpetamiseks otseteed.<br/><br/> <b>Ajutiseks sissesuumimiseks toimige järgmiselt.</b><br/> {0,number,integer}. Veenduge, et suurendamise tüübiks oleks valitud täisekraan.<br/> {1,number,integer}. Kasutage suurendamise alustamiseks otseteed.<br/> {2,number,integer}. Hoidke sõrme kus tahes ekraanikuval.<br/> {3,number,integer}. Lohistage ekraanikuval liikumiseks sõrme.<br/> {4,number,integer}. Suurendamise lõpetamiseks tõstke sõrm ekraanikuvalt."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kui suurendusfunktsioon on sisse lülitatud, saate oma ekraanikuval sisse suumida.\n\n"<b>"Suumimiseks"</b>" käivitage suurendusfunktsioon ja puudutage siis ekraanikuval mis tahes kohta.\n"<ul><li>"Kerimiseks lohistage kahe või enama sõrmega."</li>\n<li>"Suumi kohandamiseks pigistage kahte või enamat sõrme kokku."</li></ul>\n\n<b>"Ajutiseks suumimiseks"</b>" käivitage suurendusfunktsioon ja puudutage siis ekraanikuval pikalt mis tahes kohta.\n"<ul><li>"Ekraanikuval teisaldamiseks lohistage sõrme."</li>\n<li>"Väljasuumimiseks tõstke sõrm ekraanilt."</li></ul>\n\n"Klaviatuuril ega navigeerimisribal ei saa sisse suumida."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. leht <xliff:g id="NUM_PAGES">%2$d</xliff:g>-st"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Juurdepääsetavuse nupu otsetee"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Puudub}=1{1 ajakava on määratud}other{# ajakava on määratud}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Mitte segada"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioriteetsed režiimid"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Ainult oluliste inimeste ja rakendustega seotud märguanded"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Aktiveerimistüübi valimine"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Aeg"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Näide. „9:30 – 17:00”"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Näide. „Isiklik kalender”"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Katkestuste piiramine"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Valiku Mitte segada sisselülitamine"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmid ja meediahelid saavad katkestada"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Ajakavad"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Ajakavade kustutamine"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Kustuta"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Muuda"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Ajakavad"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Ajakava"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Lisage kalender"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Kasutage oma kalendrit"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Ajastamine"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Ajakava määramine"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Ajakava"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ajastamine"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Telefoni vaigistamine teatud ajal"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Helimärguandega katkestuste lubamine"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Visuaalsete häirimiste blok."</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Luba visuaalsed signaalid"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Teieni jõudvad märguanded"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Olge ümbritsevast teadlik"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Lisatoimingud"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Kuvaseaded"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Kuvavalikud"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"tumeda teema lubamine"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Lülitage OS ja rakendused heleda teksti ja tumeda tausta eelistusele, mis võib hõlbustada teksti lugemist ning säästab teatud seadmetes oluliselt akut"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ekraanikuva muudatusi pole}=1{{effect_1}}=2{{effect_1} ja {effect_2}}=3{{effect_1}, {effect_2} ja {effect_3}}other{{effect_1}, {effect_2} ja veel #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Katkestuste filtreerimine"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Katkestusi ei filtreerita"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Filtreeritud märguannete kuvavalikud"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kui funktsioon Mitte segada on sisse lülitatud"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Hääletud märguanded"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategooriad"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Muu"</string>
<string name="no_channels" msgid="4716199078612071915">"See rakendus pole postitanud ühtegi märguannet"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Kuva kasutamata kategooriad"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Lisaseaded rakenduses"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Kuva kasutamata kategooriad"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Peida kasutamata kategooriad"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Valitud rakendused"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Puudub"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Kõik"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Luba rakendustel alistada"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Rakendused, mis saavad katkestada"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Valige rohkem rakendusi"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Muudetakse valikule Ainult äratused 1 tunniks kuni {time}}other{Muudetakse valikule Ainult äratused # tunniks kuni {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Muudetakse valikule Ainult alarmid kuni kella <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Muudetakse valikule Katkesta alati"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Nimeta ümber"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Muuda ikooni"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Muuda ikooni"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Hoiatus"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Sule"</string>
<string name="device_feedback" msgid="5351614458411688608">"Seadme kohta tagasiside saatmine"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Arendaja valiku 16 kB kasutamiseks peab seadme andmete sektsioon olema konverditud failisüsteemiks ext4. Selles režiimis ei saa garanteerida tarkvara terviklust ja andmed, mis salvestatakse telefoni, kui käivituslaadur on avatud, võivad olla ohus. Pärast valiku 16 kB aktiveerimist tuleb seade veel korra taaskäivitada. Selles režiimis saate 4 kB ja 16 kB režiimide vahel vahetada ühe taaskäivitamisega. Mõned funktsioonid on nendes režiimides keelatud, mistõttu ei pruugi kõik rakendused töötada Seadme tehaseseadetele lähtestamiseks ja tavarežiimi naasmiseks lülituge uuesti 4K režiimile ja avage seadme käivituslaadur. Pärast seda, kui seade on Androidi käivitanud, keelake arendaja valikutes OEM-tootjaluku avamine. Pärast kinnitamist seade tühjendatakse ja failisüsteemiks seatakse ext4. Kui need toimingud on lõpetatud, lubage taas režiim 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Kustuta kõik andmed"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Andmete sektsiooni ümbervormindamine failisüsteemiks ext4 ja seadme tühjendamine ebaõnnestus."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 kB režiimi jaoks on vaja käivituslaadur avada"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Arendaja valiku 16 kB kasutamiseks peab seadme käivituslaadur olema avatud. Selles režiimis ei saa garanteerida tarkvara terviklust ja andmed, mis salvestatakse telefoni, kui käivituslaadur on avatud, võivad olla ohus. Režiimi 16 kB aktiveerimisel tühjendatakse seade kõigist kasutaja andmetest ja seadetest. Kui käivituslaadur on avatud, on valiku 16 kB aktiveerimiseks vaja seade kaks korda taaskäivitada. Selles režiimis saate 4 kB ja 16 kB režiimide vahel vahetada ühe taaskäivitamisega. Mõned funktsioonid on nendes režiimides keelatud, mistõttu ei pruugi kõik rakendused töötada. Selleks, et viia seade uuesti tavarežiimile, peate lülituma tagasi 4 kB režiimile ja lukustama OEM-i/käivituslaaduri. See lähtestab seadme tehaseseadetele. Avage käivituslaadur ja proovige uuesti. Juhiseid selle kohta vaadake aadressilt <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Lehest sõltumatu 4 kB režiimi kasutamine"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Olete lehest sõltumatus 4 kB režiimis. Selles režiimis ei saa garanteerida tarkvara terviklust ja andmed, mis salvestatakse telefoni, kui käivituslaadur on avatud, võivad olla ohus. Mõned funktsioonid on nendes režiimides keelatud, mistõttu ei pruugi kõik rakendused töötada. Tavarežiimi naasmiseks peate avama seadme käivituslaaduri. Puudutage lisateabe vaatamiseks."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Olete lehest sõltumatus 4 kB režiimis. Selles režiimis ei saa garanteerida tarkvara terviklust ja andmed, mis salvestatakse telefoni, kui käivituslaadur on avatud, võivad olla ohus. Mõned funktsioonid on nendes režiimides keelatud, mistõttu ei pruugi kõik rakendused töötada. Tavarežiimi naasmiseks peate avama seadme käivituslaaduri. See lähtestab seadme tehaseseadetele. Pärast seda, kui seade on Androidi käivitanud, keelake arendaja valikutes OEM-tootjaluku avamine. Kui seadmel ei õnnestu Androidi käivitada või see on ebastabiilne, installige kogu operatsioonisüsteem ja püsivara uuesti, kasutades tehaseoleku süsteemikujutisi aadressilt <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> või kasutage tööriista aadressil <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ja valige „Tühjenda seade“, „Lukusta käivituslaadur“ ja „Installi kõik sektsioonid uuesti“."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Lehest sõltumatu 16 kB režiimi kasutamine"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Olete lehest sõltumatus 16 kB režiimis. Selles režiimis ei saa garanteerida tarkvara terviklust ja andmed, mis salvestatakse telefoni, kui käivituslaadur on avatud, võivad olla ohus. Mõned funktsioonid on nendes režiimides keelatud, mistõttu ei pruugi kõik rakendused töötada. Selleks et viia seade uuesti tavarežiimile, peate lülituma tagasi 4K režiimile ja seejärel avama seadme käivituslaaduri. Puudutage lisateabe vaatamiseks."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Olete lehest sõltumatus 16 kB režiimis. Selles režiimis ei saa garanteerida tarkvara terviklust ja andmed, mis salvestatakse telefoni, kui käivituslaadur on avatud, võivad olla ohus. Mõned funktsioonid on nendes režiimides keelatud, mistõttu ei pruugi kõik rakendused töötada. Seadme tehaseseadetele lähtestamiseks ja tavarežiimi naasmiseks lülituge uuesti 4K režiimile ja avage seadme käivituslaadur. Pärast seda, kui seade on Androidi käivitanud, keelake arendaja valikutes OEM-tootjaluku avamine. Kui seadmel ei õnnestu Androidi käivitada või see on ebastabiilne, installige kogu operatsioonisüsteem ja püsivara uuesti, kasutades tehaseoleku süsteemikujutisi aadressilt <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>, või kasutage tööriista aadressilt <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ja valige „Tühjenda seade“, „Lukusta käivituslaadur“ ja „Installi kõik sektsioonid uuesti“."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Lehest sõltumatu 16 kB režiim"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lisateave"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Veaaruannete töötleja"</string>
@@ -5009,7 +5073,8 @@
<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>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Luba mitu kasutajat"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"luba, lubamine, mitu, kasutaja, kasutajat"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"mitu, kasutajad, profiilid, inimesed, kontod, vahetamine, palju"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Juhtmevaba silumise kasutamine"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml
index 221e2cd..edf8286 100644
--- a/res/values-eu/arrays.xml
+++ b/res/values-eu/arrays.xml
@@ -230,7 +230,7 @@
<item msgid="2702338156976571452">"hatz-marka digitala"</item>
<item msgid="7925495329948404955">"gorputz-sentsoreak"</item>
<item msgid="8163066895749904470">"irakurri sare mugikor bidezko igorpenak"</item>
- <item msgid="7621394050624063528">"imitate kokapena"</item>
+ <item msgid="7621394050624063528">"asmatutako kokapena"</item>
<item msgid="37519917674959757">"irakurri memoria"</item>
<item msgid="3868809525697401379">"idatzi memorian"</item>
<item msgid="2504191192460059817">"piztu pantaila"</item>
@@ -297,7 +297,7 @@
<item msgid="4480721672278100858">"Hatz-marka digitala"</item>
<item msgid="7883743426029759112">"Gorputz-sentsoreak"</item>
<item msgid="2546206711741159825">"Irakurri sare mugikor bidezko igorpenak"</item>
- <item msgid="2363460595607829243">"Imitatu kokapena"</item>
+ <item msgid="2363460595607829243">"Asmatutako kokapena"</item>
<item msgid="3778165903878569143">"Irakurri memoria"</item>
<item msgid="555939881912035315">"Idatzi memorian"</item>
<item msgid="4281352581602735717">"Piztu pantaila"</item>
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Lo egiteko garaia"</item>
+ <item msgid="4152450357280759894">"Gidatzea"</item>
+ <item msgid="7096549258219399423">"Murgiltzailea"</item>
+ <item msgid="2760716776980432977">"Kudeatua"</item>
+ <item msgid="601734478369121764">"Izarra"</item>
+ <item msgid="6243809315432780521">"Egutegia"</item>
+ <item msgid="4913577903148415331">"Ordua"</item>
+ <item msgid="3653377604690057780">"Antzerkia"</item>
+ <item msgid="3843711267408385410">"Lorea"</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 0d06e99..cdf6185 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Entzumen-gailuen ezarpenak"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Lasterbidea eta audifonoekiko bateragarritasuna"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Aurrezarpena"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Zure audiologoak ez du aurrezarpenik programatu"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Ezin izan da eguneratu aurrezarpena"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio-irteera"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Audio-irteerari buruz"</string>
@@ -151,7 +152,7 @@
<string name="proxy_error" msgid="3615905975598084126">"Abisua"</string>
<string name="proxy_error_dismiss" msgid="4207430265140873078">"Ados"</string>
<string name="proxy_error_invalid_host" msgid="3814412792702059247">"Idatzi duzun ostalari-izena ez da baliozkoa."</string>
- <string name="proxy_error_invalid_exclusion_list" msgid="6096353559936226599">"Idatzi duzun salbuespen-zerrendak ez du formatu egokia. Idatzi kanpo utzitako domeinuen zerrenda, komaz bereizita."</string>
+ <string name="proxy_error_invalid_exclusion_list" msgid="6096353559936226599">"Idatzi duzun bazterketa-zerrendak ez du formatu egokia. Idatzi baztertzeko domeinuen zerrenda, komaz bereizita."</string>
<string name="proxy_error_empty_port" msgid="4250295137005082992">"Atakaren eremua bete behar duzu."</string>
<string name="proxy_error_empty_host_set_port" msgid="8886572276450900049">"Ataka eremuak hutsik egon behar du Ostalaria eremua ere hutsik badago."</string>
<string name="proxy_error_invalid_port" msgid="2830054691770209166">"Idatzi duzun ataka ez da baliozkoa."</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Lortu Erloju bidez desblokeatzea eginbideari buruzko informazio gehiago"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Gehitu erloju bat"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Kendu erlojua"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Hatz-marka eta aurpegi bidez desblokeatzea"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Aurpegi eta hatz-marka bidez desblokeatzea"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Laneko profila aurpegi eta hatz-marka bidez desblokeatzea"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Konfiguratu gabe"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Aurpegia eta hatz-markak gehitu dira"</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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_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>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Eremu pribatua konfiguratzen…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Gailua berrabiarazi nahi duzu?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFCaren erregistro xehatuak garapen-helburuetarako soilik dira. NFCari buruzko datu gehigarriak daude akatsen txostenetan, eta baliteke haiek informazio pribatua izatea. Ezarpen hori aldatzeko, berrabiarazi gailua."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Berrabiarazi"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Igorpena"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"islatzea"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Gaitu hari gabeko bistaratzea"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Egokituak"</string>
<string name="brightness" msgid="6216871641021779698">"Distira"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Distira egokitua"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Distira egokituari buruz"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Pantailaren distira automatikoki egokituko da inguruneko argiaren eta egiten ari zarenaren arabera. Eskuz aldatu nahi baduzu distira, mugitu graduatzailea distira egokituak zure hobespenak ikas ditzan."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Aktibatuta"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desaktibatuta"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Erabiltzaileak hautatua: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Hizketa"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Erakuslearen abiadura"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Bideo-jokoen kontrolagailua"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Birbideratu dardara"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Bidali dardara bideo-jokoen kontrolagailura hura konektatzean"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Egin aurrera, halere"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Utzi"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Luparen ezarpenak"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Hatz batekin mugitzea"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mugitu luparen eremua hatz bat arrastatuta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mugitu luparen eremua bi hatz arrastatuta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ez dago erabilgarri pantailaren zati bat soilik handitzean"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Zooma aplikatzeko, sakatu botoi bat"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Handitu pantaila bizkor edukia hobeto ikusteko"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Pantaila handitzeko:</b><br/> {0,number,integer}. Erabili lupa aktibatzeko lasterbidea.<br/> {1,number,integer}. Sakatu pantaila.<br/> {2,number,integer}. Arrastatu bi hatz pantailan zehar mugitzeko.<br/> {3,number,integer}. Atximurkatu pantaila bi hatz erabilita zooma doitzeko.<br/> {4,number,integer}. Erabili lupa desaktibatzeko lasterbidea.<br/><br/> <b>Pantaila une batez handitzeko:</b><br/> {0,number,integer}. Ziurtatu lupa mota pantaila oso gisa ezarrita dagoela.<br/> {1,number,integer}. Erabili lupa aktibatzeko lasterbidea.<br/> {2,number,integer}. Eduki sakatuta pantailako edozein puntu.<br/> {3,number,integer}. Arrastatu hatz bat pantailan zehar mugitzeko.<br/> {4,number,integer}. Jaso hatza lupa desaktibatzeko."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Zooma aktibatuta badago, pantailan aplika dezakezu.\n\n"<b>"Handitzeko"</b>", ireki zooma eta sakatu pantailako edozein puntu.\n"<ul><li>"Arrastatu bi hatz edo gehiago gora eta behera egiteko."</li>\n<li>"Atximurkatu pantaila bi hatz edo gehiago erabilita zooma doitzeko."</li></ul>\n\n<b>"Zooma unetxo batez aplikatzeko"</b>", ireki zooma eta eduki sakatuta pantailako edozein puntu.\n"<ul><li>"Arrastatu hatza toki batetik bestera joateko."</li>\n<li>"Altxatu hatza txikitzeko."</li></ul>\n\n"Ezin da aplikatu zooma teklatuan edo nabigazio-barran."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="NUM_PAGES">%2$d</xliff:g> orria"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Erabilerraztasuna botoiaren lasterbidea"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Bat ere ez}=1{1 programazio ezarri da}other{# programazio ezarri dira}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ez molestatzeko modua"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Lehentasunezko moduak"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Jaso jende eta aplikazio garrantzitsuen jakinarazpenak soilik"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Hautatu aktibazio mota"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Ordua"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Adibidez, \"9:30-17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Egutegia"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Adibidez, \"Egutegi pertsonala\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Mugatu etenaldiak"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Aktibatu ez molestatzeko modua"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmek eta multimedia-soinuek eten dezakete"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programazioak"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Ezabatu programazioak"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Ezabatu"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editatu"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programazioak"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programazioa"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Gehitu egutegi bat"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Erabili zure egutegia"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programazioa"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Ezarri programazio bat"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programazioa"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> h eta <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programazioa"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Isilarazi telefonoa ordu jakinetan"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Baimendu soinua duten etenaldiak"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokeatu oztopo bisualak"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Baimendu seinale bisualak"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Hala eta guztiz ere jasoko dituzun jakinarazpenak"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Egon kontzentratuta"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Ekintza gehiago"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Bistaratze-ezarpenak"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Bistaratze-aukerak"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"gaitu gai iluna"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Aldatu sistema eragilearen eta aplikazioen ezarpenak atzeko plano ilun batean testu argia bistaratzea hobesteko. Hala, begiak ez dira horrenbeste behartzen eta bateria nabarmen aurrezten da gailu batzuetan."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ez da aldaketarik egin pantailan}=1{{effect_1}}=2{{effect_1} eta {effect_2}}=3{{effect_1}, {effect_2} eta {effect_3}}other{{effect_1}, {effect_2} eta beste #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Iragazi etenak"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ez da etenik iragazten"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Iragazitako jakinarazpenen bistaratze-aukerak"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Ez molestatzeko modua aktibatuta dagoenean"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Ez egin soinurik jakinarazpenak jasotzean"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategoriak"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Beste batzuk"</string>
<string name="no_channels" msgid="4716199078612071915">"Aplikazio honek ez du argitaratu jakinarazpenik"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Erakutsi erabili gabeko kategoriak"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Aplikazioaren ezarpen gehiago"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Erakutsi erabili gabeko kategoriak"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ezkutatu erabili gabeko kategoriak"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Hautatutako aplikazioak"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Bat ere ez"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Guztiak"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Eman \"Ez molestatu\" ez aplikatzeko baimena aplikazioei"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Eten zaitzaketen aplikazioak"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Hautatu aplikazio gehiago"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Aldatu alarmak soilik modura ordubetez {time} arte}other{Aldatu alarmak soilik modura # orduz {time} arte}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Aldatu \"Alarmak soilik\" modura <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Aldatu \"Eten beti\" modura"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Aldatu izena"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Aldatu ikonoa"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Aldatu ikonoa"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Abisua"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Itxi"</string>
<string name="device_feedback" msgid="5351614458411688608">"Bidali gailu honi buruzko oharrak"</string>
@@ -4127,7 +4188,7 @@
<string name="ota_disable_automatic_update_summary" msgid="7803279951533276841">"Aplikatu eguneratzeak gailua berrabiaraztean"</string>
<string name="usage" msgid="287782903846013936">"Erabilera"</string>
<string name="cellular_data_usage" msgid="5874156338825285334">"Datu-konexioaren erabilera"</string>
- <string name="app_cellular_data_usage" msgid="7603292978956033926">"Aplikazioak erabilitako datuak"</string>
+ <string name="app_cellular_data_usage" msgid="7603292978956033926">"Aplikazioen datu-erabilera"</string>
<string name="wifi_data_usage" msgid="6868503699134605707">"Wifi-sareko datu-erabilera"</string>
<string name="non_carrier_data_usage" msgid="6494603202578414755">"Operadorearenak ez diren datuen erabilera"</string>
<string name="ethernet_data_usage" msgid="4552227880905679761">"Ethernet-datuen erabilera"</string>
@@ -4286,7 +4347,7 @@
<string name="system_navigation_title" msgid="4890381153527184636">"Nabigazio modua"</string>
<string name="swipe_up_to_switch_apps_title" msgid="6677266952021118342">"2 botoiko nabigazioa"</string>
<string name="swipe_up_to_switch_apps_summary" msgid="1415457307836359560">"Aplikazioa aldatzeko, pasatu hatza gora Hasiera botoian. Aplikazio guztiak ikusteko, pasatu hatza gora berriro. Atzera egiteko, sakatu Atzera botoia."</string>
- <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Segurtasuna eta larrialdiak"</string>
+ <string name="emergency_settings_preference_title" msgid="6183455153241187148">"Segurtasun fisikoa eta larrialdiak"</string>
<string name="emergency_dashboard_summary" msgid="401033951074039302">"SOS larrialdia, osasunari buruzko informazioa, alertak"</string>
<string name="edge_to_edge_navigation_title" msgid="714427081306043819">"Keinu bidezko nabigazioa"</string>
<string name="edge_to_edge_navigation_summary" msgid="818109176611921504">"Orri nagusira joateko, pasatu hatza pantailaren behealdetik gora. Aplikazioa aldatzeko, pasatu hatza pantailaren behealdetik gora eta eduki sakatuta une batez, guztiz altxatu aurretik. Atzera egiteko, pasatu hatza pantailaren ezkerreko edo eskuineko ertzetik beste aldera."</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Gailu honen datuen partizioa ext4-ra bihurtu behar da 16 kB-ko garatzaileentzako aukera erabili baino lehen. Modu horretan ezin da bermatu softwarearen osotasuna, eta baliteke telefonoan gordetako datuak arriskuan egotea sistema eragilearen abiarazlea desblokeatuta dagoen bitartean. 16 kB-ko aukera aktibatzeko, berriro berrabiarazi beharko da berrabiarazte honen ondoren. Modu horretan zaudenean, 4 kB-ko eta 16 kB-ko moduen artean aldatu ahal izango duzu behin soilik berrabiarazita. Modu horietan, eginbide batzuk desgaituko dira; beraz, baliteke aplikazio batzuek ez funtzionatzea. Gailua jatorrizko modura itzultzeko, aldatu berriro 4 kB-ko modura eta blokeatu sistema eragilearen abiarazlea. Gailuaren jatorrizko datuak berrezarriko dira. Gailuak Android behar bezala abiarazten duenean, desgaitu OEMa desblokeatzeko aukera Garatzaileentzako aukerak atalean. Berretsi ondoren, gailua xahutuko da eta fitxategi-sistema ext4-ra aldatuko da. Prozesu hori osatu ondoren, itzuli hona 16 kB-ko modua berriro gaitzeko."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Ezabatu datu guztiak"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Ezin izan da formateatu eta xahutu datu-partizioa ext4-ra."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Sistema eragilearen abiarazlea desblokeatu behar da 16 kB-ko modua erabiltzeko"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 kB-ko garatzaileentzako aukera erabili baino lehen, gailuaren sistema eragilearen abiarazlea desblokeatu behar da. Modu horretan ezin da bermatu softwarearen osotasuna, eta baliteke telefonoan gordetako datuak arriskuan egotea sistema eragilearen abiarazlea desblokeatuta dagoen bitartean. 16 kB-ko modua aktibatzean, erabiltzaile-datu eta -ezarpen guztiak xahutuko dira. Sistema eragilearen abiarazlea desblokeatu ondoren, gailua 2 aldiz berrabiarazi beharko da 16 kB-ko moduaren aukera aktibatzeko. Modu horretan zaudenean, 4 kB-ko eta 16 kB-ko moduen artean aldatu ahal izango duzu behin soilik berrabiarazita. Modu horietan, eginbide batzuk desgaituko dira; beraz, baliteke aplikazio batzuek ez funtzionatzea. Gailua jatorrizko modura itzultzeko, aldatu berriro 4 kB-ko modura eta blokeatu gailuaren sistema eragilearen abiarazlea edo OEMa. Gailuaren jatorrizko datuak berrezarriko dira. Desblokeatu sistema eragilearen abiarazlea eta saiatu berriro. Hori egiteko argibideak jasotzeko, joan <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> helbidera."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Orri-tamaina guztiekin bateragarria den 4 kB-ko modua erabiltzen"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Orri-tamaina guztiekin bateragarria den moduko 4 kB-ko moduan zaude. Modu horretan ezin da bermatu softwarearen osotasuna, eta baliteke telefonoan gordetako datuak arriskuan egotea sistema eragilearen abiarazlea desblokeatuta dagoen bitartean. Modu horietan, eginbide batzuk desgaituko dira; beraz, baliteke aplikazio batzuek ez funtzionatzea. Jatorrizko modura itzultzeko, blokeatu gailuaren sistema eragilearen abiarazlea. Informazio gehiago irakurtzeko, sakatu hau."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Orri-tamaina guztiekin bateragarria den moduko 4 kB-ko moduan zaude. Modu horretan ezin da bermatu softwarearen osotasuna, eta baliteke telefonoan gordetako datuak arriskuan egotea sistema eragilearen abiarazlea desblokeatuta dagoen bitartean. Modu horietan, eginbide batzuk desgaituko dira; beraz, baliteke aplikazio batzuek ez funtzionatzea. Jatorrizko modura itzultzeko, blokeatu gailuaren sistema eragilearen abiarazlea. Gailuaren jatorrizko datuak berrezarriko dira, eta jatorrizko ezarpenetara leheneratuko. Gailuak Android behar bezala abiarazten duenean, desgaitu OEMa desblokeatzeko aukera Garatzaileentzako aukerak atalean. Gailuak Android abiarazi ezin badu edo ezegonkorra bada, instala itzazu fabrikako firmwarearen azken irudiak (<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> helbidetik) gailuan. Bestela, erabili <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> eta hautatu \"Wipe Device\" (xahutu gailua), \"Lock Bootloader\" (blokeatu sistema eragilearen abiarazlea) eta \"Force Flash all partitions\" (behartu partizio guztiak berriro instalatzera)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Orri-tamaina guztiekin bateragarria den 16 kB-ko modua erabiltzen"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Orri-tamaina guztiekin bateragarria den moduko 16 kB-ko moduan zaude. Modu horretan ezin da bermatu softwarearen osotasuna, eta baliteke telefonoan gordetako datuak arriskuan egotea sistema eragilearen abiarazlea desblokeatuta dagoen bitartean. Modu horietan, eginbide batzuk desgaituko dira; beraz, baliteke aplikazio batzuek ez funtzionatzea. Jatorrizko modura itzultzeko, aldatu berriro 4 kB-ko modura eta blokeatu gailuaren sistema eragilearen abiarazlea. Informazio gehiago irakurtzeko, sakatu hau."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Orri-tamaina guztiekin bateragarria den moduko 16 kB-ko moduan zaude. Modu horretan ezin da bermatu softwarearen osotasuna, eta baliteke telefonoan gordetako datuak arriskuan egotea sistema eragilearen abiarazlea desblokeatuta dagoen bitartean. Modu horietan, eginbide batzuk desgaituko dira; beraz, baliteke aplikazio batzuek ez funtzionatzea. Jatorrizko modura itzultzeko, aldatu berriro 4 kB-ko modura eta blokeatu gailuaren sistema eragilearen abiarazlea. Gailuaren jatorrizko datuak berrezarriko dira, eta jatorrizko ezarpenetara leheneratuko. Gailuak Android behar bezala abiarazten duenean, desgaitu OEMa desblokeatzeko aukera Garatzaileentzako aukerak atalean. Gailuak Android abiarazi ezin badu edo ezegonkorra bada, instala itzazu fabrikako firmwarearen azken irudiak (<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> helbidetik) gailuan. Bestela, erabili <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> eta hautatu \"Wipe Device\" (xahutu gailua), \"Lock Bootloader\" (blokeatu sistema eragilearen abiarazlea) eta \"Force Flash all partitions\" (behartu partizio guztiak berriro instalatzera)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Orri-tamaina guztiekin bateragarria den 16 kB-ko modua"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Irakurri informazio gehiago"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Akatsen txostenen kudeatzailea"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Erabili aplikazioak ainguratzeko eginbidea"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Erabili garatzaileentzako aukerak"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Erabili inprimatze-zerbitzua"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Baimendu erabiltzaile bat baino gehiago"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"eman, baimena, onartu, hainbat, erabiltzaile, bat, baino, gehiago"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"hainbat, erabiltzaile, profil, pertsona, kontu, aldatu, asko"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Erabili hari gabeko arazketa"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml
index cea3bff..6e283ef 100644
--- a/res/values-fa/arrays.xml
+++ b/res/values-fa/arrays.xml
@@ -207,9 +207,9 @@
<item msgid="3843484466100107397">"فوکوس صدا"</item>
<item msgid="617344340943430125">"میزان کنترل"</item>
<item msgid="1249691739381713634">"میزان صدا"</item>
- <item msgid="6485000384018554920">"حجم حلقه"</item>
+ <item msgid="6485000384018554920">"صدای زنگ"</item>
<item msgid="3378000878531336372">"میزان صدای رسانه"</item>
- <item msgid="5272927168355895681">"میزان صدای زنگ ساعت"</item>
+ <item msgid="5272927168355895681">"صدای زنگ هشدار"</item>
<item msgid="4422070755065530548">"میزان صدای اعلان"</item>
<item msgid="3250654589277825306">"میزان صدای بلوتوث"</item>
<item msgid="4212187233638382465">"بیدار باش"</item>
@@ -274,9 +274,9 @@
<item msgid="5651140069431283570">"فوکوس صدا"</item>
<item msgid="745291221457314879">"میزان صدای اصلی"</item>
<item msgid="4722479281326245754">"میزان صدای مکالمه"</item>
- <item msgid="6749550886745567276">"میزان صدای زنگ"</item>
+ <item msgid="6749550886745567276">"صدای زنگ"</item>
<item msgid="2218685029915863168">"میزان صدای رسانه"</item>
- <item msgid="4266577290496513640">"میزان صدای زنگ ساعت"</item>
+ <item msgid="4266577290496513640">"صدای زنگ هشدار"</item>
<item msgid="8608084169623998854">"میزان صدای اعلان"</item>
<item msgid="7948784184567841794">"میزان صدای بلوتوث"</item>
<item msgid="1148968792599973150">"بیدار باش"</item>
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"وقت خواب"</item>
+ <item msgid="4152450357280759894">"رانندگی"</item>
+ <item msgid="7096549258219399423">"فراگیر"</item>
+ <item msgid="2760716776980432977">"مدیریتشده"</item>
+ <item msgid="601734478369121764">"ستاره"</item>
+ <item msgid="6243809315432780521">"تقویم"</item>
+ <item msgid="4913577903148415331">"زمان"</item>
+ <item msgid="3653377604690057780">"تئاتر"</item>
+ <item msgid="3843711267408385410">"گل"</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 a7b2b66..67e13ea 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -23,7 +23,7 @@
<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>
+ <string name="device_info_protected_single_press" msgid="3810785480060743677">"برای نمایش اطلاعات، تکضرب بزنید"</string>
<string name="show_dev_countdown" msgid="2936506773086395069">"{count,plural, =1{اکنون # گام تا توسعهدهنده شدن فاصله دارید.}one{اکنون # گام تا توسعهدهنده شدن فاصله دارید.}other{اکنون # گام تا توسعهدهنده شدن فاصله دارید.}}"</string>
<string name="show_dev_on" msgid="2840850085134853754">"شما اکنون یک برنامهنویس هستید!"</string>
<string name="show_dev_already" msgid="7041756429707644630">"نیازی نیست، شما در حال حاضر یک برنامهنویس هستید."</string>
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"تنظیمات دستگاه سمعک"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"میانبر، سازگاری با سمعک"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"پیشتنظیم"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"متخصص شنواییسنجی شما هیچ پیشتنظیمی برنامهریزی نکرده است"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"پیشتنظیم بهروزرسانی نشد"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"خروجی صوتی"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"درباره خروجی صوتی"</string>
@@ -93,9 +94,9 @@
<string name="bluetooth_no_devices_found" msgid="7704539337219953182">"هیچ دستگاه بلوتوثی در این اطراف پیدا نشد."</string>
<string name="bluetooth_notif_ticker" msgid="209515545257862858">"درخواست مرتبطسازی"</string>
<string name="bluetooth_notif_title" msgid="1196532269131348647">"درخواست مرتبطسازی"</string>
- <string name="bluetooth_notif_message" msgid="5584717784198086653">"برای مرتبطسازی با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ضربه بزنید."</string>
+ <string name="bluetooth_notif_message" msgid="5584717784198086653">"برای مرتبطسازی با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> تکضرب بزنید."</string>
<string name="bluetooth_devices_card_off_title" msgid="1320149821945129127">"بلوتوث خاموش است"</string>
- <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"برای روشن کردن آن، ضربه بزنید"</string>
+ <string name="bluetooth_devices_card_off_summary" msgid="2276527382891105858">"برای روشن کردن آن، تکضرب بزنید"</string>
<string name="device_picker" msgid="2427027896389445414">"انتخاب دستگاه بلوتوث"</string>
<string name="bluetooth_ask_enablement" msgid="1529030199895339199">"<xliff:g id="APP_NAME">%1$s</xliff:g> میخواهد بلوتوث را روشن کند"</string>
<string name="bluetooth_ask_disablement" msgid="1879788777942714761">"<xliff:g id="APP_NAME">%1$s</xliff:g> میخواهد بلوتوث را خاموش کند"</string>
@@ -419,10 +420,10 @@
<string name="security_settings_remoteauth_enroll_introduction_more" msgid="1644105894631257595">"بیشتر"</string>
<string name="security_settings_remoteauth_enroll_introduction_how_title" msgid="6604152528267830349">"روش کار"</string>
<string name="security_settings_remoteauth_enroll_introduction_info_lock_open" msgid="8570511335628725116">"قفل ساعتتان باید باز باشد، ساعت روی مچ شما باشد، و به این تلفن نزدیک باشد. وقتی ساعت روی مچ شما است دیگر نیازی نیست قفل آن را باز کنید."</string>
- <string name="security_settings_remoteauth_enroll_introduction_info_notifications" msgid="4298855831154039694">"وقتی قفل این تلفن باز شود، اعلانی در ساعتتان دریافت میکنید. اگر قفل تلفن بدون اینکه شما خواسته باشید باز شد، روی اعلان ضربه بزنید تا تلفن دوباره قفل شود."</string>
+ <string name="security_settings_remoteauth_enroll_introduction_info_notifications" msgid="4298855831154039694">"وقتی قفل این تلفن باز شود، اعلانی در ساعتتان دریافت میکنید. اگر قفل تلفن بدون اینکه شما خواسته باشید باز شد، روی اعلان تکضرب بزنید تا تلفن دوباره قفل شود."</string>
<string name="security_settings_remoteauth_enroll_introduction_youre_in_control_title" msgid="7974976673323638524">"کنترل در دست شما است"</string>
<string name="security_settings_remoteauth_enroll_introduction_info_remove_watch" msgid="1888318677088986801">"همواره میتوانید در «تنظیمات» ساعتتان را از «قفلگشایی با ساعت» بردارید"</string>
- <string name="security_settings_remoteauth_enroll_introduction_animation_tap_notification" msgid="1597397399097952974">"روی اعلان ضربه بزنید"</string>
+ <string name="security_settings_remoteauth_enroll_introduction_animation_tap_notification" msgid="1597397399097952974">"روی اعلان تکضرب بزنید"</string>
<string name="security_settings_remoteauth_enroll_introduction_animation_swipe_up" msgid="2129230804324634653">"در صفحه قفل تند بهبالا بکشید"</string>
<string name="security_settings_remoteauth_enroll_enrolling_title" msgid="313016997943607675">"ساعت را انتخاب کنید"</string>
<string name="security_settings_remoteauth_enroll_enrolling_list_heading" msgid="8227585438932911013">"ساعتهای دردسترس"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"درباره «قفلگشایی با ساعت» بیشتر بدانید"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"افزودن ساعت"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"برداشتن ساعت"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"قفلگشایی با اثر انگشت و چهره"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"قفلگشایی با چهره و اثر انگشت"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"«قفلگشایی با اثر انگشت و چهره» برای نمایه کاری"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"راهاندازی لازم است"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"چهره و چند اثر انگشت اضافه شده است"</string>
@@ -554,7 +555,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>
@@ -583,7 +584,7 @@
<string name="private_space_hide_page_summary" msgid="6247773353685839242">"برای اینکه دیگران متوجه نشوند فضای خصوصی در دستگاهتان روشن است، میتوانید آن را از فهرست برنامهها پنهان کنید"</string>
<string name="private_space_access_header" msgid="1077082416567150819">"دسترسی به فضای خصوصی هنگام پنهان بودن"</string>
<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_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_on_summary" msgid="3450844101901438867">"روشن"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"دستگاه بازراهاندازی شود؟"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"گزارشگیری NFC دقیق فقط برای اهداف توسعه درنظر گرفته شده است. دادههای NFC تکمیلی در گزارشهای اشکال لحاظ میشود که ممکن است حاوی اطلاعات خصوصی باشد. برای تغییر این تنظیم، دستگاهتان را بازراهاندازی کنید."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"بازراهاندازی"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"پخش محتوا"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"قرینهسازی"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"فعال کردن نمایش بیسیم"</string>
@@ -887,7 +916,7 @@
<string name="android_beam_on_summary" msgid="6067720758437490896">"آماده برای انتقال محتوای برنامه از طریق NFC"</string>
<string name="android_beam_off_summary" msgid="5693961375631325042">"خاموش"</string>
<string name="nfc_disabled_summary" msgid="8737797364522502351">"در دسترس نیست زیرا NFC خاموش است"</string>
- <string name="android_beam_explained" msgid="5684416131846701256">"اگر این ویژگی روشن باشد، میتوانید با نگهداشتن دستگاهها نزدیک به یکدیگر، محتوای برنامه را به دستگاه مجهز به NFC دیگری با پرتو ارسال کنید. مثلاً، میتوانید صفحات وب، ویدیوهای YouTube، مخاطبین و موارد دیگر را ازطریق پرتو ارسال کنید.\n\n کافی است دستگاهها را نزدیک هم بگذارید (معمولاً پشت به پشت) و سپس روی صفحه ضربه بزنید. برنامه تعیین میکند که چه چیزی ازطریق پرتو ارسال شود."</string>
+ <string name="android_beam_explained" msgid="5684416131846701256">"اگر این ویژگی روشن باشد، میتوانید با نگهداشتن دستگاهها نزدیک به یکدیگر، محتوای برنامه را به دستگاه مجهز به NFC دیگری با پرتو ارسال کنید. مثلاً، میتوانید صفحات وب، ویدیوهای YouTube، مخاطبین و موارد دیگر را ازطریق پرتو ارسال کنید.\n\n کافی است دستگاهها را نزدیک هم بگذارید (معمولاً پشت به پشت) و سپس روی صفحه تکضرب بزنید. برنامه تعیین میکند که چه چیزی ازطریق پرتو ارسال شود."</string>
<string name="wifi_settings" msgid="8313301946393559700">"Wi‑Fi"</string>
<string name="wifi_settings_primary_switch_title" msgid="628360786662947258">"استفاده از Wi-Fi"</string>
<string name="wifi_settings_category" msgid="3523464780563778321">"تنظیمات Wi-Fi"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"تطبیقی"</string>
<string name="brightness" msgid="6216871641021779698">"سطح روشنایی"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"روشنایی تطبیقی"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"درباره «روشنایی تطبیقی»"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"روشنایی صفحهنمایش بهطور خودکار با محیط و فعالیتهایتان تنظیم میشود. میتوانید لغزاننده را بهطور دستی حرکت دهید تا روشنایی تطبیقی ترجیح شما را دریابد."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"روشن"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"خاموش"</string>
@@ -1206,7 +1236,7 @@
<string name="force_high_refresh_rate_desc" msgid="7794566420873814875">"بالاترین نرخ بازآوری برای پاسخگویی بهبودیافته لمس و کیفیت پویانمایی. مصرف باتری را افزایش میدهد."</string>
<string name="adaptive_sleep_title" msgid="2987961991423539233">"توجه به صفحه"</string>
<string name="adaptive_sleep_title_no_permission" msgid="1719759921214237016">"دسترسی به دوربین لازم است"</string>
- <string name="adaptive_sleep_summary_no_permission" msgid="5822591289468803691">"ویژگی «توجه به صفحه» باید به دوربین دسترسی داشته باشد. برای مدیریت مجوزهای «خدمات شخصیسازی دستگاه» ضربه بزنید"</string>
+ <string name="adaptive_sleep_summary_no_permission" msgid="5822591289468803691">"ویژگی «توجه به صفحه» باید به دوربین دسترسی داشته باشد. برای مدیریت مجوزهای «خدمات شخصیسازی دستگاه» تکضرب بزنید"</string>
<string name="adaptive_sleep_manage_permission_button" msgid="1404510197847664846">"مدیریت اجازهها"</string>
<string name="adaptive_sleep_description" msgid="1835321775327187860">"باعث میشود تازمانیکه فردی به صفحهنمایش نگاه میکند، صفحه خاموش نشود"</string>
<string name="adaptive_sleep_privacy" msgid="7664570136417980556">"«توجه به صفحه» با استفاده از دوربین جلو متوجه میشود که آیا فردی درحال تماشای صفحهنمایش است یا نه. این ویژگی در دستگاه کار میکند و تصاویر هرگز ذخیره نمیشوند و به Google فرستاده نمیشود."</string>
@@ -1216,7 +1246,7 @@
<string name="auto_rotate_camera_lock_title" msgid="5369003176695105872">"دوربین قفل است"</string>
<string name="auto_rotate_camera_lock_summary" msgid="5699491516271544672">"برای «تشخیص چهره»، قفل دوربین باید باز باشد"</string>
<string name="adaptive_sleep_camera_lock_summary" msgid="8417541183603618098">"قفل دوربین باید برای «توجه به صفحه» باز باشد"</string>
- <string name="auto_rotate_summary_no_permission" msgid="1025061139746254554">"دسترسی به دوربین برای «تشخیص چهره» الزامی است. برای مدیریت اجازههای «خدمات شخصیسازی دستگاه» ضربه بزنید"</string>
+ <string name="auto_rotate_summary_no_permission" msgid="1025061139746254554">"دسترسی به دوربین برای «تشخیص چهره» الزامی است. برای مدیریت اجازههای «خدمات شخصیسازی دستگاه» تکضرب بزنید"</string>
<string name="auto_rotate_manage_permission_button" msgid="2591146085906382385">"مدیریت اجازهها"</string>
<string name="night_display_title" msgid="8532432776487216581">"نور شب"</string>
<string name="night_display_text" msgid="4789324042428095383">"«نور شب» تهرنگ کهربایی به صفحهنمایش شما میبخشد. این کار باعث میشود نگاه کردن به صفحه در نور کم آسانتر شود و ممکن است کمک کند آسانتر به خواب بروید."</string>
@@ -1861,7 +1891,7 @@
<string name="service_stop_description" msgid="6327742632400026677">"این سرویس توسط برنامهٔ خود سرویس راهاندازی شد. توقف آن ممکن است باعث شود برنامه کار نکند."</string>
<string name="heavy_weight_stop_description" msgid="3086419998820881290">"این برنامه را نمیتوان به صورت ایمن متوقف کرد. در صورت متوقف کردن آن، ممکن است برخی از کارهای اخیر خود را از دست بدهید."</string>
<string name="background_process_stop_description" msgid="4792038933517438037">"این یک فرآیند برنامه قدیمی است که در صورت نیاز دوباره به آن هنوز اجرا میشود. معمولاً دلیلی برای توقف آن وجود ندارد."</string>
- <string name="service_manage_description" msgid="6615788996428486121">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: هماکنون درحال استفاده است. برای کنترل آن روی تنظیمات ضربه بزنید."</string>
+ <string name="service_manage_description" msgid="6615788996428486121">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: هماکنون درحال استفاده است. برای کنترل آن روی تنظیمات تکضرب بزنید."</string>
<string name="main_running_process_description" msgid="6685973937935027773">"فرآیند اصلی در حال استفاده است."</string>
<string name="process_service_in_use_description" msgid="4210957264507014878">"سرویس <xliff:g id="COMP_NAME">%1$s</xliff:g> در حال استفاده است."</string>
<string name="process_provider_in_use_description" msgid="6730020083976048028">"ارائه دهنده <xliff:g id="COMP_NAME">%1$s</xliff:g> در حال استفاده است."</string>
@@ -1915,13 +1945,13 @@
<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_summary" msgid="5276968646031591058">"برای جابهجایی عناصر، روی آنها ضربه بزنید و انگشتتان را روی صفحه لمسی بکشید"</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_summary" msgid="6048648562887499036">"وقتی بهپایین پیمایش کنید، محتوا بهبالا حرکت میکند"</string>
<string name="trackpad_bottom_right_tap_title" msgid="6275428879042702880">"ضربه به راست پایین"</string>
- <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"برای گزینههای بیشتر، روی پایین گوشه چپ صفحه لمسی ضربه بزنید"</string>
+ <string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"برای گزینههای بیشتر، روی پایین گوشه چپ صفحه لمسی تکضرب بزنید"</string>
<string name="trackpad_pointer_speed" msgid="7786579408631352625">"سرعت اشارهگر"</string>
<string name="pointer_fill_style" msgid="8413840032931637595">"سبک رنگ نشانگر"</string>
<string name="pointer_fill_style_black_button" msgid="4540815366995820960">"تغییر سبک رنگ نشانگر به سیاه"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -1998,7 +2034,7 @@
<string name="user_dict_settings_edit_dialog_title" msgid="316493656442362284">"ویرایش کلمه"</string>
<string name="user_dict_settings_context_menu_edit_title" msgid="4909198741914531509">"ویرایش"</string>
<string name="user_dict_settings_context_menu_delete_title" msgid="651550824433043545">"حذف"</string>
- <string name="user_dict_settings_empty_text" msgid="86562873609647919">"واژهای در واژهنامه کاربر ندارید. برای افزودن واژه، روی دکمه افزودن (+) ضربه بزنید."</string>
+ <string name="user_dict_settings_empty_text" msgid="86562873609647919">"واژهای در واژهنامه کاربر ندارید. برای افزودن واژه، روی دکمه افزودن (+) تکضرب بزنید."</string>
<string name="user_dict_settings_all_languages" msgid="8563387437755363526">"برای همه زبانها"</string>
<string name="user_dict_settings_more_languages" msgid="5378870726809672319">"زبانهای بیشتر…"</string>
<string name="testing" msgid="6294172343766732037">"تست کردن"</string>
@@ -2060,7 +2096,7 @@
<string name="bt_hci_snoop_log_filtered_mode_disabled_summary" msgid="8824952559433361848">"برای تغییر این گزینه، حالت گزارش تجسس Bluetooth HCI را روی «فعال فیلترشده» تنظیم کنید"</string>
<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="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>
@@ -2072,7 +2108,7 @@
<string name="accessibility_screen_magnification_always_on_summary" msgid="306908451430863049">"حین تعویض برنامه، ذرهبین روشن میماند و زومپس میشود"</string>
<string name="accessibility_screen_magnification_always_on_unavailable_summary" msgid="3844732482037416038">"وقتی فقط بخشی از صفحه درشتنمایی میشود دردسترس نیست"</string>
<string name="accessibility_screen_magnification_joystick_title" msgid="1803769708582404964">"دسته کنترل"</string>
- <string name="accessibility_screen_magnification_joystick_summary" msgid="4640300148573982720">"ذرهبین را فعال کنید و آن را با دسته کنترل روی صفحه جابهجا کنید. ضربه بزنید و نگه دارید، سپس دسته کنترل را برای کنترل کردن ذرهبین بکشید. برای جابهجا کردن خود دسته کنترل، ضربه بزنید و بکشید."</string>
+ <string name="accessibility_screen_magnification_joystick_summary" msgid="4640300148573982720">"ذرهبین را فعال کنید و آن را با دسته کنترل روی صفحه جابهجا کنید. تکضرب بزنید و نگه دارید، سپس دسته کنترل را برای کنترل کردن ذرهبین بکشید. برای جابهجا کردن خود دسته کنترل، تکضرب بزنید و بکشید."</string>
<string name="accessibility_screen_magnification_about_title" msgid="8857919020223505415">"درباره درشتنمایی"</string>
<string name="accessibility_screen_magnification_footer_learn_more_content_description" msgid="924848332575978463">"درباره درشتنمایی بیشتر بدانید"</string>
<string name="accessibility_magnification_mode_title" msgid="8446475127807168063">"نوع درشتنمایی"</string>
@@ -2084,9 +2120,9 @@
<string name="accessibility_magnification_mode_dialog_option_full_screen" msgid="4892487869954032029">"درشتنمایی تمامصفحه"</string>
<string name="accessibility_magnification_mode_dialog_option_window" msgid="4492443201099153362">"درشتنمایی بخشی از صفحه"</string>
<string name="accessibility_magnification_mode_dialog_option_switch" msgid="561043521011229424">"جابهجایی بین تمامصفحه و نیمصفحه"</string>
- <string name="accessibility_magnification_area_settings_mode_switch_summary" msgid="2885238806099080966">"برای جابهجایی بین دو گزینه، روی دکمه جابهجایی ضربه بزنید"</string>
+ <string name="accessibility_magnification_area_settings_mode_switch_summary" msgid="2885238806099080966">"برای جابهجایی بین دو گزینه، روی دکمه جابهجایی تکضرب بزنید"</string>
<string name="accessibility_magnification_switch_shortcut_title" msgid="3671432048806533079">"به دکمه دسترسپذیری میروید؟"</string>
- <string name="accessibility_magnification_switch_shortcut_message" msgid="7718653917415163833">"استفاده از سهضربه برای درشتنمایی بخشی از صفحه باعث میشود تایپ کردن و دیگر کنشها با تأخیر انجام شود.\n\nدکمه دسترسپذیری در صفحه بالای برنامههای دیگر شناور است. برای درشتنمایی، روی آن ضربه بزنید."</string>
+ <string name="accessibility_magnification_switch_shortcut_message" msgid="7718653917415163833">"استفاده از سهضربه برای درشتنمایی بخشی از صفحه باعث میشود تایپ کردن و دیگر کنشها با تأخیر انجام شود.\n\nدکمه دسترسپذیری در صفحه بالای برنامههای دیگر شناور است. برای درشتنمایی، روی آن تکضرب بزنید."</string>
<string name="accessibility_magnification_switch_shortcut_positive_button" msgid="2446942190957296957">"رفتن به دکمه دسترسپذیری"</string>
<string name="accessibility_magnification_switch_shortcut_negative_button" msgid="7115794462123071594">"استفاده از سهضربه"</string>
<string name="accessibility_magnification_triple_tap_warning_title" msgid="8484669851397296597">"این کار ممکن است باعث کند شدن صفحهکلید شود"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"درهرصورت ادامه داده شود"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"لغو"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"تنظیمات درشتنمایی"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"حرکت افقی با یک انگشت"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"ذرهبین را با ۱ انگشت جابهجا کنید"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"برای حرکت در صفحه، ۱ انگشت را بکشید"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"با کشیدن یک انگشت، درشتنمایی را جابهجا کنید."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"با کشیدن دو انگشت، درشتنمایی را جابهجا کنید."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"وقتی فقط بخشی از صفحه درشتنمایی میشود دردسترس نیست"</string>
@@ -2114,11 +2151,13 @@
<string name="accessibility_text_reading_conversation_message_2" msgid="8112160435318635856">"داریم به ساحل میرویم. شما هم میآیید؟"</string>
<string name="accessibility_screen_option" msgid="8465307075278878145">"گزینهها"</string>
<string name="accessibility_preference_magnification_summary" msgid="2875518904115896888">"زومپیش روی صفحه"</string>
- <string name="accessibility_screen_magnification_short_summary" msgid="2207048420669939150">"برای بزرگنمایی، ۳ بار ضربه بزنید"</string>
- <string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"برای بزرگنمایی، روی دکمهای ضربه بزنید"</string>
+ <string name="accessibility_screen_magnification_short_summary" msgid="2207048420669939150">"برای بزرگنمایی، ۳ بار تکضرب بزنید"</string>
+ <string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"برای بزرگنمایی، روی دکمهای تکضرب بزنید"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"بهسرعت صفحه را بزرگ کنید تا محتوا درشتتر نمایش داده شود"</string>
- <string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>برای زومپیش کردن:</b><br/> {0,number,integer}. برای فعال کردن درشتنمایی، از میانبر استفاده کنید<br/> {1,number,integer}. روی صفحه ضربه بزنید<br/> {2,number,integer}. برای حرکت کردن در صفحه، ۲ انگشت را بکشید<br/> {3,number,integer}. برای تنظیم کردن زوم، ۲ انگشت را ازهم دور یا بههم نزدیک کنید<br/> {4,number,integer}. برای توقف درشتنمایی از میانبراستفاده کنید<br/><br/> <b>برای زومپیش موقت:</b><br/> {0,number,integer}. مطمئن شوید نوع درشتنمایی روی تمامصفحه تنظیم شده باشد<br/> {1,number,integer}. برای فعال کردن درشتنمایی، از میانبر استفاده کنید<br/> {2,number,integer}. جایی از صفحه را لمس کنید و نگه دارید<br/> {3,number,integer}. برای حرکت کردن در صفحه، انگشت را بکشید<br/> {4,number,integer}. برای متوقف کردن درشتنمایی، انگشتتان را بردارید"</string>
- <string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"با روشن کردن درشتنمایی، میتوانید روی صفحه زومپیش کنید.\n\n"<b>"برای زوم کردن"</b>"، درشتنمایی را روشن کنید و روی جایی از صفحه ضربه بزنید.\n"<ul><li>"برای پیمایش، دو یا چند انگشتتان را روی صفحه بکشید "</li>\n<li>"برای تنظیم کردن زوم، دو یا چند انگشتتان را بههم نزدیک کنید"</li></ul>\n\n<b>"برای زوم موقت"</b>"، درشتنمایی را روشن کنید، سپس جایی از صفحه را لمس کنید و نگهدارید.\n"<ul><li>"برای حرکت در صفحه، انگشتتان را روی صفحه بکشید"</li>\n<li>"برای زومپس کردن، انگشتتان را بردارید"</li></ul>\n\n"نمیتوانید صفحهکلید یا نوار پیمایش را کوچک کنید."</string>
+ <string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>برای زومپیش کردن:</b><br/> {0,number,integer}. برای فعال کردن درشتنمایی، از میانبر استفاده کنید<br/> {1,number,integer}. روی صفحه تکضرب بزنید<br/> {2,number,integer}. برای حرکت کردن در صفحه، ۲ انگشت را بکشید<br/> {3,number,integer}. برای تنظیم کردن زوم، ۲ انگشت را ازهم دور یا بههم نزدیک کنید<br/> {4,number,integer}. برای توقف درشتنمایی از میانبراستفاده کنید<br/><br/> <b>برای زومپیش موقت:</b><br/> {0,number,integer}. مطمئن شوید نوع درشتنمایی روی تمامصفحه تنظیم شده باشد<br/> {1,number,integer}. برای فعال کردن درشتنمایی، از میانبر استفاده کنید<br/> {2,number,integer}. جایی از صفحه را لمس کنید و نگه دارید<br/> {3,number,integer}. برای حرکت کردن در صفحه، انگشت را بکشید<br/> {4,number,integer}. برای متوقف کردن درشتنمایی، انگشتتان را بردارید"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>برای زومپیش کردن:</b><br/> {0,number,integer}. برای فعال کردن درشتنمایی، از میانبر استفاده کنید<br/> {1,number,integer}. روی صفحه تکضرب بزنید<br/> {2,number,integer}. برای حرکت کردن در صفحه، ۲ انگشت را بکشید<br/> {3,number,integer}. برای تنظیم بزرگنمایی، ۲ انگشت را ازهم دور یا بههم نزدیک کنید<br/> {4,number,integer}. از میانبر برای متوقف کردن درشتنمایی استفاده کنید<br/><br/> همچنین میتوانید موقتاً زومپیش کنید و کارهای دیگری انجام دهید."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>برای زومپیش کردن:</b><br/> {0,number,integer}. برای فعال کردن درشتنمایی، از میانبر استفاده کنید<br/> {1,number,integer}. روی صفحه تکضرب بزنید<br/> {2,number,integer}. برای حرکت کردن در صفحه، ۱ یا ۲ انگشت را بکشید<br/> {3,number,integer}. برای تنظیم بزرگنمایی، ۲ انگشت را ازهم دور یا بههم نزدیک کنید<br/> {4,number,integer}. از میانبر برای متوقف کردن درشتنمایی استفاده کنید<br/><br/> همچنین میتوانید موقتاً زومپیش کنید و کارهای دیگری انجام دهید."</string>
+ <string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"با روشن کردن درشتنمایی، میتوانید روی صفحه زومپیش کنید.\n\n"<b>"برای زوم کردن"</b>"، درشتنمایی را روشن کنید و روی جایی از صفحه تکضرب بزنید.\n"<ul><li>"برای پیمایش، دو یا چند انگشتتان را روی صفحه بکشید "</li>\n<li>"برای تنظیم کردن زوم، دو یا چند انگشتتان را بههم نزدیک کنید"</li></ul>\n\n<b>"برای زوم موقت"</b>"، درشتنمایی را روشن کنید، سپس جایی از صفحه را لمس کنید و نگهدارید.\n"<ul><li>"برای حرکت در صفحه، انگشتتان را روی صفحه بکشید"</li>\n<li>"برای زومپس کردن، انگشتتان را بردارید"</li></ul>\n\n"نمیتوانید صفحهکلید یا نوار پیمایش را کوچک کنید."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"صفحه <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">"میانبر دکمه دسترسپذیری"</string>
<string name="accessibility_tutorial_dialog_title_volume" msgid="1032323517963429981">"میانبر کلیدهای میزان صدا"</string>
@@ -2127,12 +2166,12 @@
<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>
- <string name="accessibility_tutorial_dialog_message_floating_button" msgid="6631371483819355514">"برای استفاده از این ویژگی، روی دکمه دسترسپذیری در صفحهنمایش ضربه بزنید"</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_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>
- <string name="accessibility_tutorial_dialog_twofinger_doubletap_instruction" msgid="1007756360115974649">"برای راهاندازی یا متوقف کردن درشتنمایی، سریع با %1$d انگشت دوبار روی صفحهنمایش ضربه بزنید"</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 انگشت دوبار روی صفحهنمایش تکضرب بزنید"</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_message_gesture" msgid="4148062210755434854">"برای استفاده از این ویژگی، با ۲ انگشت از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۲ انگشت تند بهبالا بکشید و نگه دارید."</string>
@@ -2149,9 +2188,9 @@
<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_software" msgid="8315934725362849788">"روی دکمه دسترسپذیری <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> در پایین صفحهنمایش تکضرب بزنید. برای جابهجایی بین ویژگیها، دکمه دسترسپذیری را لمس کنید و نگه دارید."</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_gesture" msgid="8292555254353761635">"با ۲ انگشت، از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۲ انگشت تند بهبالا بکشید و نگه دارید."</string>
<string name="accessibility_shortcut_edit_dialog_summary_software_gesture_talkback" msgid="84483464524360845">"با ۳ انگشت، از پایین صفحه تند بهبالا بکشید.\n\nبرای جابهجایی بین ویژگیها، با ۳ انگشت تند بهبالا بکشید و نگه دارید."</string>
<string name="accessibility_shortcut_edit_dialog_summary_gesture" msgid="2081123009255579884">"{count,plural, =1{از پایین صفحهنمایش تند بهبالا بکشید. برای جابهجایی بین ویژگیها، تند بهبالا بکشید و نگه دارید.}one{از پایین صفحهنمایش با # انگشت تند بهبالا بکشید. برای جابهجایی بین ویژگیها، با # انگشت تند بهبالا بکشید و نگه دارید.}other{از پایین صفحهنمایش با # انگشت تند بهبالا بکشید. برای جابهجایی بین ویژگیها، با # انگشت تند بهبالا بکشید و نگه دارید.}}"</string>
@@ -2166,14 +2205,14 @@
<string name="accessibility_shortcut_edit_dialog_summary_hardware" msgid="2503134386397991634">"هردو کلید میزان صدا را فشار دهید و نگه دارید"</string>
<string name="accessibility_shortcut_edit_dialog_title_two_finger_double_tap" msgid="2271778556854020996">"با دو انگشت دوضربه روی صفحهنمایش بزنید"</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_summary_two_finger_double_tap" msgid="385404127425496362">"سریع با %1$d انگشت دوبار روی صفحهنمایش تکضرب بزنید"</string>
<string name="accessibility_shortcut_edit_screen_title_triple_tap" msgid="3314488747597058942">"سهضربه"</string>
- <string name="accessibility_shortcut_edit_screen_summary_triple_tap" msgid="4839204951599629871">"سریع %1$d بار روی صفحهنمایش ضربه بزنید. این کار ممکن است سرعت دستگاه را کاهش دهد."</string>
+ <string name="accessibility_shortcut_edit_screen_summary_triple_tap" msgid="4839204951599629871">"سریع %1$d بار روی صفحهنمایش تکضرب بزنید. این کار ممکن است سرعت دستگاه را کاهش دهد."</string>
<string name="accessibility_shortcut_two_finger_double_tap_keyword" msgid="6271718715836961167">"دوضربه %1$d انگشتی"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_two_finger_double_tap" msgid="8262165091808318538">"با دو انگشت {0,number,integer} بار بهسرعت روی صفحه ضربه بزنید"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_two_finger_double_tap" msgid="8262165091808318538">"با دو انگشت {0,number,integer} بار بهسرعت روی صفحه تکضرب بزنید"</string>
<string name="accessibility_shortcut_edit_dialog_title_triple_tap" msgid="6672798007229795841">"روی صفحهنمایش سه ضربه سریع بزنید"</string>
<string name="accessibility_shortcut_triple_tap_keyword" msgid="5359347130888464334">"سهضربه"</string>
- <string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"سریع روی صفحهنمایش {0,number,integer} بار ضربه بزنید. ممکن است این میانبر سرعت دستگاه را کاهش دهد"</string>
+ <string name="accessibility_shortcut_edit_dialog_summary_triple_tap" msgid="2102327956423320536">"سریع روی صفحهنمایش {0,number,integer} بار تکضرب بزنید. ممکن است این میانبر سرعت دستگاه را کاهش دهد"</string>
<string name="accessibility_shortcut_edit_dialog_title_advance" msgid="4567868630655591506">"پیشرفته"</string>
<string name="accessibility_screen_magnification_navbar_configuration_warning" msgid="266736851606791552">"دکمه دسترسپذیری روی <xliff:g id="SERVICE">%1$s</xliff:g> تنظیم شده است. برای استفاده از درشتنمایی، دکمه دسترسپذیری را لمس کنید و نگهدارید، سپس درشتنمایی را انتخاب کنید."</string>
<string name="accessibility_screen_magnification_gesture_navigation_warning" msgid="991017769735632046">"اشاره دسترسپذیری روی <xliff:g id="SERVICE">%1$s</xliff:g> تنظیم شده است. برای استفاده از درشتنمایی، با دو انگشت از پایین صفحه بهبالا بکشید و نگه ارید. سپس درشتنمایی را انتخاب کنید."</string>
@@ -2189,8 +2228,8 @@
<string name="accessibility_button_gesture_footer_learn_more_content_description" msgid="4144803517680297869">"درباره دکمه دسترسپذیری و اشاره بیشتر بدانید"</string>
<string name="accessibility_button_intro" msgid="2601976470525277903">"درحال استفاده از دکمه دسترسپذیری هستید. اشاره موردنظر با پیمایش ۳دکمهای دردسترس نیست."</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>
- <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_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_location_title" msgid="7182107846092304942">"مکان"</string>
<string name="accessibility_button_size_title" msgid="5785110470538960881">"اندازه"</string>
@@ -2305,7 +2344,7 @@
<string name="accessibility_hearingaid_not_connected_summary" msgid="7438018718889849521">"هیچ دستگاه کمکشنواییای متصل نشده است"</string>
<string name="accessibility_hearingaid_adding_summary" msgid="999051610528600783">"افزودن سمعکها"</string>
<string name="accessibility_hearingaid_pair_instructions_title" msgid="2357706801112207624">"جفت کردن سمعک"</string>
- <string name="accessibility_hearingaid_pair_instructions_message" msgid="581652489109350119">"در صفحه بعدی، روی سمعک ضربه بزنید. شاید لازم باشد گوش چپ و راست را جداگانه مرتبط کنید.\n\nمطمئن شوید سمعک روشن و آماده مرتبطسازی باشد."</string>
+ <string name="accessibility_hearingaid_pair_instructions_message" msgid="581652489109350119">"در صفحه بعدی، روی سمعک تکضرب بزنید. شاید لازم باشد گوش چپ و راست را جداگانه مرتبط کنید.\n\nمطمئن شوید سمعک روشن و آماده مرتبطسازی باشد."</string>
<string name="accessibility_hearingaid_active_device_summary" msgid="509703438222873967">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> فعال"</string>
<string name="accessibility_hearingaid_left_side_device_summary" msgid="12349058624943107">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> / فقط چپ"</string>
<string name="accessibility_hearingaid_right_side_device_summary" msgid="8645789702686724188">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> / فقط راست"</string>
@@ -2319,7 +2358,7 @@
<string name="accessibility_hac_mode_title" msgid="2037950424429555652">"سازگاری با سمعک"</string>
<string name="accessibility_hac_mode_summary" msgid="5198760061256669067">"سازگاری با تلهکویل را بهبود میبخشد و نوفه ناخواسته را کاهش میدهد"</string>
<string name="accessibility_hearing_device_about_title" msgid="7883758309646288250">"درباره دستگاههای کمکشنوایی"</string>
- <string name="accessibility_hearing_device_footer_summary" msgid="256061045064940818">"برای پیدا کردن دیگر سمعکهایی که از «جاریسازی صوتی ویژه سمعکها» (ASHA) یا «صدای کممصرف» (LE Audio) پشتیبانی نمیکنند، روی "<b>"جفت کردن دستگاه جدید"</b>" > "<b>"دیدن دستگاههای بیشتر"</b>" ضربه بزنید"</string>
+ <string name="accessibility_hearing_device_footer_summary" msgid="256061045064940818">"برای پیدا کردن دیگر سمعکهایی که از «جاریسازی صوتی ویژه سمعکها» (ASHA) یا «صدای کممصرف» (LE Audio) پشتیبانی نمیکنند، روی "<b>"جفت کردن دستگاه جدید"</b>" > "<b>"دیدن دستگاههای بیشتر"</b>" تکضرب بزنید"</string>
<string name="accessibility_hearing_device_pairing_page_title" msgid="6608901091770850295">"جفت کردن دستگاه کمکشنوایی"</string>
<string name="accessibility_hearing_device_pairing_intro" msgid="7022201665808166517">"میتوانید سمعکهای سازگار با «جاریسازی صوتی ویژه سمعکها» (ASHA) و «صدای کممصرف» را در این صفحه جفت کنید. مطمئن شوید سمعک روشن و برای جفت کردن آماده باشد."</string>
<string name="accessibility_found_hearing_devices" msgid="637407580358386553">"دستگاههای کمکشنوایی موجود"</string>
@@ -2333,7 +2372,7 @@
<string name="accessibility_summary_shortcut_disabled" msgid="564005462092499068">"خاموش"</string>
<string name="accessibility_summary_state_enabled" msgid="1065431632216039369">"روشن"</string>
<string name="accessibility_summary_state_disabled" msgid="9173234532752799694">"خاموش"</string>
- <string name="accessibility_summary_state_stopped" msgid="2343602489802623424">"کار نمیکند. برای دریافت اطلاعات ضربه بزنید."</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="enable_quick_setting" msgid="6648073323202243604">"نمایش در تنظیمات سریع"</string>
@@ -2404,7 +2443,7 @@
<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>
- <string name="disable_service_title" msgid="8178020230162342801">"<xliff:g id="SERVICE">%1$s</xliff:g> خاموش شود؟"</string>
+ <string name="disable_service_title" msgid="8178020230162342801">"«<xliff:g id="SERVICE">%1$s</xliff:g>» خاموش شود؟"</string>
<string name="accessibility_no_services_installed" msgid="3725569493860028593">"سرویسی نصب نشده است"</string>
<string name="accessibility_no_service_selected" msgid="1310596127128379897">"سرویسی انتخاب نشده است"</string>
<string name="accessibility_service_default_description" msgid="7801435825448138526">"شرحی ارائه نشده است."</string>
@@ -2544,7 +2583,7 @@
<string name="battery_manager_app_restricted" msgid="2583902700677009173">"{count,plural, =1{# برنامه محدود شده است}one{# برنامه محدود شده است}other{# برنامه محدود شده است}}"</string>
<string name="battery_missing_message" msgid="400958471814422770">"مشکلی در خواندن میزان باتری وجود دارد."</string>
<string name="battery_missing_link_message" msgid="6021565067124898074"></string>
- <string name="battery_missing_link_a11y_message" msgid="3310971406602316323">"برای دریافت اطلاعات بیشتر درباره این خطا، ضربه بزنید"</string>
+ <string name="battery_missing_link_a11y_message" msgid="3310971406602316323">"برای دریافت اطلاعات بیشتر درباره این خطا، تکضرب بزنید"</string>
<string name="power_screen" msgid="4596900105850963806">"صفحهنمایش"</string>
<string name="power_cpu" msgid="1820472721627148746">"CPU"</string>
<string name="power_flashlight" msgid="8993388636332573202">"چراغ قوه"</string>
@@ -2820,7 +2859,7 @@
<string name="settings_backup_summary" msgid="6803046376335724034">"پشتیبانگیری از تنظیمات من"</string>
<string name="sync_menu_sync_now" msgid="3948443642329221882">"اکنون همگامسازی شود"</string>
<string name="sync_menu_sync_cancel" msgid="2422994461106269813">"لغو همگامسازی"</string>
- <string name="sync_one_time_sync" msgid="8114337154112057462">"برای همگامسازی اکنون ضربه بزنید<xliff:g id="LAST_SYNC_TIME">
+ <string name="sync_one_time_sync" msgid="8114337154112057462">"برای همگامسازی اکنون تکضرب بزنید<xliff:g id="LAST_SYNC_TIME">
%1$s</xliff:g>"</string>
<string name="sync_gmail" msgid="228561698646018808">"Gmail"</string>
<string name="sync_calendar" msgid="4603704438090387251">"تقویم"</string>
@@ -3119,7 +3158,7 @@
<string name="regulatory_info_text" msgid="1154461023369976667"></string>
<string name="sim_settings_title" msgid="2254609719033946272">"سیمکارتها"</string>
<string name="sim_cellular_data_unavailable" msgid="4653591727755387534">"داده شبکه تلفن همراه دردسترس نیست"</string>
- <string name="sim_cellular_data_unavailable_summary" msgid="6505871722911347881">"برای انتخاب سیمکارت داده ضربه بزنید"</string>
+ <string name="sim_cellular_data_unavailable_summary" msgid="6505871722911347881">"برای انتخاب سیمکارت داده تکضرب بزنید"</string>
<string name="sim_calls_always_use" msgid="967857230039768111">"همیشه این سیم برای تماسها استفاده شود"</string>
<string name="select_sim_for_data" msgid="2642305487659432499">"سیمکارت برای داده تلفن همراه انتخاب کنید"</string>
<string name="select_sim_for_sms" msgid="5335510076282673497">"انتخاب سیمکارت برای پیامک"</string>
@@ -3136,7 +3175,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>
@@ -3282,9 +3321,9 @@
<string name="media_volume_option_title" msgid="5966569685119475630">"میزان صدای رسانه"</string>
<string name="remote_media_volume_option_title" msgid="8760846743943305764">"میزان صدای محتوای ارسالی"</string>
<string name="call_volume_option_title" msgid="1461105986437268924">"میزان صدای تماس"</string>
- <string name="alarm_volume_option_title" msgid="6398641749273697140">"میزان صدای زنگ ساعت"</string>
+ <string name="alarm_volume_option_title" msgid="6398641749273697140">"صدای زنگ هشدار"</string>
<string name="ring_volume_option_title" msgid="1520802026403038560">"میزان صدای زنگ و اعلان"</string>
- <string name="separate_ring_volume_option_title" msgid="2212910223857375951">"میزان صدای زنگ"</string>
+ <string name="separate_ring_volume_option_title" msgid="2212910223857375951">"صدای زنگ"</string>
<string name="notification_volume_option_title" msgid="4838818791683615978">"میزان صدای اعلان"</string>
<string name="ringer_content_description_silent_mode" msgid="1442257660889685934">"زنگ بیصدا"</string>
<string name="ringer_content_description_vibrate_mode" msgid="5946432791951870480">"زنگ لرزشی"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{هیچکدام}=1{۱ زمانبندی تنظیم شد}one{# زمانبندی تنظیم شده است}other{# زمانبندی تنظیم شده است}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"مزاحم نشوید"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"حالتهای اولویتدار"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"فقط از افراد و برنامههای مهم اعلان دریافت کنید"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"انتخاب نوع فعالسازی"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"زمان"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"برای مثال، «۹:۳۰ - ۵:۰۰ ب.ظ.»"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"تقویم"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"برای مثال، «تقویم شخصی»"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"محدود کردن وقفهها"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"حذف زمانبندیها"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"حذف"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"افزودن تقویم"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"استفاده از تقویم"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"زمانبندی"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"تنظیم زمانبندی"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"زمانبندی"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"بیصدا کردن تلفن در زمانهای خاصی"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"مجاز کردن وقفههایی که صدا ایجاد میکنند"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"مسدود کردن مزاحمتهای بصری"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"مجاز کردن همه سیگنالهای تصویری"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"اعلانهایی که میتواند برایتان ارسال شود"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"حفظ تمرکز"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"کنشهای بیشتر"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"تنظیمات نمایشگر"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"گزینههای نمایشگر"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"فعال کردن زمینه تیره"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"سیستمعامل و برنامهها به حالتی میروند که در آن، نوشتار روشن روی پسزمینه تیره ارجحیت دارد. در این حالت، چشمها کمتر اذیت میشود و در برخی دستگاهها در مصرف باتری بهمیزان قابلتوجهی صرفهجویی میشود"</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="mode_notification_filter_title" msgid="443728483176031977">"فیلتر کردن وقفهها"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"هیچ وقفهای فیلتر نمیشود"</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>
@@ -3654,7 +3711,7 @@
<string name="interact_across_profiles_number_of_connected_apps" msgid="4000424798291479207">"{count,plural, =1{# برنامه متصل شد}one{# برنامه متصل شد}other{# برنامه متصل شد}}"</string>
<string name="interact_across_profiles_install_work_app_title" msgid="2821669067014436056">"برای اتصال این برنامهها، <xliff:g id="NAME">%1$s</xliff:g> را در نمایه کاری نصب کنید"</string>
<string name="interact_across_profiles_install_personal_app_title" msgid="4790651223324866344">"برای اتصال این برنامهها، <xliff:g id="NAME">%1$s</xliff:g> را در نمایه شخصی نصب کنید"</string>
- <string name="interact_across_profiles_install_app_summary" msgid="7715324358034968657">"برای دریافت برنامه، ضربه بزنید"</string>
+ <string name="interact_across_profiles_install_app_summary" msgid="7715324358034968657">"برای دریافت برنامه، تکضرب بزنید"</string>
<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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"نمایش دستههای استفادهنشده"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"پنهان کردن دستههای استفادهنشده"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"همه"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{تغییر به «فقط زنگ هشدار» بهمدت یک ساعت تا {time}}one{تغییر به «فقط زنگ هشدار» بهمدت # ساعت تا {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"تغییر نام"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"تغییر نماد"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"تغییر نماد"</string>
<string name="warning_button_text" msgid="1274234338874005639">"هشدار"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"بستن"</string>
<string name="device_feedback" msgid="5351614458411688608">"ارسال بازخورد درباره این دستگاه"</string>
@@ -3828,8 +3885,8 @@
<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>
- <string name="screen_pinning_guest_user_description" msgid="2307270321127139579">"وقتی برنامهای سنجاق شود، ممکن است برنامه سنجاقشده برنامههای دیگر را باز کند و دادههای شخصی دردسترس قرار گیرد. \n\nاگر میخواهید دستگاهتان را بااطمینانخاطر دراختیار فرد دیگری قرار دهید، از کاربر مهمان استفاده کنید. \n\nبرای استفاده از سنجاق کردن برنامه: ←\n{0,number,integer}. سنجاق کردن برنامه را روشن کنید ←\n{1,number,integer}. «نمای کلی» را باز کنید ←\n{2,number,integer}. روی نماد برنامه در بالای صفحهنمایش ضربه بزنید، سپس روی «سنجاق کردن» ضربه بزنید"</string>
+ <string name="screen_pinning_description" msgid="5822120806426139396">"وقتی برنامهای سنجاق شود، ممکن است برنامه سنجاقشده برنامههای دیگر را باز کند و دادههای شخصی دردسترس قرار گیرد. \n\nبرای استفاده از سنجاق کردن برنامه: ←\n{0,number,integer}. سنجاق کردن برنامه را روشن کنید ←\n{1,number,integer}. «نمای کلی» را باز کنید ←\n{2,number,integer}. روی نماد برنامه در بالای صفحهنمایش تکضرب بزنید، سپس روی «سنجاق کردن» تکضرب بزنید"</string>
+ <string name="screen_pinning_guest_user_description" msgid="2307270321127139579">"وقتی برنامهای سنجاق شود، ممکن است برنامه سنجاقشده برنامههای دیگر را باز کند و دادههای شخصی دردسترس قرار گیرد. \n\nاگر میخواهید دستگاهتان را بااطمینانخاطر دراختیار فرد دیگری قرار دهید، از کاربر مهمان استفاده کنید. \n\nبرای استفاده از سنجاق کردن برنامه: ←\n{0,number,integer}. سنجاق کردن برنامه را روشن کنید ←\n{1,number,integer}. «نمای کلی» را باز کنید ←\n{2,number,integer}. روی نماد برنامه در بالای صفحهنمایش تکضرب بزنید، سپس روی «سنجاق کردن» تکضرب بزنید"</string>
<string name="screen_pinning_dialog_message" msgid="8144925258679476654">"وقتی برنامه سنجاق میشود: \n\n• ممکن است دادههای شخصی (مانند مخاطبین و محتوای ایمیل) دردسترس قرار گیرد \n \n• ممکن است برنامه سنجاقشده برنامههای دیگر را باز کند \n\nفقط با افراد معتمد از سنجاق کردن برنامه استفاده کنید."</string>
<string name="screen_pinning_unlock_pattern" msgid="1345877794180829153">"درخواست الگوی بازگشایی قفل قبلاز برداشتن سنجاق"</string>
<string name="screen_pinning_unlock_pin" msgid="8716638956097417023">"درخواست کد پین قبل از برداشتن پین"</string>
@@ -3906,7 +3963,7 @@
<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>
- <string name="tap_to_wake_summary" msgid="6641039858241611072">"برای بیدار کردن دستگاه روی قسمتی از صفحه دوبار ضربه بزنید"</string>
+ <string name="tap_to_wake_summary" msgid="6641039858241611072">"برای بیدار کردن دستگاه روی قسمتی از صفحه دوبار تکضرب بزنید"</string>
<string name="domain_urls_title" msgid="7012209752049678876">"باز کردن پیوندها"</string>
<string name="domain_urls_summary_none" msgid="1132578967643384733">"پیوندهای پشتیبانی شده باز نشود"</string>
<string name="domain_urls_summary_one" msgid="3312008753802762892">"باز کردن <xliff:g id="DOMAIN">%s</xliff:g>"</string>
@@ -4285,7 +4342,7 @@
<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>
- <string name="swipe_up_to_switch_apps_summary" msgid="1415457307836359560">"برای جابهجایی بین برنامهها، دکمه صفحه اصلی را تند بهبالا بکشید. برای دیدن همه برنامهها، دوباره تند بهبالا بکشید. برای برگشت، روی دکمه برگشت ضربه بزنید."</string>
+ <string name="swipe_up_to_switch_apps_summary" msgid="1415457307836359560">"برای جابهجایی بین برنامهها، دکمه صفحه اصلی را تند بهبالا بکشید. برای دیدن همه برنامهها، دوباره تند بهبالا بکشید. برای برگشت، روی دکمه برگشت تکضرب بزنید."</string>
<string name="emergency_settings_preference_title" msgid="6183455153241187148">"ایمنی و شرایط اضطراری"</string>
<string name="emergency_dashboard_summary" msgid="401033951074039302">"درخواست کمک اضطراری، اطلاعات پزشکی، هشدارها"</string>
<string name="edge_to_edge_navigation_title" msgid="714427081306043819">"پیمایش اشارهای"</string>
@@ -4323,7 +4380,7 @@
<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>
+ <string name="ambient_display_tap_screen_summary" msgid="4480489179996521405">"برای بررسی زمان، اعلانها و اطلاعات دیگر، روی صفحهنمایش تکضرب بزنید."</string>
<string name="emergency_gesture_screen_title" msgid="3280543310204360902">"کمک اضطراری"</string>
<string name="emergency_gesture_switchbar_title" msgid="7421353963329899514">"استفاده از «درخواست کمک اضطراری»"</string>
<string name="emergency_gesture_screen_summary" msgid="6640521030845132507">"برای شروع اقدامات زیر، دکمه روشن/خاموش را سریع ۵ بار یا بیشتر فشار دهید"</string>
@@ -4332,7 +4389,7 @@
<string name="emergency_gesture_category_call_for_help_title" msgid="1680040129478289510">"اطلاعرسانی برای دریافت کمک"</string>
<string name="emergency_gesture_call_for_help_title" msgid="4969340870836239982">"تماس برای کمک"</string>
<string name="emergency_gesture_call_for_help_dialog_title" msgid="8901271205171421201">"شماره تماس برای دریافت کمک"</string>
- <string name="emergency_gesture_call_for_help_summary" msgid="6552830427932669221">"<xliff:g id="PHONE_NUMBER">%1$s</xliff:g>. برای تغییر ضربه بزنید"</string>
+ <string name="emergency_gesture_call_for_help_summary" msgid="6552830427932669221">"<xliff:g id="PHONE_NUMBER">%1$s</xliff:g>. برای تغییر تکضرب بزنید"</string>
<string name="emergency_gesture_number_override_notes" msgid="233018570696200402">"اگر شماره تلفن غیراضطراری وارد کنید:\n • برای استفاده از «درخواست کمک اضطراری»، قفل دستگاهتان باید باز باشد\n • ممکن است تماستان پاسخ داده نشود"</string>
<string name="fingerprint_swipe_for_notifications_title" msgid="2271217256447175017">"تند کشیدن اثر انگشت برای اعلانها"</string>
<string name="fingerprint_gesture_screen_title" msgid="9086261338232806522">"تند کشیدن اثر انگشت"</string>
@@ -4656,7 +4713,7 @@
<string name="mobile_network_use_sim_on" msgid="5333182776279917886">"استفاده از این سیمکارت"</string>
<string name="mobile_network_use_sim_off" msgid="6303281166199670639">"خاموش"</string>
<string name="mobile_network_disable_sim_explanation" msgid="7182341033728911879">"برای خاموش کردن این سیمکارت، آن را خارج کنید"</string>
- <string name="mobile_network_tap_to_activate" msgid="5280456487243915465">"برای فعال کردن سیمکارت <xliff:g id="CARRIER">%1$s</xliff:g>، ضربه بزنید"</string>
+ <string name="mobile_network_tap_to_activate" msgid="5280456487243915465">"برای فعال کردن سیمکارت <xliff:g id="CARRIER">%1$s</xliff:g>، تکضرب بزنید"</string>
<string name="mobile_network_erase_sim" msgid="5387971155494245850">"پاکسازی سیمکارت داخلی"</string>
<string name="preferred_network_mode_title" msgid="3083431168988535628">"نوع شبکه ترجیحی"</string>
<string name="preferred_network_mode_summary" msgid="537577807865497546">"تغییر حالت عملکرد شبکه"</string>
@@ -4720,7 +4777,7 @@
<string name="privileged_action_disable_fail_title" msgid="1808735136395980905">"سیمکارت خاموش نشد"</string>
<string name="privileged_action_disable_fail_text" msgid="6236231745255527458">"مشکلی پیش آمد و سیمکارتتان خاموش نشد."</string>
<string name="sim_action_enable_dsds_title" msgid="226508711751577169">"از ۲ سیمکارت استفاده میکنید؟"</string>
- <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"این دستگاه میتواند همزمان ۲ سیمکارت فعال داشته باشد. برای ادامه استفاده از ۱ سیمکارت در هربار، روی «نه متشکرم» ضربه بزنید."</string>
+ <string name="sim_action_enable_dsds_text" msgid="970986559326263949">"این دستگاه میتواند همزمان ۲ سیمکارت فعال داشته باشد. برای ادامه استفاده از ۱ سیمکارت در هربار، روی «نه متشکرم» تکضرب بزنید."</string>
<string name="sim_action_restart_title" msgid="7054617569121993825">"دستگاه بازراهاندازی شود؟"</string>
<string name="sim_action_yes" msgid="8076556020131395515">"بله"</string>
<string name="sim_action_reboot" msgid="3508948833333441538">"بازراهاندازی"</string>
@@ -4761,7 +4818,7 @@
<string name="sim_setup_channel_id" msgid="8797972565087458515">"فعالسازی شبکه"</string>
<string name="sim_switch_channel_id" msgid="4927038626791837861">"تغییر شرکت مخابراتی"</string>
<string name="post_dsds_reboot_notification_title_with_carrier" msgid="975447139749692794">"سیمکارت <xliff:g id="CARRIER_NAME">%1$s</xliff:g> فعال شد"</string>
- <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"برای بهروزرسانی تنظیمات سیمکارت ضربه بزنید"</string>
+ <string name="post_dsds_reboot_notification_text" msgid="7533428378211541410">"برای بهروزرسانی تنظیمات سیمکارت تکضرب بزنید"</string>
<string name="switch_to_removable_notification" msgid="7640342063449806296">"به <xliff:g id="CARRIER_NAME">%1$s</xliff:g> جابهجا شدید"</string>
<string name="switch_to_removable_notification_no_carrier_name" msgid="7384856964036215338">"به شرکت مخابراتی دیگری جابهجا شدید"</string>
<string name="network_changed_notification_text" msgid="2407908598496951243">"شبکه تلفن همراهتان تغییر کرده است"</string>
@@ -4850,10 +4907,10 @@
<string name="wifi_calling_summary" msgid="8566648389959032967">"برای بهبود کیفیت تماسها، از Wi‑Fi استفاده کنید"</string>
<string name="enable_receiving_mms_notification_title" msgid="6465218559386990248">"پیام فراپیام ورودی"</string>
<string name="enable_sending_mms_notification_title" msgid="7120641300854953375">"پیام فراپیام ارسال نشد"</string>
- <string name="enable_mms_notification_summary" msgid="6432752438276672500">"برای مجاز کردن ارسال پیام فراپیام در <xliff:g id="OPERATOR_NAME">%1$s</xliff:g> وقتی داده تلفن همراه خاموش است، ضربه بزنید"</string>
+ <string name="enable_mms_notification_summary" msgid="6432752438276672500">"برای مجاز کردن ارسال پیام فراپیام در <xliff:g id="OPERATOR_NAME">%1$s</xliff:g> وقتی داده تلفن همراه خاموش است، تکضرب بزنید"</string>
<string name="enable_mms_notification_channel_title" msgid="1798206332620642108">"پیام فراپیام"</string>
<string name="sim_combination_warning_notification_title" msgid="1365401631492986487">"مشکلی در ترکیب سیمکارت وجود دارد"</string>
- <string name="dual_cdma_sim_warning_notification_summary" msgid="2826474790710586487">"استفاده از <xliff:g id="OPERATOR_NAMES">%1$s</xliff:g> ممکن است عملکرد را محدود کند. برای اطلاعات بیشتر ضربه بزنید."</string>
+ <string name="dual_cdma_sim_warning_notification_summary" msgid="2826474790710586487">"استفاده از <xliff:g id="OPERATOR_NAMES">%1$s</xliff:g> ممکن است عملکرد را محدود کند. برای اطلاعات بیشتر تکضرب بزنید."</string>
<string name="dual_cdma_sim_warning_notification_channel_title" msgid="1049161096896074364">"ترکیب سیمکارت"</string>
<string name="work_policy_privacy_settings" msgid="2702644843505242596">"اطلاعات خطمشی کار شما"</string>
<string name="work_policy_privacy_settings_summary" msgid="690118670737638405">"تنظیمات مدیریتشده توسط سرپرست فناوری اطلاعات شما"</string>
@@ -4868,16 +4925,19 @@
<string name="progress_16k_ota_title" msgid="2117218313875523741">"اعمال تغییرات"</string>
<string name="confirm_format_ext4_title" msgid="6696191800594435577">"دستگاه مجدداً به ext4 قالببندی شود؟ (الزامی برای حالت ۱۶ کیلوبایتی)"</string>
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"پیشاز استفاده از گزینه توسعهدهنده ۱۶ کیلوبایتی، پارتیشن دادههای این دستگاه باید به ext4 تبدیل شود. در این حالت تمامیت نرمافزار را نمیتوان تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. فعال کردن گزینه ۱۶ کیلوبایتی به بازراهاندازی دیگری بعداز این بازراهاندازی نیاز خواهد داشت. بعداز رفتن به این حالت، میتوانید با یک بار بازراهاندازی بین حالتهای ۴ کیلوبایتی و ۱۶ کیلوبایتی جابجا شوید. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای برگرداندن دستگاه به حالت تولید، باید به حالت ۴ کیلوبایتی برگردید و سپس bootloader را قفل کنید که با این کار، دستگاه بازنشانی کارخانهای میشود. پساز آنکه دستگاه باموفقیت با سیستمعامل Android راهاندازی شد، «باز کردن قفل سازنده اصلی محصول» را در «گزینههای توسعهدهندگان» غیرفعال کنید. دادههای دستگاه محو میشود و سیستم فایل به ext4 تغییر میکند. بعداز تکمیل کار، لطفاً به اینجا برگردید تا دوباره حالت ۱۶ کیلوبایتی را فعال کنید."</string>
- <string name="confirm_ext4_button_text" msgid="6045501984773738407">"پاک کردن تمام دادهها"</string>
+ <string name="confirm_ext4_button_text" msgid="6045501984773738407">"پاک کردن همه دادهها"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"محو کردن داده و قالببندی مجدد پارتیشن داده به ext4 انجام نشد."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"باز کردن قفل bootloader برای حالت ۱۶ کیلوبایتی الزامی است"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"پیشاز استفاده از گزینه توسعهدهنده ۱۶ کیلوبایتی، قفل bootloader باید در این دستگاه باز شود. نمیتوان تمامیت نرمافزار را در این حالت تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. با فعال کردن حالت ۱۶ کیلوبایتی، همه تنظیمات و دادههای کاربر محو خواهند شد. بعداز باز کردن قفل bootloader، گزینه ۱۶ کیلوبایتی به انجام دو بازراهاندازی نیاز دارد. بعداز رفتن به این حالت، میتوانید با یک بار بازراهاندازی بین حالتهای ۴ کیلوبایتی و ۱۶ کیلوبایتی جابجا شوید. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای برگرداندن دستگاه به حالت تولید، باید به حالت ۴ کیلوبایتی برگردید و سپس سازنده اصلی محصول/ bootloader دستگاه را قفل کنید (که با این کار، دستگاه بازنشانی کارخانهای میشود). لطفاً قفل bootloader را باز و دوباره امتحان کنید. میتوانید دستورالعملهای نحوه انجام این کار را از اینجا دریافت کنید: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"درحال استفاده از حالت مستقل با صفحه ۴ کیلوبایتی"</string>
- <string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"در حالت ۴ کیلوبایتی حالت مستقل از صفحه هستید. در این حالت، تمامیت نرمافزار را نمیتوان تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای ورود دوباره به حالت تولید، باید bootloader دستگاه را قفل کنید. برای مطالعه بیشتر، ضربه بزنید."</string>
+ <string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"در حالت ۴ کیلوبایتی حالت مستقل از صفحه هستید. در این حالت، تمامیت نرمافزار را نمیتوان تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای ورود دوباره به حالت تولید، باید bootloader دستگاه را قفل کنید. برای مطالعه بیشتر، تکضرب بزنید."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"در حالت ۴ کیلوبایتی حالت مستقل از صفحه هستید. در این حالت تمامیت نرمافزار را نمیتوان تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای ورود دوباره به حالت تولید، باید bootloader دستگاه را قفل کنید. با این کار، دستگاه دوباره بازنشانی کارخانهای میشود و به تنظیمات تولید بازگردانده میشود. پساز آنکه دستگاه باموفقیت با سیستمعامل Android راهاندازی شد، «باز کردن قفل سازنده اصلی محصول» را در «گزینههای توسعهدهندگان» غیرفعال کنید. اگر دستگاه نتوانست باموفقیت با سیستمعامل Android راهاندازی شود یا ناپایدار بود، دستگاه را با جدیدترین تصویر تنظیمات کارخانه از <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> دوباره فلاش کنید و «محو کردن دادههای دستگاه»، «قفل کردن bootloader»، و «فلاش کردن اجباری همه پارتیشنها» را انتخاب کنید."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"درحال استفاده از حالت مستقل از صفحه ۱۶ کیلوبایتی"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"در حالت ۱۶ کیلوبایتی حالت مستقل از صفحه هستید. در این حالت تمامیت نرمافزار را نمیتوان تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای ورود دوباره به حالت تولید، باید به حالت ۴ کیلوبایتی برگردید و سپس bootloader دستگاه را قفل کنید. برای مطالعه بیشتر، ضربه بزنید."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"در حالت ۱۶ کیلوبایتی حالت مستقل از صفحه هستید. در این حالت تمامیت نرمافزار را نمیتوان تضمین کرد و هرگونه دادهای که درمدت باز بودن قفل bootloader در تلفن ذخیره میشود میتواند در معرض خطر باشد. برخیاز ویژگیها در این حالتها غیرفعال میشوند بنابراین ممکن است بعضیاز برنامهها کار نکنند. برای ورود دوباره به حالت تولید، باید به حالت ۴ کیلوبایتی برگردید و سپس bootloader دستگاه را قفل کنید. با این کار، دستگاه دوباره بازنشانی کارخانهای میشود و به تنظیمات تولید بازگردانده میشود. پساز آنکه دستگاه باموفقیت با سیستمعامل Android راهاندازی شد، «باز کردن قفل سازنده اصلی محصول» را در «گزینههای توسعهدهندگان» غیرفعال کنید. اگر دستگاه نتوانست باموفقیت با سیستمعامل Android راهاندازی شود یا ناپایدار بود، دستگاه را با جدیدترین تصویر تنظیمات کارخانه از <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> دوباره فلاش کنید و «محو کردن دادههای دستگاه»، «قفل کردن bootloader»، و «فلاش کردن اجباری همه پارتیشنها» را انتخاب کنید."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"حالت مستقل از صفحه ۱۶ کیلوبایتی"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"بیشتر بخوانید"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"کنترلکننده گزارش اشکال"</string>
@@ -4990,10 +5050,10 @@
<string name="aware_summary_when_bedtime_on" msgid="2063856008597376344">"دردسترس نیست زیرا «حالت وقت خواب» روشن است"</string>
<string name="reset_importance_completed" msgid="3595536767426097205">"بازنشاندن اهمیت اعلان تکمیل شد."</string>
<string name="apps_dashboard_title" msgid="3269953499954393706">"برنامهها"</string>
- <string name="bluetooth_message_access_notification_content" msgid="5111712860712823893">"دستگاهی میخواهد به پیامهایتان دسترسی داشته باشد. برای جزئیات ضربه بزنید."</string>
+ <string name="bluetooth_message_access_notification_content" msgid="5111712860712823893">"دستگاهی میخواهد به پیامهایتان دسترسی داشته باشد. برای جزئیات تکضرب بزنید."</string>
<string name="bluetooth_message_access_dialog_title" msgid="9009836130395061579">"دسترسی به پیامها مجاز شود؟"</string>
<string name="bluetooth_message_access_dialog_content" msgid="7186694737578788487">"دستگاه بلوتوثی (<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>) میخواهد به پیامهایتان دسترسی داشته باشد.\n\nقبلاً به <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> متصل نشدهاید."</string>
- <string name="bluetooth_phonebook_access_notification_content" msgid="9175220052703433637">"دستگاهی میخواهد به مخاطبین و گزارش تماس شما دسترسی داشته باشد. برای جزئیات ضربه بزنید."</string>
+ <string name="bluetooth_phonebook_access_notification_content" msgid="9175220052703433637">"دستگاهی میخواهد به مخاطبین و گزارش تماس شما دسترسی داشته باشد. برای جزئیات تکضرب بزنید."</string>
<string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"دسترسی به مخاطبین و گزارش تماس مجاز شود؟"</string>
<string name="bluetooth_phonebook_access_dialog_content" msgid="959658135522249170">"دستگاه بلوتوثی (<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>) میخواهد به مخاطبین و گزارش تماس شما دسترسی داشته باشد. این شامل دادههای مربوط به تماسهای ورودی و خروجی میشود.\n\nتاکنون به <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> متصل نشدهاید."</string>
<string name="category_name_brightness" msgid="8520372392029305084">"روشنایی"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"مجاز کردن چند کاربر"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5057,11 +5118,11 @@
<string name="next_page_content_description" msgid="1641835099813416294">"بعدی"</string>
<string name="colors_viewpager_content_description" msgid="2591751086138259565">"پیشدید رنگ"</string>
<string name="bluetooth_sim_card_access_notification_title" msgid="7351015416346359536">"درخواست دسترسی به سیمکارت"</string>
- <string name="bluetooth_sim_card_access_notification_content" msgid="8685623260103018309">"دستگاهی میخواهد به سیمکارتتان دسترسی داشته باشد. برای دیدن جزئیات، ضربه بزنید."</string>
+ <string name="bluetooth_sim_card_access_notification_content" msgid="8685623260103018309">"دستگاهی میخواهد به سیمکارتتان دسترسی داشته باشد. برای دیدن جزئیات، تکضرب بزنید."</string>
<string name="bluetooth_sim_card_access_dialog_title" msgid="5616323725563125179">"دسترسی به سیمکارت مجاز است؟"</string>
<string name="bluetooth_sim_card_access_dialog_content" msgid="6281997628405909566">"دستگاه بلوتوثی (<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>) میخواهد به دادههای سیمکارتتان دسترسی داشته باشد. این دادهها شامل مخاطبین شما میشود.\n\nوقتی متصل باشد، <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> همه تماسهایی را که با <xliff:g id="PHONE_NUMBER">%3$s</xliff:g> برقرار میشود دریافت خواهد کرد."</string>
<string name="bluetooth_connect_access_notification_title" msgid="2573547043170883947">"دستگاه بلوتوث دردسترس است"</string>
- <string name="bluetooth_connect_access_notification_content" msgid="1328465545685433304">"دستگاهی میخواهد متصل شود. برای دیدن جزئیات، ضربه بزنید."</string>
+ <string name="bluetooth_connect_access_notification_content" msgid="1328465545685433304">"دستگاهی میخواهد متصل شود. برای دیدن جزئیات، تکضرب بزنید."</string>
<string name="bluetooth_connect_access_dialog_title" msgid="1948056782712451381">"به دستگاه بلوتوث متصل میشوید؟"</string>
<string name="bluetooth_connect_access_dialog_content" msgid="4336436466468405850">"<xliff:g id="DEVICE_NAME_0">%1$s</xliff:g> میخواهد به این تلفن متصل شود.\n\nقبلاً به <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> متصل نشدهاید."</string>
<string name="bluetooth_connect_access_dialog_negative" msgid="4944672755226375059">"متصل نشود"</string>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
index 3e9acde..d8befc6 100644
--- a/res/values-fi/arrays.xml
+++ b/res/values-fi/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Nukkuma-aika"</item>
+ <item msgid="4152450357280759894">"Ajaminen"</item>
+ <item msgid="7096549258219399423">"Immersiivinen"</item>
+ <item msgid="2760716776980432977">"Hallinnoidut"</item>
+ <item msgid="601734478369121764">"Tähti"</item>
+ <item msgid="6243809315432780521">"Kalenteri"</item>
+ <item msgid="4913577903148415331">"Aika"</item>
+ <item msgid="3653377604690057780">"Teatteri"</item>
+ <item msgid="3843711267408385410">"Kukka"</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 0f00deb..0a81ba1 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Kuulolaiteasetukset"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Pikanäppäin, kuulolaiteyhteensopivuus"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Esiasetus"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Audiologi ei ole ohjelmoinut esiasetuksia"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Esiasetusta ei voitu muuttaa"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audion toistotapa"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Tietoa audion toistotavasta"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Lue lisää kellon avauksesta"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Lisää kello"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Poista kello"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Sormenjälki- ja kasvojentunnistusavaus"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Kasvojentunnistus- ja sormenjälkiavaus"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Kasvojentunnistus- ja sormenjälkiavaus työkäyttöön"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Edellyttää käyttöönottoa"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Kasvot ja sormenjäljet lisättiin"</string>
@@ -541,7 +542,7 @@
<string name="security_advanced_settings_no_work_profile_settings_summary" msgid="345336447137417638">"Salaus, kirjautumistiedot ja muuta"</string>
<string name="security_advanced_settings_keywords" msgid="5294945170370974974">"tietoturva, lisää tietoturva-asetuksia, lisää asetuksia, tietoturvan lisäasetukset"</string>
<string name="privacy_advanced_settings" msgid="8828215456566937719">"Lisää yksityisyysasetuksia"</string>
- <string name="more_security_privacy_settings" msgid="123465614090328851">"Lisää suojaus‑ ja yksityisyysasetuksia"</string>
+ <string name="more_security_privacy_settings" msgid="123465614090328851">"Lisää turvallisuus‑ ja yksityisyysasetuksia"</string>
<string name="security_header" msgid="961514795852103424">"Suojaus"</string>
<string name="privacy_header" msgid="5526002421324257007">"Yksityisyys"</string>
<string name="work_profile_category_header" msgid="85707750968948517">"Työprofiili"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Asenna sovelluksia"</b>\n"Asenna sovelluksia, jotka haluat pitää yksityisessä tilassa"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Muistettavaa"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Sovellukset pysäytetään, kun lukitset tilan"</b>\n"Kun lukitset tilan, siinä olevat sovellukset pysäytetään etkä saa niiltä ilmoituksia"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Yksityisiä tiloja ei voi käyttää sellaisten sovellusten kanssa, joiden täytyy olla käynnissä taustalla tai lähettää tärkeitä ilmoituksia (esim. lääketieteelliset sovellukset). Tämä johtuu siitä, että ilmoitukset ja taustatoiminta keskeytetään, kun tila on lukittu.\n\nYksityisessä tilassa olevat sovellukset eivät näy Lupienhallinnassa, yksityisyydenhallintapaneelissa tai muissa asetuksissa, kun yksityinen tila on lukittu.\n\nYksityistä tilaa ei voi siirtää uudelle laitteelle. Sinun täytyy ottaa käyttöön uusi yksityinen tila, jos haluat käyttää sitä toisella laitteella.\n\nKuka tahansa, joka yhdistää laitteesi tietokoneeseen tai asentaa laitteelle haitallisia sovelluksia, voi saada pääsyn yksityiseen tilaan."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Yksityisiä tiloja ei voi käyttää sellaisten sovellusten kanssa, joiden täytyy olla käynnissä taustalla tai lähettää tärkeitä ilmoituksia (esim. lääketieteelliset sovellukset). Tämä johtuu siitä, että ilmoitukset ja taustatoiminta keskeytetään, kun tila on lukittu.\n\nYksityisessä tilassa olevat sovellukset eivät näy Lupienhallinnassa, yksityisyydenhallintapaneelissa tai muissa asetuksissa, kun yksityinen tila on lukittu.\n\nYksityistä tilaa ei voi palauttaa uudella laitteella. Sinun täytyy ottaa käyttöön uusi yksityinen tila, jos haluat käyttää sitä toisella laitteella.\n\nKuka tahansa, joka yhdistää laitteesi tietokoneeseen tai asentaa laitteelle haitallisia sovelluksia, voi saada pääsyn yksityiseen tilaan."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Lue lisää yksityisestä tilasta"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Tässä menee hetki"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Yksityistä tilaa otetaan käyttöön…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Käynnistetäänkö laite uudelleen?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC-tietojen kirjaaminen on tarkoitettu vain kehittäjäkäyttöön. Virheraportit sisältävät muuta NFC-dataa, joka voi sisältää yksityisiä tietoja. Muuta asetusta käynnistämällä laite uudelleen."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Käynnistä uudelleen"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Striimaus"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"peilaus"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Ota langaton näyttö käyttöön"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Mukautuva"</string>
<string name="brightness" msgid="6216871641021779698">"Kirkkaustaso"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Kirkkauden säätö"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Kirkkauden säätö"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Näytön kirkkaus mukautuu automaattisesti ympäristöösi ja toimintaasi. Voit auttaa mukautuvaa kirkkautta oppimaan mieltymyksesi siirtämällä liukusäädintä."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Päällä"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Pois päältä"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Käyttäjän valitsema: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Puhe"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Osoittimen nopeus"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Peliohjaimet"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Uudelleenohjaa värinä"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Ohjaa värinä peliohjaimeen, jos se on kytketty."</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Jatka silti"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Peru"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Suurennusasetukset"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Yhden sormen panorointi"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Siirrä suurennusaluetta vetämällä yhdellä sormella."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Siirrää suurennusaluetta vetämällä kahdella sormella."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ei käytettävissä, kun vain osaa näytöstä suurennetaan"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Zoomaa napauttamalla painiketta."</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Lähennä näyttöä nopeasti, niin näet sisällön suurempana"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Näin voit lähentää näyttöä:</b><br/> {0,number,integer}. Aloita suurennus käyttämällä pikanäppäintä<br/> {1,number,integer}. Napauta näyttöä<br/> {2,number,integer}. Siirry näytöllä vetämällä kahdella sormella<br/> {3,number,integer}. Säädä zoomausta nipistämällä kahdella sormella<br/> {4,number,integer}. Lopeta suurennus käyttämällä pikanäppäintä<br/><br/><b>Väliaikainen lähentäminen:</b><br/> {0,number,integer}. Varmista, että suurennustapa on asetettu koko näytölle <br/> {1,number,integer}. Aloita suurennus käyttämällä pikanäppäintä<br/> {2,number,integer}. Kosketa näyttöä mistä tahansa pitkään<br/> {3,number,integer}. Siirry näytöllä vetämällä kahdella sormella<br/> {4,number,integer}. Lopeta suurennus nostamalla sormi näytöltä"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kun suurennus on käytössä, voit suurentaa näytöllä olevia kohteita.\n\n"<b>"Zoomaa:"</b>" käynnistä suurennus ja napauta sitten haluamaasi kohtaa näytöllä\n"<ul><li>"Vieritä: vedä vähintään kahta sormea näytön poikki"</li>\n<li>"Säädä zoomausta: nipistä vähintään kaksi sormea yhteen tai levitä ne erilleen"</li></ul>\n\n<b>"Zoomaa väliaikaisesti:"</b>" käynnistä suurennus ja paina pitkään missä tahansa näytöllä\n"<ul><li>"Liiku näytöllä: vedä sormea eri suuntiin"</li>\n<li>"Loitonna: nosta sormi"</li></ul>\n\n"Suurennus ei toimi näppäimistöllä tai siirtymispalkissa."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Sivu <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">"Saavutettavuuspainikkeen pikakomento"</string>
@@ -3172,7 +3215,7 @@
<string name="cloned_app_creation_toast_summary" msgid="3854494347144867870">"Luodaan kloonia (<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>)"</string>
<string name="cloned_app_created_toast_summary" msgid="755225403495544163">"Klooni luotu (<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>)"</string>
<string name="system_dashboard_summary" msgid="7400745270362833832">"Kielet, eleet, aika, varmuuskopiointi"</string>
- <string name="languages_setting_summary" msgid="2650807397396180351">"Järjestelmän kielet, sovelluksen kielet, alueelliset valinnat, puhe"</string>
+ <string name="languages_setting_summary" msgid="2650807397396180351">"Järjestelmän kielet, sovellusten kielet, alueelliset valinnat, puhe"</string>
<string name="keywords_wifi" msgid="8156528242318351490">"wifi, wi-fi, verkkoyhteys, internet, langaton, data, wi fi"</string>
<string name="keywords_wifi_notify_open_networks" msgid="6580896556389306636">"Wi‑Fi ilmoitus, wifi ilmoitus"</string>
<string name="keywords_wifi_data_usage" msgid="4718555409695862085">"datan käyttö"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ei yhtään}=1{1 aikataulu luotu}other{# aikataulua luotu}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Älä häiritse"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioriteettitilat"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Salli ilmoitukset vain tärkeiltä ihmisiltä ja sovelluksilta"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Valitse aktivointityyppi"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Aika"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Esim. \"Klo 9.30–17.00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalenteri"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Esim. \"Henkilökohtainen kalenteri\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Keskeytysten rajoittaminen"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Laita Älä häiritse ‑tila päälle"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Hälytykset ja median äänet voivat keskeyttää"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Aikataulut"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Poista aikataulut"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Poista"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Muokkaa"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Aikataulut"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Aikataulu"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Kalenterin lisääminen"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Käytä kalenteria"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Aikataulu"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Luo aikataulu"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Aikataulu"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Aikataulu"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Hiljennä puhelin tiettyinä aikoina"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Salli keskeytykset äänen kanssa"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Estä näkyvät häiriötekijät"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Salli visuaaliset signaalit"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Ilmoitukset, joita et saa"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Keskity"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Lisätoiminnot"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Näyttöasetukset"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Näyttöasetukset"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ota tumma teema käyttöön"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Vaihda käyttöjärjestelmään ja sovelluksiin vaalea teksti tummalla taustalla, mikä voi rasittaa silmiä vähemmän ja säästää akkua merkittävästi joillakin laitteilla"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ei muutoksia näyttöön}=1{{effect_1}}=2{{effect_1} ja {effect_2}}=3{{effect_1}, {effect_2} ja {effect_3}}other{{effect_1}, {effect_2} ja # muuta}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Suodata häiritöt"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Häiriöitä ei suodateta"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Suodatettujen ilmoitusten näyttövalinnat"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kun Älä häiritse -tila on käytössä"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Ei ilmoitusääniä"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Luokat"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Muut"</string>
<string name="no_channels" msgid="4716199078612071915">"Tämä sovellus ei ole lähettänyt ilmoituksia"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Näytä käyttämättömät kategoriat"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Lisäasetukset sovelluksessa"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Näytä käyttämättömät kategoriat"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Piilota käyttämättömät kategoriat"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Valitut sovellukset"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ei mitään"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Kaikki"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Salli ohittaminen sovelluksille"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Sovellukset, jotka saavat keskeyttää"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Valitse lisää sovelluksia"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Muuta hälytyksiä tunnilla tähän asti: {time}}other{Muuta hälytyksiä # tunnilla tähän asti: {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ota vain herätykset käyttöön kello <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> asti."</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Salli keskeytykset aina."</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Nimeä uudelleen"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Vaihda kuvake"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Vaihda kuvake"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Varoitus"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Sulje"</string>
<string name="device_feedback" msgid="5351614458411688608">"Lähetä palautetta tästä laitteesta"</string>
@@ -4694,7 +4755,7 @@
<string name="more_about_satellite_messaging" msgid="3385673133561348509">"Tietoa satelliittiviestinnästä"</string>
<string name="satellite_warning_dialog_title" msgid="1610117852475376931">"<xliff:g id="FUNCTION">%1$s</xliff:g> ei ole käytettävissä"</string>
<string name="satellite_warning_dialog_content" msgid="936419945275934955">"Katkaise satelliittiyhteys, jotta <xliff:g id="FUNCTION">%1$s</xliff:g> voidaan laittaa päälle"</string>
- <string name="mobile_network_apn_title" msgid="5582995550142073054">"Tukiasemien nimet"</string>
+ <string name="mobile_network_apn_title" msgid="5582995550142073054">"Yhteysosoitteet"</string>
<string name="keywords_access_point_names" msgid="8174967126858505945">"apn"</string>
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Ei käytettävissä <xliff:g id="CARRIER">%1$s</xliff:g> ‑käytön aikana"</string>
<string name="see_more" msgid="7499355691042812723">"Lisää"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Tämän laitteen dataosio on muunnettava ext4-muotoon ennen 16 kt:n kehittäjäasetuksen käyttämistä. Ohjelmiston eheyttä ei voida taata tässä tilassa. Kaikki tälle puhelimelle tallennettu data voi olla vaarassa, kun käynnistysohjelman lukitus on auki. 16 kt:n tilan aktivoiminen edellyttää tämän jälkeen vielä yhtä uudelleenkäynnistystä. Kun olet tässä tilassa, voit vaihtaa 4 kt:n ja 16 kt:n tilan välillä yhdellä uudelleenkäynnistyksellä. Jotkin ominaisuudet on poistettu käytöstä näissä tiloissa, eivätkä kaikki sovellukset välttämättä toimi. Jos haluat palauttaa laitteen tuotantotilaan, sinun on vaihdettava takaisin 4 kt:n tilaan ja lukittava käynnistysohjelma. Tämä palauttaa laitteen tehdasasetukset. Kun laite käynnistyy Androidissa, poista OEM-avaus käytöstä kehittäjäasetuksista. Laite pyyhitään ja tiedostojärjestelmä vaihdetaan ext4-muotoon vahvistuksen jälkeen. Kun tämä on valmis, palaa ottamaan 16 kt:n tila uudelleen käyttöön."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Poista kaikki data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Dataosion tyhjentäminen ja uudelleenformatointi ext4-muotoon epäonnistui."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 kt:n tila edellyttää käynnistysohjelman lukituksen avausta"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Tämän laitteen käynnistysohjelma on avattava ennen 16 kt:n kehittäjäasetuksen käyttämistä. Ohjelmiston eheyttä ei voida taata tässä tilassa. Kaikki tälle puhelimelle tallennettu data voi olla vaarassa, kun käynnistysohjelman lukitus on auki. Kaikki käyttäjädata ja asetukset pyyhitään, kun 16 kt:n tila aktivoidaan. Kun käynnistysohjelman lukitus on avattu, 16 kt:n tilan aktivointi edellyttää kahta uudelleenkäynnistystä. Kun olet tässä tilassa, voit vaihtaa 4 kt:n ja 16 kt:n tilan välillä yhdellä uudelleenkäynnistyksellä. Jotkin ominaisuudet on poistettu käytöstä näissä tiloissa, eivätkä kaikki sovellukset välttämättä toimi. Jos haluat palauttaa laitteen tuotantotilaan, sinun on vaihdettava takaisin 4 kt:n tilaan ja tehtävä käynnistysohjelman tai OEM:n lukitus. Tämä palauttaa laitteen tehdasasetukset. Avaa käynnistysohjelman lukitus ja yritä uudelleen. Voit katsoa ohjeet tämän tekemiseen osoitteesta <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Käytetään 4 kt:n sivusta riippumatonta tilaa"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Olet sivusta riippumattoman tilan 4 kt:n tilassa. Ohjelmiston eheyttä ei voida taata tässä tilassa. Kaikki tälle puhelimelle tallennettu data voi olla vaarassa, kun käynnistysohjelman lukitus on auki. Jotkin ominaisuudet on poistettu käytöstä näissä tiloissa, eivätkä kaikki sovellukset välttämättä toimi. Jos haluat siirtyä tuotantotilaan uudelleen, sinun on lukittava käynnistysohjelma. Lue lisää napauttamalla."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Olet sivusta riippumattoman tilan 4 kt:n tilassa. Ohjelmiston eheyttä ei voida taata tässä tilassa. Kaikki tälle puhelimelle tallennettu data voi olla vaarassa, kun käynnistysohjelman lukitus on auki. Jotkin ominaisuudet on poistettu käytöstä näissä tiloissa, eivätkä kaikki sovellukset välttämättä toimi. Jos haluat siirtyä tuotantotilaan uudelleen, sinun on lukittava käynnistysohjelma. Tämä palauttaa laitteen tehdasasetukset uudelleen ja palauttaa sen tuotantoasetuksiin. Kun laite käynnistyy Androidissa, poista OEM-avaus käytöstä kehittäjäasetuksista. Jos laitteen käynnistäminen Androidiin epäonnistuu tai se on epävakaa, suorita Flash uudelleen viimeisimmillä tehdasasetusten näköistiedostoilla osoitteesta <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> tai käytä <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ja valitse \"Pyyhi laite\", \"Lukitse käynnistysohjelma\" tai \"Pakota Flash kaikille osioille\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Käytetään 16 kt:n sivusta riippumatonta tilaa"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Olet sivusta riippumattoman tilan 16 kt:n tilassa. Ohjelmiston eheyttä ei voida taata tässä tilassa. Kaikki tälle puhelimelle tallennettu data voi olla vaarassa, kun käynnistysohjelman lukitus on auki. Jotkin ominaisuudet on poistettu käytöstä näissä tiloissa, eivätkä kaikki sovellukset välttämättä toimi. Jos haluat siirtyä tuotantotilaan uudelleen, sinun on vaihdettava takaisin 4 kt:n tilaan ja lukittava käynnistysohjelma. Lue lisää napauttamalla."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Olet sivusta riippumattoman tilan 16 kt:n tilassa. Ohjelmiston eheyttä ei voida taata tässä tilassa. Kaikki tälle puhelimelle tallennettu data voi olla vaarassa, kun käynnistysohjelman lukitus on auki. Jotkin ominaisuudet on poistettu käytöstä näissä tiloissa, eivätkä kaikki sovellukset välttämättä toimi. Jos haluat siirtyä tuotantotilaan uudelleen, sinun on vaihdettava takaisin 4 kt:n tilaan ja lukittava käynnistysohjelma. Tämä palauttaa laitteen tehdasasetukset uudelleen ja palauttaa sen tuotantoasetuksiin. Kun laite käynnistyy Androidissa, poista OEM-avaus käytöstä kehittäjäasetuksista. Jos laitteen käynnistäminen Androidiin epäonnistuu tai se on epävakaa, asenna Flash uudelleen viimeisimmillä tehdasasetusten näköistiedostoilla osoitteesta <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> tai käytä <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ja valitse \"Pyyhi laite\", \"Lukitse käynnistysohjelma\" ja \"Pakota Flash kaikille osioille\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 kt:n sivusta riippumaton tila"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lue lisää"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Virheraportin käsittelijä"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Käytä sovelluksen kiinnitystä"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Käytä kehittäjäasetuksia"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Käytä tulostuspalvelua"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Salli useat käyttäjät"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"salli, useita, käyttäjä, lupa, monta"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"monta, käyttäjää, profiilia, henkilöä, tiliä, vaihda, useita"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Käytä langatonta virheenkorjausta"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-fr-feminine/strings.xml b/res/values-fr-feminine/strings.xml
index 9d7b864..d472234 100644
--- a/res/values-fr-feminine/strings.xml
+++ b/res/values-fr-feminine/strings.xml
@@ -26,6 +26,7 @@
<string name="vpn_replace_vpn_message" msgid="1094297700371463386">"Vous êtes déjà connectée à un VPN. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé."</string>
<string name="vpn_lockdown_summary" msgid="4700625960550559029">"Sélectionnez un profil VPN auquel rester connectée en permanence. Le trafic réseau ne sera autorisé que lorsque vous serez connectée à ce VPN."</string>
<string name="guest_category_title" msgid="5562663588315329152">"Invitée (Vous)"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Restez concentrée"</string>
<string name="users_summary" msgid="8473589474976307510">"Connectée en tant que \"<xliff:g id="USER_NAME">%1$s</xliff:g>\""</string>
<string name="zen_suggestion_summary" msgid="1984990920503217">"Suspendre les notifications pour rester concentrée"</string>
<string name="bluetooth_phonebook_access_dialog_content" msgid="959658135522249170">"Un appareil Bluetooth, <xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>, souhaite accéder à vos contacts et à votre journal d\'appels. Ceci inclut des données concernant les appels entrants et sortants.\n\nVous ne vous êtes jamais connectée à <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> auparavant."</string>
diff --git a/res/values-fr-masculine/strings.xml b/res/values-fr-masculine/strings.xml
index 57e733e..2b1f4b7 100644
--- a/res/values-fr-masculine/strings.xml
+++ b/res/values-fr-masculine/strings.xml
@@ -26,6 +26,7 @@
<string name="vpn_replace_vpn_message" msgid="1094297700371463386">"Vous êtes déjà connecté à un VPN. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé."</string>
<string name="vpn_lockdown_summary" msgid="4700625960550559029">"Sélectionnez un profil VPN auquel rester connecté en permanence. Le trafic réseau ne sera autorisé que lorsque vous serez connecté à ce VPN."</string>
<string name="guest_category_title" msgid="5562663588315329152">"Invité (Vous)"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Restez concentré"</string>
<string name="users_summary" msgid="8473589474976307510">"Connecté en tant que \"<xliff:g id="USER_NAME">%1$s</xliff:g>\""</string>
<string name="zen_suggestion_summary" msgid="1984990920503217">"Suspendre les notifications pour rester concentré"</string>
<string name="bluetooth_phonebook_access_dialog_content" msgid="959658135522249170">"Un appareil Bluetooth, <xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>, souhaite accéder à vos contacts et à votre journal d\'appels. Ceci inclut des données concernant les appels entrants et sortants.\n\nVous ne vous êtes jamais connecté à <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> auparavant."</string>
diff --git a/res/values-fr-neuter/strings.xml b/res/values-fr-neuter/strings.xml
index ca3db60..8933f75 100644
--- a/res/values-fr-neuter/strings.xml
+++ b/res/values-fr-neuter/strings.xml
@@ -26,6 +26,7 @@
<string name="vpn_replace_vpn_message" msgid="1094297700371463386">"Vous êtes déjà connecté·e à un VPN. Si vous vous connectez à un autre VPN, le VPN actuel sera remplacé."</string>
<string name="vpn_lockdown_summary" msgid="4700625960550559029">"Sélectionnez un profil VPN auquel rester connecté·e en permanence. Le trafic réseau ne sera autorisé que lorsque vous serez connecté·e à ce VPN."</string>
<string name="guest_category_title" msgid="5562663588315329152">"Invité·e (Vous)"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Restez concentré·e"</string>
<string name="users_summary" msgid="8473589474976307510">"Connecté·e en tant que \"<xliff:g id="USER_NAME">%1$s</xliff:g>\""</string>
<string name="zen_suggestion_summary" msgid="1984990920503217">"Suspendre les notifications pour garder votre concentration"</string>
<string name="bluetooth_phonebook_access_dialog_content" msgid="959658135522249170">"Un appareil Bluetooth, <xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>, souhaite accéder à vos contacts et à votre journal d\'appels. Ceci inclut des données concernant les appels entrants et sortants.\n\nVous ne vous êtes jamais connecté·e à <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g> auparavant."</string>
diff --git a/res/values-fr-rCA/arrays.xml b/res/values-fr-rCA/arrays.xml
index e34b5fb..0849114 100644
--- a/res/values-fr-rCA/arrays.xml
+++ b/res/values-fr-rCA/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Heure du coucher"</item>
+ <item msgid="4152450357280759894">"En conduite"</item>
+ <item msgid="7096549258219399423">"Immersif"</item>
+ <item msgid="2760716776980432977">"Gérée"</item>
+ <item msgid="601734478369121764">"Étoile"</item>
+ <item msgid="6243809315432780521">"Agenda"</item>
+ <item msgid="4913577903148415331">"Heure"</item>
+ <item msgid="3653377604690057780">"Théâtre"</item>
+ <item msgid="3843711267408385410">"Fleur"</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 f4c65ad..46391f7 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Paramètres de l\'appareil auditif"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Raccourci, compatibilité avec les prothèses auditives"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Préréglage"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Aucun préréglage n\'a été programmé par votre audiologiste"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Impossible de mettre à jour le préréglage"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Sortie audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"À propos de la sortie audio"</string>
@@ -281,7 +282,7 @@
<string name="location_settings_title" msgid="8375074508036087178">"Position"</string>
<string name="location_settings_primary_switch_title" msgid="8849081766644685127">"Utiliser ma position"</string>
<string name="location_settings_summary_location_off" msgid="4797932754681162262">"Désactivé"</string>
- <string name="location_settings_summary_location_on" msgid="4273299717586679786">"{count,plural, =1{Activée / # application a accès à la position}one{Activée / # application a accès à la position}other{Activée / # applications ont accès à la position}}"</string>
+ <string name="location_settings_summary_location_on" msgid="4273299717586679786">"{count,plural, =1{Activée / # appli a accès à la position}one{Activée / # appli a accès à la position}other{Activée / # applis ont accès à la position}}"</string>
<string name="location_settings_loading_app_permission_stats" msgid="6054103701535557342">"Chargement en cours…"</string>
<string name="location_settings_footer_general" msgid="1040507068701188821">"Les applications qui disposent de l\'autorisation de détection des appareils à proximité peuvent déterminer la position relative des appareils connectés."</string>
<string name="location_settings_footer_location_off" msgid="8568995909147566720">"L\'accès à la position est désactivé pour les applications et les services. La position de votre appareil pourrait quand même être envoyée aux intervenants d\'urgence lorsque vous appelez ou textez un numéro d\'urgence."</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"En savoir plus sur le Déverrouillage à l\'aide d\'une montre"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Ajouter une montre"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Retirer une montre"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Déverrouillage empreinte digitale et reconnaissance faciale"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Déverr. par reconn. faciale et empreinte digitale"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Déverr. par reconn. faciale et empreinte digitale pour le travail"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Configuration requise"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Empreintes digitales et visage ajoutés"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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 applications 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_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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Redémarrer l\'appareil?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Les détails de la journalisation CCP sont enregistrés à des fins de développement uniquement. Des données CCP supplémentaires sont comprises dans les rapports de bogue, qui peuvent contenir des renseignements confidentiels. Redémarrez votre appareil pour modifier ce paramètre."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Redémarrer"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Diffusion"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"miroir"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Activer l\'affichage sans fil"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptatives"</string>
<string name="brightness" msgid="6216871641021779698">"Niveau de luminosité"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Luminosité adaptative"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"À propos de la luminosité adaptative"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"La luminosité de votre écran s\'adapte automatiquement à votre environnement et à vos activités. Vous pouvez déplacer le curseur manuellement pour aider la luminosité adaptative à apprendre vos préférences."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activé"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Désactivée"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Utilisateur sélectionné : <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Parole"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Vitesse du pointeur"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Manette de jeu"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Rediriger les vibrations"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Rediriger les vibrations vers la manette de jeu lorsqu\'elle est connectée"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuer quand même"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Annuler"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Paramètres d\'agrandissement"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Effectuez un panoramique avec un doigt"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Déplacez la zone d\'agrand. en faisant glisser un doigt."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Déplacez la zone d\'agrand. en faisant glisser deux doigts."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Non disponible lorsque vous agrandissez seulement une partie de l\'écran"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Touchez un bouton pour zoomer"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zoomez rapidement pour agrandir le contenu"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Pour zoomer :</b><br/> {0,number,integer}. Utilisez le raccourci pour commencer l\'agrandissement<br/> {1,number,integer}. Touchez l\'écran<br/> {2,number,integer}. Faites glisser deux doigts pour naviguer dans l\'écran<br/> {3,number,integer}. Pincez l\'écran avec deux doigts pour ajuster le zoom<br/> {4,number,integer}. Utilisez le raccourci pour arrêter l\'agrandissement<br/><br/><b>Pour zoomer temporairement :</b><br/> {0,number,integer}. Assurez-vous que le type d\'agrandissement est défini à plein écran<br/> {1,number,integer}. Utilisez le raccourci pour commencer l\'agrandissement<br/> {2,number,integer}. Maintenez le doigt sur une zone de l\'écran<br/> {3,number,integer}. Faites glisser un doigt pour naviguer dans l\'écran<br/> {4,number,integer}. Levez le doigt pour arrêter l\'agrandissement"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"When magnification is turned on, you can zoom in on your screen.\n\n"<b>"Pour effectuer un zoom,"</b>", activez cette fonction, puis touchez une zone de l\'écran.\n"<ul><li>"Glissez deux doigts ou plus sur l\'écran pour le faire défiler"</li>\n<li>"Pincez deux doigts ou plus pour ajuster le zoom"</li></ul>\n\n<b>"Pour zoomer temporairement l\'écran"</b>", touchez le bouton d\'accessibilité, puis maintenez le doigt sur ailleurs sur l\'écran.\n"<ul><li>"Glissez votre doigt sur l\'écran à l\'endroit désiré"</li>\n<li>"Relevez le doigt pour zoomer vers l\'arrière"</li></ul>\n\n"On ne peut pas zoomer sur le clavier ou la barre de navigation."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> sur <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Raccourci du bouton d\'accessibilité"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Modes prioritaires"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Recevez uniquement les notifications des personnes et des applications importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Sélectionner le type d\'activation"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Heure"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"P. ex. « De 9 h 30 à 17 h »"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Agenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"P. ex. « Agenda personnel »"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limiter les interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activer le mode Ne pas déranger"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Les alarmes et les sons des éléments multimédias peuvent provoquer des interruptions"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Horaires"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Supprimer les horaires"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Supprimer"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Modifier"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Horaires"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Horaire"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Ajoutez un agenda"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Utiliser votre agenda"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programme"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Définissez un horaire"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programmer"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Horaire"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Tél. en silence à certains moments"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Autoriser les interruptions qui émettent des sons"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquer dérangements visuels"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Autoriser les signaux visuels"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Des notifications qui peuvent vous parvenir"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Rester concentré"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Actions supplémentaires"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Paramètres d\'affichage"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Options d\'affichage"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activer le thème sombre"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Faire en sorte que le SE et les applis utilisent plutôt une écriture pâle sur un fond foncé, ce qui peut être plus doux pour les yeux et permettre une économie considérable de la pile sur certains appareils"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Aucune modification apportée à l\'affichage}=1{{effect_1}}=2{{effect_1} et {effect_2}}=3{{effect_1}, {effect_2} et {effect_3}}one{{effect_1}, {effect_2} et # autre}other{{effect_1}, {effect_2} et # autres}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrer les interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Aucune interruption n\'est filtrée"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Afficher les options pour les notifications filtrées"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Quand le mode Ne pas déranger est activé"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Aucun son des notifications"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Catégories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Autre"</string>
<string name="no_channels" msgid="4716199078612071915">"Cette appli n\'a publié aucune notification"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Afficher les catégories inutilisées"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Paramètres supplémentaires dans l\'appli"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Afficher les catégories inutilisées"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Masquer les catégories inutilisées"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Applis sélectionnées"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Aucune"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Tout"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Autoriser les applications à ignorer le mode Ne pas déranger"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Applications qui peuvent provoquer des interruptions"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Sélectionner plus d\'applications"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Ne recevoir que les alarmes pendant une heure jusqu\'à {time}}one{Ne recevoir que les alarmes pendant # heure jusqu\'à {time}}other{Ne recevoir que les alarmes pendant # heures jusqu\'à {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ne recevoir que les alarmes jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Activer le mode Toujours interrompre"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Renommer"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Changer d\'icône"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Changer d\'icône"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Mise en garde"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Fermer"</string>
<string name="device_feedback" msgid="5351614458411688608">"Commentaires sur cet appareil"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"La partition de données de cet appareil doit être convertie en système de fichiers ext4 avant d\'utiliser l\'option de 16 Ko pour les développeurs. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toutes les données stockées sur le téléphone pendant que le programme d\'amorçage est déverrouillé pourraient être compromises. L\'activation de l\'option de 16 Ko nécessitera ensuite un autre redémarrage. Une fois que vous êtes dans ce mode, vous pouvez basculer entre le mode 4 Ko et le mode 16 Ko avec un seul redémarrage. Certaines fonctionnalités seront désactivées dans ces modes, de sorte que certaines applications peuvent ne pas fonctionner. Pour remettre l\'appareil en mode production, vous devrez revenir en mode 4 Ko et ensuite verrouiller le programme d\'amorçage, ce qui réinitialise l\'appareil à ses paramètres par défaut. Une fois que l\'appareil a bien démarré sous Android, désactivez le déverrouillage par le fabricant d\'équipement d\'origine dans les Options pour les développeurs. L\'appareil sera nettoyé et le système de fichiers sera remplacé par le système de fichiers ext4 après la confirmation. Une fois cette opération terminée, revenez pour activer à nouveau l\'option de 16 Ko."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Effacer toutes les données"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Échec du reformatage de la partition vers le système de fichiers ext4 et du nettoyage de ses données."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Déverrouillage du programme d\'amorçage requis pour le mode 16 Ko"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Cet appareil doit avoir le programme d\'amorçage déverrouillé avant d\'utiliser l\'option 16 Ko pour les développeurs. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toutes les données stockées sur le téléphone pendant que le programme d\'amorçage est déverrouillé pourraient être compromises. Toutes les données et tous les paramètres de l\'utilisateur seront nettoyés lors de l\'activation du mode 16 Ko. Une fois le programme d\'amorçage déverrouillé, l\'activation de l\'option de 16 Ko nécessitera deux redémarrages. Une fois que vous êtes dans ce mode, vous pouvez basculer entre le mode 4 Ko et le mode 16 Ko avec un seul redémarrage. Certaines fonctionnalités seront désactivées dans ces modes, de sorte que certaines applications peuvent ne pas fonctionner. Pour remettre l\'appareil en mode production, vous devrez revenir en mode 4 Ko et ensuite activer le verrouillage par le fabricant d\'équipement d\'origine et verrouiller le programme d\'amorçage de l\'appareil (ce qui le réinitialise à ses paramètres par défaut). Veuillez déverrouiller le programme d\'amorçage et réessayer. Vous trouverez des instructions à ce sujet à la page <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Utilisation du mode agnostique de page 4 Ko"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Vous êtes dans le mode 4 Ko du mode agnostique de page. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toutes les données stockées sur le téléphone pendant que le programme d\'amorçage est déverrouillé pourraient être compromises. Certaines fonctionnalités seront désactivées dans ces modes, de sorte que certaines applications peuvent ne pas fonctionner. Pour repasser en mode production, vous devez verrouiller le programme d\'amorçage de l\'appareil. Touchez l\'écran pour en savoir plus."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Vous êtes dans le mode 4 Ko du mode agnostique de page. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toutes les données stockées sur le téléphone pendant que le programme d\'amorçage est déverrouillé pourraient être compromises. Certaines fonctionnalités seront désactivées dans ces modes, de sorte que certaines applications peuvent ne pas fonctionner. Pour repasser en mode production, vous devez verrouiller le programme d\'amorçage de l\'appareil. Cette opération réinitialisera à nouveau l\'appareil et rétablira ses paramètres par défaut. Une fois que l\'appareil a bien démarré sous Android, désactivez le déverrouillage par le fabricant d\'équipement d\'origine dans les Options pour les développeurs. Si l\'appareil ne démarre pas sous Android ou s\'il est instable, flashez à nouveau l\'appareil avec les dernières images par défaut à partir de la page <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou utilisez la page <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> et sélectionnez « Nettoyer l\'appareil », « Verrouiller le programme d\'amorçage » et « Forcer le flash de toutes les partitions »."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Utilisation du mode agnostique de page 16 Ko"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Vous êtes dans le mode 16 Ko du mode agnostique de page. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toutes les données stockées sur le téléphone pendant que le programme d\'amorçage est déverrouillé pourraient être compromises. Certaines fonctionnalités seront désactivées dans ces modes, de sorte que certaines applications peuvent ne pas fonctionner. Pour repasser en mode production, vous devez basculer vers le mode 4 Ko, puis verrouiller le programme d\'amorçage de l\'appareil. Touchez l\'écran pour en savoir plus."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Vous êtes dans le mode 16 Ko du mode agnostique de page. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toutes les données stockées sur le téléphone pendant que le programme d\'amorçage est déverrouillé pourraient être compromises. Certaines fonctionnalités seront désactivées dans ces modes, de sorte que certaines applications peuvent ne pas fonctionner. Pour repasser en mode production, vous devez basculer vers le mode 4 Ko, puis verrouiller le programme d\'amorçage de l\'appareil. Cette opération réinitialisera à nouveau l\'appareil et rétablira ses paramètres par défaut. Une fois que l\'appareil a bien démarré sous Android, désactivez le déverrouillage par le fabricant d\'équipement d\'origine dans les Options pour les développeurs. Si l\'appareil ne démarre pas sous Android ou s\'il est instable, flashez à nouveau l\'appareil avec les dernières images par défaut à partir de la page <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou utilisez la page <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> et sélectionnez « Nettoyer l\'appareil », « Verrouiller le programme d\'amorçage » et « Forcer le flash de toutes les partitions »."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Mode agnostique de page 16 Ko"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lire la suite"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Gestionnaire de rapport de bogue"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Utiliser l\'Épinglage d\'application"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Utiliser les options pour les développeurs"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Utiliser le service d\'impression"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Autoriser plusieurs utilisateurs"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"autoriser, plusieurs, utilisateur, permettre, beaucoup"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiples, utilisateurs, profils, personnes, comptes, commutateur, plusieurs"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Utiliser le débogage sans fil"</string>
@@ -5353,4 +5418,6 @@
<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 votre <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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index 3f2dabb..9e9fd5f 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Coucher"</item>
+ <item msgid="4152450357280759894">"Conduite"</item>
+ <item msgid="7096549258219399423">"Immersif"</item>
+ <item msgid="2760716776980432977">"Géré"</item>
+ <item msgid="601734478369121764">"Étoile"</item>
+ <item msgid="6243809315432780521">"Calendrier"</item>
+ <item msgid="4913577903148415331">"Durée"</item>
+ <item msgid="3653377604690057780">"Cinéma"</item>
+ <item msgid="3843711267408385410">"Fleur"</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 7d43b53..5843124 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Paramètres de l\'appareil auditif"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Raccourci, compatibilité avec les appareils auditifs"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Préréglages"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Votre spécialiste de l\'audition n\'a configuré aucun préréglage"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Impossible de mettre à jour les préréglages"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Sortie audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"À propos de la sortie audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"En savoir plus sur le Déverrouillage par une montre"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Ajouter une montre"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Retirer la montre"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Déverrouillage par empreinte digitale et reconnaissance faciale"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Déverrouillage par reconnaissance faciale et empreinte digitale"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Déverrouillage par reco. faciale et empreinte pour le travail"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Configuration requise"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Visage et empreintes digitales ajoutés"</string>
@@ -558,7 +559,7 @@
<string name="private_space_fingerprint_unlock_title" msgid="3614016453395789051">"Déverrouillage de l\'espace privé par empreinte digitale"</string>
<string name="private_space_face_unlock_title" msgid="462248384776453613">"Déverrouillage de l\'espace privé par reconnaissance faciale"</string>
<string name="private_space_biometric_unlock_title" msgid="1978145237698659673">"Déverrouillage de l\'espace privé par reco. faciale/digitale"</string>
- <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"Configurer le déverrouillage de l\'espace privé par empreinte digitale"</string>
+ <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"Configurer le déverr. de l\'espace privé par empreinte digitale"</string>
<string name="private_space_fingerprint_enroll_introduction_message" msgid="9092068873421435300">"Utilisez votre empreinte digitale pour déverrouiller votre espace privé ou confirmer votre identité, par exemple pour vous connecter à des applis ou approuver un achat"</string>
<string name="private_space_fingerprint_enroll_introduction_footer_message" msgid="7125255484447984854">"Vous pouvez déverrouiller votre espace privé sans le vouloir, par exemple si quelqu\'un approche votre téléphone de votre doigt."</string>
<string name="private_space_fingerprint_enroll_finish_message" msgid="4754797926493316965">"Utilisez votre empreinte digitale pour déverrouiller votre espace privé ou approuver des achats"</string>
@@ -614,10 +615,8 @@
<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_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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"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 restauré sur un nouvel appareil. Si vous souhaitez l\'utiliser sur un autre appareil, vous devrez configurer un nouvel espace.\n\nQuiconque connecte votre appareil à un ordinateur ou y installe des applis malveillantes peut avoir accès à 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">"Cela peut prendre quelques instants"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configuration de l\'espace privé…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Redémarrer l\'appareil ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"La journalisation des détails NFC est destinée exclusivement au développement. Des données NFC supplémentaires sont incluses dans les rapports de bug. Ils peuvent contenir des informations privées. Redémarrez votre appareil pour modifier ce paramètre."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Redémarrer"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"duplication d\'écran"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Activer l\'affichage sans fil"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptatives"</string>
<string name="brightness" msgid="6216871641021779698">"Niveau de luminosité"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Luminosité adaptative"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"La luminosité de l\'écran s\'adapte automatiquement à votre environnement et à vos activités. Vous pouvez déplacer le curseur manuellement pour aider l\'appareil à apprendre vos préférences."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"À propos de la luminosité adaptative"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"La luminosité de l\'écran s\'adapte automatiquement à votre environnement et à vos activités. Vous pouvez déplacer le curseur manuellement pour aider la fonctionnalité à apprendre vos préférences."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activé"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Désactivé"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Balance des blancs de l\'écran"</string>
@@ -1247,7 +1277,7 @@
<string name="dark_ui_auto_mode_custom" msgid="3800138185265182170">"S\'active à l\'heure choisie"</string>
<string name="dark_ui_auto_mode_custom_bedtime" msgid="8465023741946439266">"S\'active à l\'heure du coucher"</string>
<string name="dark_ui_status_title" msgid="3505119141437774329">"État"</string>
- <string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"Ne s\'activera jamais automatiquement"</string>
+ <string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"Ne s\'active jamais automatiquement"</string>
<string name="dark_ui_summary_off_auto_mode_auto" msgid="6766831395970887213">"S\'active automatiquement au coucher du soleil"</string>
<string name="dark_ui_summary_off_auto_mode_custom" msgid="1345906088326708376">"S\'active automatiquement à <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="dark_ui_summary_off_auto_mode_custom_bedtime" msgid="7759826673214624622">"S\'active automatiquement à l\'heure du coucher"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Utilisateur sélectionné : <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voix"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Vitesse du pointeur"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Manette de jeu"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Vibreur pour la redirection"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Rediriger le vibreur vers la manette de jeu lorsque vous êtes connecté"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuer"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Annuler"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Paramètres d\'agrandissement"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Défilement panoramique à un doigt"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Déplacez la zone d\'agrandissement en faisant glisser un doigt sur cette dernière."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Déplacez la zone d\'agrandissement en faisant glisser deux doigts sur cette dernière."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Indisponible lors de l\'agrandissement d\'une partie de l\'écran uniquement"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Appuyer sur un bouton pour zoomer"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Faites un zoom avant rapide sur l\'écran pour agrandir le contenu"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Pour faire un zoom avant :</b><br/> {0,number,integer}. Utilisez le raccourci pour démarrer l\'agrandissement<br/> {1,number,integer}. Appuyez sur l\'écran<br/> {2,number,integer}. Faites glisser deux doigts pour vous déplacer sur l\'écran<br/> {3,number,integer}. Pincez avec deux doigts pour régler le zoom<br/> {4,number,integer}. Utilisez le raccourci pour arrêter l\'agrandissement<br/><br/> <b>Pour faire un zoom avant temporaire :</b><br/> {0,number,integer}. Assurez-vous que le type d\'agrandissement est défini sur plein écran<br/> {1,number,integer}. Utilisez le raccourci pour démarrer l\'agrandissement<br/> {2,number,integer}. Appuyez de manière prolongée n\'importe où sur l\'écran<br/> {3,number,integer}. Faites glisser un doigt pour vous déplacer sur l\'écran<br/> {4,number,integer}. Relevez le doigt pour arrêter l\'agrandissement"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Lorsque l\'option \"Agrandissement\" est activée, vous pouvez effectuer un zoom avant sur votre écran.\n\n"<b>"Pour zoomer"</b>", activez l\'option \"Agrandissement\", puis appuyez n\'importe où sur l\'écran.\n"<ul><li>"Pour faire défiler l\'écran, faites glisser deux doigts ou plus dessus."</li>\n<li>"Pour régler le niveau de zoom, pincez l\'écran avec deux doigts ou plus."</li></ul>\n\n<b>"Pour faire un zoom temporaire"</b>", lancez l\'option \"Agrandissement\", puis appuyez de manière prolongée n\'importe où sur l\'écran.\n"<ul><li>"Pour vous déplacer sur l\'écran, faites glisser un doigt dessus."</li>\n<li>"Pour faire un zoom arrière, relevez le doigt."</li></ul>\n\n"Il est impossible de faire un zoom avant sur le clavier ni sur la barre de navigation."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> sur <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Raccourci du bouton Accessibilité"</string>
@@ -2883,7 +2926,7 @@
<string name="data_usage_limit_editor_title" msgid="8826855902435008518">"Définir la limite de consommation des données"</string>
<string name="data_usage_limit_dialog_title" msgid="2053134451707801439">"Limitation de la conso des données"</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">"avert."</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">"plafond"</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">"plafond"</font></string>
<string name="data_usage_uninstalled_apps" msgid="9065885396147675694">"Applications supprimées"</string>
<string name="data_usage_uninstalled_apps_users" msgid="1262228664057122983">"Applications et utilisateurs supprimés"</string>
<string name="wifi_metered_title" msgid="6623732965268033931">"Utilisation du réseau"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Aucun}=1{1 programme défini}one{# programme défini}other{# programmes définis}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne pas déranger"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modes Prioritaires"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Recevez uniquement les notifications des personnes et applications importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Sélectionner le type d\'activation"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Durée"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Exemple : \"9h30 – 17h\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Agenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Exemple : \"Agenda personnel\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limiter les interruptions"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activer le mode Ne pas déranger"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Les alarmes et les sons des contenus multimédias peuvent interrompre le mode Ne pas déranger"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programmes"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Supprimer des programmes"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Supprimer"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Modifier"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programmes"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programme"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Ajouter un agenda"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Utiliser votre agenda"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programmer"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Définir une programmation"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programmation"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programme"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Tél. en silence à certains moments"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Autoriser les interruptions sonores"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquer nuisances visuelles"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Autoriser les signaux visuels"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifications qui peuvent vous parvenir"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Restez concentré"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Autres actions"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Paramètres d\'affichage"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Options d\'affichage"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activer le thème sombre"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Passer le système d\'exploitation et les applis en texte clair sur fond sombre, ce qui peut faciliter la lecture et permet d\'économiser considérablement la batterie sur certains appareils"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Aucun changement appliqué à l\'affichage}=1{{effect_1}}=2{{effect_1} et {effect_2}}=3{{effect_1}, {effect_2} et {effect_3}}one{{effect_1}, {effect_2} et # autre}other{{effect_1}, {effect_2} et # autres}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrer les interruptions"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Aucune interruption filtrée"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Options d\'affichage des notifications filtrées"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Lorsque Ne pas déranger est activé"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Aucune notification sonore"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Catégories"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Autres"</string>
<string name="no_channels" msgid="4716199078612071915">"Cette application n\'a publié aucune notification"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Afficher les catégories inutilisées"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Paramètres supplémentaires dans l\'application"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Afficher les catégories inutilisées"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Masquer les catégories inutilisées"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Applis sélectionnées"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Aucune"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Toutes"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Autoriser des applications à ignorer ce mode"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Applis qui peuvent interrompre"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Sélectionnez plus d\'applications"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Ne recevoir que les alarmes pendant 1 heure jusqu\'à {time}}one{Ne recevoir que les alarmes pendant # heure jusqu\'à {time}}other{Ne recevoir que les alarmes pendant # heures jusqu\'à {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ne recevoir que les alarmes jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Toujours interrompre"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Renommer"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Changer d\'icône"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Changer d\'icône"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Avertissement"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Fermer"</string>
<string name="device_feedback" msgid="5351614458411688608">"Envoyer commentaires sur l\'appareil"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"La partition des données de cet appareil doit être convertie en ext4 avant d\'utiliser l\'option 16 kB pour les développeurs. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toute donnée stockée sur le téléphone alors que le bootloader est déverrouillé peut être exposée à un risque. L\'activation du mode 16 kB nécessitera un ou plusieurs redémarrages après cette opération. Une fois que vous êtes dans ce mode, vous pouvez passer du mode 4 kB au mode 16 kB et inversement par le biais d\'un seul redémarrage. Certaines fonctionnalités seront désactivées dans ces modes, et certaines applications sont susceptibles de ne pas fonctionner. Pour remettre l\'appareil en mode Production, il vous faut repasser en mode 4 kB, puis verrouiller le bootloader, ce qui rétablit la configuration d\'usine de l\'appareil. Une fois que l\'appareil a bien démarré sous Android, désactivez le déverrouillage OEM dans les Options pour les développeurs. Après confirmation, l\'appareil sera nettoyé et le système de fichiers sera remplacé par ext4. Une fois cette opération terminée, revenez pour repasser en mode 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Effacer les données"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Échec du reformatage et de l\'effacement de la partition de données vers ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Déverrouillage du bootloader requis pour le mode 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Le bootloader de cet appareil doit être déverrouillé pour pouvoir utiliser l\'option 16 kB pour les développeurs. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toute donnée stockée sur le téléphone alors que le bootloader est déverrouillé peut être exposée à un risque. L\'ensemble des données et paramètres de l\'utilisateur seront effacés après l\'activation du mode 16 kB. Une fois le bootloader déverrouillé, l\'activation du mode 16 kB nécessitera deux redémarrages. Une fois que vous êtes dans ce mode, vous pouvez passer du mode 4 kB au mode 16 kB et inversement par le biais d\'un seul redémarrage. Certaines fonctionnalités seront désactivées dans ces modes, et certaines applications sont susceptibles de ne pas fonctionner. Pour remettre l\'appareil en mode Production, il vous faut repasser en mode 4 kB, puis verrouiller l\'OEM/le bootloader (ce qui rétablit la configuration d\'usine de l\'appareil). Verrouillez le bootloader, puis réessayez. Vous trouverez des instructions pour vous aider à réaliser cette opération à l\'adresse <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Utilisation du mode agnostique de page mémoire 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Vous utilisez le mode 4 kB du mode agnostique de page mémoire. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toute donnée stockée sur le téléphone alors que le bootloader est déverrouillé peut être exposée à un risque. Certaines fonctionnalités seront désactivées dans ces modes, et certaines applications sont susceptibles de ne pas fonctionner. Pour repasser en mode Production, vous devez verrouiller le bootloader de l\'appareil. Appuyez ici pour en savoir plus."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Vous utilisez le mode 4 kB du mode agnostique de page mémoire. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toute donnée stockée sur le téléphone alors que le bootloader est déverrouillé peut être exposée à un risque. Certaines fonctionnalités seront désactivées dans ces modes, et certaines applications sont susceptibles de ne pas fonctionner. Pour repasser en mode Production, vous devez verrouiller le bootloader de l\'appareil. Cela permet de rétablir la configuration d\'usine de l\'appareil à nouveau et d\'en rétablir les paramètres de production. Une fois que l\'appareil a bien démarré sous Android, désactivez le déverrouillage OEM dans les Options pour les développeurs. Si l\'appareil ne parvient pas à démarrer sous Android ou s\'il est instable, flashez de nouveau l\'appareil à l\'aide des dernières images d\'usine disponibles à l\'adresse <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou utilisez <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> et sélectionnez \"Nettoyer l\'appareil\", \"Verrouiller le bootloader\", puis \"Forcer le flash de l\'ensemble des partitions\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Utilisation du mode agnostique de page mémoire 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Vous utilisez le mode 16 kB du mode agnostique de page mémoire. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toute donnée stockée sur le téléphone alors que le bootloader est déverrouillé peut être exposée à un risque. Certaines fonctionnalités seront désactivées dans ces modes, et certaines applications sont susceptibles de ne pas fonctionner. Pour remettre l\'appareil en mode Production, vous devez repasser au mode 4 kB, puis verrouiller le bootloader de l\'appareil. Appuyez ici pour en savoir plus."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Vous utilisez le mode 16 kB du mode agnostique de page mémoire. L\'intégrité du logiciel ne peut pas être garantie dans ce mode, et toute donnée stockée sur le téléphone alors que le bootloader est déverrouillé peut être exposée à un risque. Certaines fonctionnalités seront désactivées dans ces modes, et certaines applications sont susceptibles de ne pas fonctionner. Pour remettre l\'appareil en mode Production, vous devez repasser au mode 4 kB, puis verrouiller le bootloader de l\'appareil. Cela permet de rétablir la configuration d\'usine de l\'appareil à nouveau et d\'en rétablir les paramètres de production. Une fois que l\'appareil a bien démarré sous Android, désactivez le déverrouillage OEM dans les Options pour les développeurs. Si l\'appareil ne parvient pas à démarrer sous Android ou s\'il est instable, flashez de nouveau l\'appareil à l\'aide des dernières images d\'usine disponibles à l\'adresse <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou utilisez <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> et sélectionnez \"Nettoyer l\'appareil\", \"Verrouiller le bootloader\", puis \"Forcer le flash de l\'ensemble des partitions\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Mode agnostique de page mémoire 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lire la suite"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Gestionnaire de rapport de bug"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Utiliser l\'épinglage d\'application"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Utiliser les options pour les développeurs"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Utiliser le service d\'impression"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Autoriser plusieurs utilisateurs"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"autoriser, plusieurs, utilisateur, permettre, beaucoup"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multiples, utilisateurs, profils, personnes, comptes, transfert, nombreux"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Utiliser le débogage sans fil"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-gl/arrays.xml b/res/values-gl/arrays.xml
index 1f4fe3f..ab0cc39 100644
--- a/res/values-gl/arrays.xml
+++ b/res/values-gl/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Hora de durmir"</item>
+ <item msgid="4152450357280759894">"Condución"</item>
+ <item msgid="7096549258219399423">"Envolvente"</item>
+ <item msgid="2760716776980432977">"Xestionado"</item>
+ <item msgid="601734478369121764">"Estrela"</item>
+ <item msgid="6243809315432780521">"Calendario"</item>
+ <item msgid="4913577903148415331">"Hora"</item>
+ <item msgid="3653377604690057780">"Cine"</item>
+ <item msgid="3843711267408385410">"Flor"</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 5e001f7..708c38c 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Configuración dos dispositivos auditivos"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Atallo, compatibilidade con audiófonos"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Configuración predeterminada"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"O audiólogo non fixo ningunha configuración predeterminada"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Non se puido actualizar a configuración predeterminada"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Saída de audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Acerca da saída de audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Máis información sobre a función Desbloqueo mediante reloxo"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Engadir reloxo"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Quitar reloxo"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Impresión dixital e desbloqueo facial"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueo facial e dactilar"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueo dactilar e facial para o traballo"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Cómpre realizar o proceso de configuración"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Engadíronse a cara e as impresións dixitais"</string>
@@ -614,10 +615,8 @@
<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_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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configurando espazo privado…"</string>
@@ -851,7 +850,37 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Queres reiniciar o dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"O rexistro detallado de NFC só se utiliza para fins de programación. Os datos de NFC adicionais inclúense nos informes de erros, que poden conter información privada. Reinicia o dispositivo para cambiar esta opción de configuración."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reiniciar"</string>
- <string name="wifi_display_settings_title" msgid="6451625615274960175">"Emisión"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
+ <string name="wifi_display_settings_title" msgid="6451625615274960175">"Emitir"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"proxección"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Activar visualización sen fíos"</string>
<string name="wifi_display_no_devices_found" msgid="7904877793677102805">"Non hai dispositivos cerca."</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Automáticas"</string>
<string name="brightness" msgid="6216871641021779698">"Nivel de brillo"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Brillo intelixente"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Acerca do brillo intelixente"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"O brillo da pantalla axustarase automaticamente segundo o ambiente e as actividades que leves a cabo. Podes mover o control desprazable de forma manual para que o brillo intelixente recoñeza as túas preferencias."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activado"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desactivado"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Selección do usuario: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voz"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocidade do punteiro"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Mando do xogo"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirixir vibración"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Envía vibración ao mando de xogos se está conectado"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuar igualmente"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancelar"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Configuración da ampliación"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Desprazamento cun dedo"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Arrastra un dedo para mover a área de ampliación."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Arrastra dous dedos para mover a área de ampliación."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Non dispoñible cando só se amplíe unha parte da pantalla"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Toca un botón para achegar o zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Se queres ampliar o contido, achégao rapidamente na pantalla usando o zoom"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Se queres achegar o contido usando o zoom, sigue estes pasos:</b><br/> {0,number,integer}. Utiliza o atallo cando queiras iniciar a ampliación<br/> {1,number,integer}. Toca a pantalla<br/> {2,number,integer}. Para moverte pola pantalla, arrastra dous dedos<br/> {3,number,integer}. Cando queiras axustar o zoom, belisca a pantalla con dous dedos<br/> {4,number,integer}. Utiliza o atallo para deter a ampliación<br/><br/> <b>Para achegar o contido temporalmente usando o zoom, sigue estes pasos:</b><br/> {0,number,integer}. Asegúrate de que o tipo de ampliación estea configurado a pantalla completa<br/> {1,number,integer}. Utiliza o atallo cando queiras iniciar a ampliación<br/> {2,number,integer}. Mantén premido calquera punto da pantalla<br/> {3,number,integer}. Para moverte pola pantalla, arrastra o dedo<br/> {4,number,integer}. Levanta o dedo para deter a ampliación"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Ao activar a ampliación, podes achegar o contido da pantalla.\n\n"<b>"Para utilizar o zoom"</b>", inicia a ampliación e toca calquera parte da pantalla.\n"<ul><li>"Arrastra 2 ou máis dedos para desprazarte."</li>\n<li>"Belisca con 2 ou máis dedos para axustar o zoom."</li></ul>\n\n<b>"Para utilizar o zoom de forma temporal"</b>", inicia a ampliación e mantén premida calquera parte da pantalla.\n"<ul><li>"Arrastra o dedo para moverte pola pantalla."</li>\n<li>"Levanta o dedo para afastar a imaxe ou o texto."</li></ul>\n\n"Ten en conta que non se pode ampliar o teclado nin a barra de navegación."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Páxina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Atallo do botón Accesibilidade"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ningunha planificación}=1{Definiuse 1 planificación}other{Definíronse # planificacións}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Non molestar"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modos de prioridade"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Só se reciben notificacións de aplicacións e persoas importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Seleccionar tipo de activación"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Hora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Por exemplo: \"9:30-17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendario"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Por exemplo: \"calendario persoal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitar as interrupcións"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activar modo Non molestar"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"As alarmas e os sons multimedia poden interromper o modo Non molestar"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Planificacións"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Eliminar planificacións"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Eliminar"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Engadir un calendario"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Usar o teu calendario"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programar"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Definir un horario"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Planificación"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silencia o teléfono en horas concretas"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permitir interrupcións que emitan son"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquear ruído visual"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permitir sinais visuais"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificacións que podes recibir"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Non te distraias"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Accións adicionais"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Configuración de visualización"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opcións de visualización"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activar tema escuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Cambia o sistema operativo e as aplicacións para daren preferencia a un texto claro sobre un fondo escuro, que é unha opción que pode ser máis agradable para a vista, ademais de supoñer un aforro de batería significativo nalgúns dispositivos"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Non hai ningún cambio na visualización}=1{{effect_1}}=2{{effect_1} e {effect_2}}=3{{effect_1}, {effect_2} e {effect_3}}other{{effect_1}, {effect_2} e # máis}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrar interrupcións"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Non hai ningunha interrupción filtrada"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcións de visualización das notificacións filtradas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Cando está activado o modo Non molestar"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Notificacións sen son"</string>
@@ -3665,6 +3726,7 @@
<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_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>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ocultar categorías sen usar"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Aplicacións seleccionadas"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ningunha"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Todas"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permitir que as aplicacións ignoren o modo Non molestar"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplicacións que poden interromper"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Selecciona máis aplicacións"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Cambia durante 1 hora (ata esta hora: {time}) ao modo Só alarmas}other{Cambia durante # horas (ata esta hora: {time}) ao modo Só alarmas}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Cambiar ao modo Só alarmas ata as <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Cambia a interromper sempre"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Cambiar nome"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Cambiar icona"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Cambiar a icona"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Advertencia"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Pechar"</string>
<string name="device_feedback" msgid="5351614458411688608">"Enviar comentarios do dispositivo"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Esta partición de datos do dispositivo debe converterse a ext4 antes de utilizar a opción de programador de 16 kB. A integridade do software non se pode garantir neste modo, e os datos almacenados no teléfono mentres está desbloqueado o cargador de arranque poden correr perigo. Para activar a opción de 16 kB será necesario reiniciar o dispositivo unha vez máis. Unha vez que esteas neste modo, poderás alternar entre o modo de 4 kB e 16 kB só cun reinicio. Desactivaranse algunhas funcións nestes modos, polo que pode que non funcionen algunhas aplicacións. Para facer que o dispositivo retorne ao modo de produción, terás que volver ao modo de 4 kB e bloquear o cargador de arranque, o que restablecerá a configuración de fábrica do dispositivo. Despois de que o dispositivo se inicie correctamente en Android, desactiva o desbloqueo do fabricante do equipo orixinal en Opcións de programador. Tras a confirmación, borraranse os datos do dispositivo e cambiarase o sistema de ficheiros a ext4. Unha vez completada esta operación, volve para activar de novo o modo de 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Borrar todos os datos"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Produciuse un erro ao borrar a partición de datos e cambiar o formato a ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"É necesario desbloquear o cargador de arranque para usar o modo de 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Cómpre desbloquear o cargador de arranque deste dispositivo antes de utilizar a opción de programador de 16 kB. A integridade do software non se pode garantir neste modo, e os datos almacenados no teléfono mentres está desbloqueado o cargador de arranque poden correr perigo. Borraranse todos os datos e opcións de configuración do usuario cando se active o modo de 16 kB. Despois de desbloquear o cargador de arranque, haberá que reiniciar o dispositivo dúas veces para activar a opción de 16 kB. Unha vez que esteas neste modo, poderás alternar entre o modo de 4 kB e 16 kB só cun reinicio. Desactivaranse algunhas funcións nestes modos, polo que pode que non funcionen algunhas aplicacións. Para facer que o dispositivo retorne ao modo de produción, terás que volver ao modo de 4 kB e bloquear o cargador de arranque ou o fabricante do equipo orixinal, o que restablecerá a configuración de fábrica do dispositivo. Desbloquea o cargador de arranque e téntao de novo. Podes consultar as instrucións deste proceso en <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Estase usando o modo independente de páxina de 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Estás usando o modo independente de páxina de 4 kB. A integridade do software non se pode garantir neste modo, e os datos almacenados no teléfono mentres está desbloqueado o cargador de arranque poden correr perigo. Desactivaranse algunhas funcións nestes modos, polo que pode que non funcionen algunhas aplicacións. Para facer que retorne ao modo de produción, terás que bloquear o cargador de arranque do dispositivo. Toca para obter máis información."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Estás usando o modo independente de páxina de 4 kB. A integridade do software non se pode garantir neste modo, e os datos almacenados no teléfono mentres está desbloqueado o cargador de arranque poden correr perigo. Desactivaranse algunhas funcións nestes modos, polo que pode que non funcionen algunhas aplicacións. Para facer que retorne ao modo de produción, terás que bloquear o cargador de arranque do dispositivo. Esta acción restablecerá de novo a configuración de fábrica do dispositivo e restaurará a súa configuración de produción. Despois de que o dispositivo se inicie correctamente en Android, desactiva o desbloqueo do fabricante do equipo orixinal en Opcións de programador. Se o dispositivo non arranca en Android ou é inestable, volve instalar as últimas imaxes de fábrica desde <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecciona as opcións de borrar datos do dispositivo, bloquear o cargador de arranque e forzar a instalación de todas as particións."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Estase usando o modo independente de páxina de 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Estás na opción de 16 kB do modo independente de páxina. A integridade do software non se pode garantir neste modo, e os datos almacenados no teléfono mentres está desbloqueado o cargador de arranque poden correr perigo. Desactivaranse algunhas funcións nestes modos, polo que pode que non funcionen algunhas aplicacións. Para facer que retorne ao modo de produción, terás que volver ao modo de 4 kB e bloquear o cargador de arranque do dispositivo. Toca para obter máis información."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Estás na opción de 16 kB do modo independente de páxina. A integridade do software non se pode garantir neste modo, e os datos almacenados no teléfono mentres está desbloqueado o cargador de arranque poden correr perigo. Desactivaranse algunhas funcións nestes modos, polo que pode que non funcionen algunhas aplicacións. Para facer que retorne ao modo de produción, terás que volver ao modo de 4 kB e bloquear o cargador de arranque do dispositivo. Esta acción restablecerá de novo a configuración de fábrica do dispositivo e restaurará a súa configuración de produción. Despois de que o dispositivo se inicie correctamente en Android, desactiva o desbloqueo do fabricante do equipo orixinal en Opcións de programador. Se o dispositivo non arranca en Android ou é inestable, volve instalar as últimas imaxes de fábrica desde <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecciona as opcións de borrar datos do dispositivo, bloquear o cargador de arranque e forzar a instalación de todas as particións."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modo independente de páxina de 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Ler máis"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Controlador do Informe de erros"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usar fixación de aplicación"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar opcións para programadores"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usar servizo de impresión"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir varios usuarios"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"permitir, varios, usuario, deixar, moitos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"múltiples, usuarios, perfís, persoas, contas, cambiar, moitos"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usar depuración sen fíos"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-gu/arrays.xml b/res/values-gu/arrays.xml
index 33420db..0219890 100644
--- a/res/values-gu/arrays.xml
+++ b/res/values-gu/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"બેડટાઇમ"</item>
+ <item msgid="4152450357280759894">"ડ્રાઇવિંગ"</item>
+ <item msgid="7096549258219399423">"ઇમર્સિવ"</item>
+ <item msgid="2760716776980432977">"મેનેજ કરેલી"</item>
+ <item msgid="601734478369121764">"સ્ટાર"</item>
+ <item msgid="6243809315432780521">"કૅલેન્ડર"</item>
+ <item msgid="4913577903148415331">"સમય"</item>
+ <item msgid="3653377604690057780">"થિયેટર"</item>
+ <item msgid="3843711267408385410">"ફૂલ"</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 3453adb..1b7b119 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"સાંભળવામાં મદદ આપતા ડિવાઇસ સંબંધી સેટિંગ"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"શૉર્ટકટ, શ્રવણ યંત્રની સુસંગતતા"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"પ્રીસેટ"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"તમારા ઑડિયોલોજિસ્ટ દ્વારા પ્રોગ્રામ કરેલા કોઈ પ્રીસેટ નથી"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"પ્રીસેટ અપડેટ કરી શક્યા નથી"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ઑડિયો આઉટપુટ"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ઑડિયો આઉટપુટ વિશે"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"વૉચ અનલૉક સુવિધા વિશે વધુ જાણો"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"વૉચ ઉમેરો"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"વૉચ કાઢી નાખો"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ફિંગરપ્રિન્ટ અને ફેસ અનલૉક"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ફેસ અનલૉક અને ફિંગરપ્રિન્ટ અનલૉક સુવિધા"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ઑફિસની પ્રોફાઇલ માટે ફેસ અને ફિંગરપ્રિન્ટ અનલૉકની સુવિધા"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"સેટઅપ જરૂરી છે"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ચહેરાનું મૉડલ અને એકથી વધુ ફિંગરપ્રિન્ટ ઉમેરી"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"શું ડિવાઇસને ફરી શરૂ કરીએ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFCનું વિગતવાર લૉગ ઇન માત્ર ડેવલપમેન્ટના હેતુઓ માટે છે. બગ રિપોર્ટમાં વધારાનો NFC ડેટા શામેલ છે, જેમાં ખાનગી માહિતી હોઈ શકે છે. આ સેટિંગમાં ફેરફાર કરવા માટે, તમારા ડિવાઇસને ફરી શરૂ કરો."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ફરી શરૂ કરો"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"કાસ્ટ કરો"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"મીરર"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"વાયરલેસ ડિસ્પ્લે સક્ષમ કરો"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"અડૅપ્ટિવ"</string>
<string name="brightness" msgid="6216871641021779698">"સ્ક્રીનની બ્રાઇટનેસનું લેવલ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"અડૅપ્ટિવ બ્રાઇટનેસ"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"તમારી સ્ક્રીનની બ્રાઇટનેસ તમારા પર્યાવરણ અને પ્રવૃત્તિઓ સાથે ઑટોમૅટિક રીતે ઓછું-વધતું થઈને ગોઠવાશે. તમે સ્લાઇડર મેન્યુઅલી ખસેડીને અડૅપ્ટિવ બ્રાઇટનેસને તમારી પસંદગીઓ જાણવામાં સહાય કરી શકો છો."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"અડૅપ્ટિવ બ્રાઇટનેસ વિશે"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"તમારી સ્ક્રીનની બ્રાઇટનેસ તમારા પર્યાવરણ અને ઍક્ટિવિટી સાથે ઑટોમૅટિક રીતે ઓછું-વધતું થઈને ગોઠવાશે. તમે સ્લાઇડર મેન્યુઅલી ખસેડીને અડૅપ્ટિવ બ્રાઇટનેસને તમારી પસંદગીઓ જાણવામાં સહાય કરી શકો છો."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ચાલુ કરો"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"બંધ"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"વ્હાઇટ બૅલેન્સ ડિસ્પ્લે"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"તેમ છતાં ચાલુ રાખો"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"રદ કરો"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"સ્ક્રીન મોટી કરવાનું સેટિંગ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"એક આંગળી વડે પૅન કરવાની સુવિધા"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"નાનામોટા કરવાના ભાગને 1 આંગળીથી ખસેડો"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"સ્ક્રીન પર અહીંતહીં જવા 1 આંગળીથી ખેંચો"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"એક આંગળી ખેંચીને મોટું કરવાનો વિસ્તાર ખસેડો."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"બે આંગળી ખેંચીને મોટું કરવાનો વિસ્તાર ખસેડો."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"માત્ર સ્ક્રીનના ભાગને મોટો કરતી વખતે અનુપલબ્ધ"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ઝૂમ કરવા માટે બટન ટૅપ કરો"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"કન્ટેન્ટને મોટું કરવા માટે સ્ક્રીનને ઝડપથી મોટી કરો"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>મોટું કરવા માટે:</b><br/> {0,number,integer}. મોટું કરવાનું શરૂ કરવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/> {1,number,integer}. સ્ક્રીન પર ટૅપ કરો<br/> {2,number,integer}. સ્ક્રીન પર કોઈપણ જગ્યાએ જવા માટે 2 આંગળી ખેંચો<br/> {3,number,integer}. નાનું-મોટું કરવાનું ગોઠવવા માટે 2 આંગળી વડે પિન્ચ કરો<br/> {4,number,integer}. મોટું કરવાનું રોકવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/><br/> <b>હંગામી રીતે મોટું કરવા માટે:</b><br/> {0,number,integer}. તમારા ડિવાઇસ પર મોટું કરવાના પ્રકારને પૂર્ણ સ્ક્રીન પર સેટ કરવામાં આવ્યો હોય તેની ખાતરી કરો<br/> {1,number,integer}. મોટું કરવાનું શરૂ કરવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/> {2,number,integer}. સ્ક્રીન પર ગમે-ત્યાં આંગળી ટચ કરીને થોડીવાર દબાવી રાખો<br/> {3,number,integer}. સ્ક્રીન પર કોઈપણ જગ્યાએ જવા માટે આંગળી ખેંચો<br/> {4,number,integer}. મોટું કરવાનું રોકવા માટે આંગળીને ઉઠાવી લો"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>મોટું કરવા માટે:</b><br/> {0,number,integer}. મોટું કરવાનું શરૂ કરવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/> {1,number,integer}. સ્ક્રીન પર ટૅપ કરો<br/> {2,number,integer}. સ્ક્રીન પર અહીંતહીં જવા 2 આંગળીથી ખેંચો<br/> {3,number,integer}. નાનું-મોટું કરવાનું ગોઠવવા માટે 2 આંગળી વડે પિન્ચ કરો<br/> {4,number,integer}. મોટું કરવાનું બંધ કરવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/><br/> તમે હંગામી રીતે મોટું કરવાની સાથે બીજું ઘણું કરી શકો છો."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>મોટું કરવા માટે:</b><br/> {0,number,integer}. મોટું કરવાનું શરૂ કરવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/> {1,number,integer}. સ્ક્રીન પર ટૅપ કરો<br/> {2,number,integer}. સ્ક્રીન પર અહીંતહીં જવા 1 કે 2 આંગળીથી ખેંચો<br/> {3,number,integer}. નાનું-મોટું કરવાનું ગોઠવવા માટે 2 આંગળી વડે પિન્ચ કરો<br/> {4,number,integer}. મોટું કરવાનું બંધ કરવા માટેના શૉર્ટકટનો ઉપયોગ કરો<br/><br/> તમે હંગામી રીતે મોટું કરવાની સાથે બીજું ઘણું કરી શકો છો."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"જ્યારે મેગ્નિફિકેશન ચાલુ હોય, ત્યારે તમે તમારી સ્ક્રીનને મોટી કરી શકો છો.\n\n"<b>"નાનું-મોટું કરવા માટે"</b>", મેગ્નિફિકેશન શરૂ કરો, પછી સ્ક્રીન પર ક્યાંય પણ ટૅપ કરો.\n"<ul><li>"સ્ક્રોલ કરવા માટે 2 કે તેથી વધુ આંગળી વડે ખેંચો"</li>\n<li>"નાનું-મોટું ગોઠવવા માટે 2 કે તેથી વધુ આંગળીથી પિન્ચ કરો"</li></ul>\n\n<b>"અસ્થાયી રૂપે નાનું-મોટું કરવા માટે"</b>", મેગ્નિફિકેશન શરૂ કરો, પછી સ્ક્રીન પર ગમે ત્યાં ટચ કરીને થોડીવાર દબાવી રાખો.\n"<ul><li>"સમગ્ર સ્ક્રીન પર આવવા-જવા માટે તમારી આંગળીને ખેંચો"</li>\n<li>"નાનું કરવા માટે તમારી આંગળીને ઉઠાવી લો"</li></ul>\n\n"તમે કીબોર્ડ અથવા નૅવિગેશન બાર પર મોટું કરી શકતાં નથી."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>માંથી <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> પેજ"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"ઍક્સેસિબિલિટી બટન શૉર્ટકટ"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{એકપણ નહીં}=1{એક શેડ્યૂલ સેટ કરવામાં આવ્યું}one{# શેડ્યૂલ સેટ કરવામાં આવ્યું}other{# શેડ્યૂલ સેટ કરવામાં આવ્યા}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"ખલેલ પાડશો નહીં"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"પ્રાધાન્યતાના મોડ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ફક્ત મહત્ત્વપૂર્ણ લોકો અને ઍપ દ્વારા નોટિફિકેશન મેળવો"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"સક્રિય કરવાના મોડનો પ્રકાર પસંદ કરો"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"સમય"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ઉદા. \"સવારે 9:30 – સાંજે 5:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"કૅલેન્ડર"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ઉદા. \"વ્યક્તિગત કૅલેન્ડર\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"વિક્ષેપો મર્યાદિત કરો"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"શેડ્યૂલ ડિલીટ કરો"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ડિલીટ કરો"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"કૅલેન્ડર ઉમેરો"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"તમારા કૅલેન્ડરનો ઉપયોગ કરો"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"શેડ્યૂલ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"શેડ્યૂલ સેટ કરો"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"શેડ્યૂલ"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ચોક્કસ સમયે ફોનના અવાજને મ્યૂટ કરો"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"અવાજવાળા વિક્ષેપોને મંજૂરી આપો"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"દૃશ્ય વિક્ષેપોને બ્લૉક કરો"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"વિઝ્યુઅલ સંકેતોને મંજૂરી આપો"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"તમારા સુધી પહોંચી શકે તેવા નોટિફિકેશન"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"એકાગ્રચિત્ત રહો"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"અતિરિક્ત ક્રિયાઓ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ડિસ્પ્લે સેટિંગ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ડિસ્પ્લેનાં વિકલ્પો"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ડાર્ક થીમ ચાલુ કરો"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"OS અને ઍપ સ્વિચ કરો, જેથી ઘેરા બૅકગ્રાઉન્ડ પર લાઇટ ટેક્સ્ટની પસંદગી કરી શકાય, જેનાથી આંખો માટે વધુ સરળતા રહી શકે છે અને અમુક ડિવાઇસ પર બૅટરીની નોંધપાત્ર બચતનો લાભ મળે છે"</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="mode_notification_filter_title" msgid="443728483176031977">"વિક્ષેપને ફિલ્ટર કરો"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"કોઈ વિક્ષેપને ફિલ્ટર કરેલા નથી"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"બિનવપરાયેલી કૅટેગરી બતાવો"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"બિનવપરાયેલી કૅટેગરી છુપાવો"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"બધી"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} સુધી ફક્ત એક કલાક માટે અલાર્મમાં બદલો}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"નામ બદલો"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"આઇકન બદલો"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"આઇકન બદલો"</string>
<string name="warning_button_text" msgid="1274234338874005639">"ચેતવણી"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"બંધ કરો"</string>
<string name="device_feedback" msgid="5351614458411688608">"આ ડિવાઇસ વિશે પ્રતિસાદ મોકલો"</string>
@@ -4022,8 +4079,8 @@
<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="system_alert_window_settings" msgid="6458633954424862521">"અન્ય ઍપથી ઉપર બતાવો"</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>
@@ -4172,7 +4229,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">"ડેટા સેવરનો ઉપયોગ કરો"</string>
<string name="unrestricted_app_title" msgid="8531936851059106374">"અસીમિત મોબાઇલ ડેટા વપરાશ"</string>
<string name="unrestricted_app_summary" msgid="8320813971858627624">"જ્યારે ડેટા સેવર ચાલુ હોય ત્યારે અસીમિત મોબાઇલ ડેટાના ઍક્સેસની મંજૂરી આપો"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"ડેવલપરના 16KB વિકલ્પનો ઉપયોગ કરતા પહેલાં આ ડિવાઇસના ડેટા પાર્ટીશનને ext4માં રૂપાંતરિત કરવાની જરૂર છે. આ મોડમાં સૉફ્ટવેરની સંપૂર્ણતાની ગૅરંટી આપી શકાતી નથી, અને જ્યારે બૂટલોડર અનલૉક કરેલું હોય ત્યારે ફોન પર સ્ટોર કરેલો કોઈપણ ડેટા જોખમમાં હોઈ શકે છે. 16KB વિકલ્પને સક્રિય કરવાથી આ પછી વધુ એક વખત રીબૂટ કરવાની જરૂર પડશે. એકવાર તમે આ મોડમાં આવી ગયા પછી, એક જ વખત રીબૂટ કરીને તમે 4KB અને 16KB મોડ વચ્ચે આગળ અને પાછળ સ્વિચ કરી શકો છો. આ મોડમાં અમુક સુવિધાઓ બંધ કરવામાં આવશે, તેથી અમુક ઍપ્લિકેશન કામ કરશે નહીં. ડિવાઇસને પ્રોડક્શન મોડમાં પાછું લાવવા માટે, તમારે 4KB મોડ પર પાછા સ્વિચ કરવાની અને પછી બૂટલોડરને લૉક કરવાની જરૂર પડશે, જે ડિવાઇસને ફેક્ટરી રીસેટ કરે છે. ડિવાઇસ સફળતાપૂર્વક Androidમાં બૂટ થાય તે પછી, ડેવલપરના વિકલ્પોમાં OEM અનલૉક કરવાની સુવિધાને ચાલુ કરો. ડિવાઇસને વાઇપ કરવામાં આવશે અને કન્ફર્મેશન પછી ફાઇલસિસ્ટમને ext4માં બદલવામાં આવશે. આ પૂર્ણ થયા પછી, 16KB ફરીથી ચાલુ કરવા માટે કૃપા કરીને પાછા આવો."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"બધો ડેટા કાઢી નાખો"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ડેટા પાર્ટિશનને ext4 પર ફરીથી ફૉર્મેટ અને વાઇપ કરી શક્યા નહીં."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB મોડ માટે બૂટલોડરને અનલૉક કરવાની જરૂર છે"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"ડેવલપરના 16KB વિકલ્પનો ઉપયોગ કરતા પહેલાં આ ડિવાઇસ દ્વારા બૂટલોડરને અનલૉક કરવાની જરૂર છે. આ મોડમાં સૉફ્ટવેરની સંપૂર્ણતાની ગૅરંટી આપી શકાતી નથી, અને જ્યારે બૂટલોડર અનલૉક કરેલું હોય ત્યારે ફોન પર સ્ટોર કરેલો કોઈપણ ડેટા જોખમમાં હોઈ શકે છે. 16KB મોડ સક્રિય કરતી વખતે વપરાશકર્તાનો તમામ ડેટા અને સેટિંગ વાઇપ થઈ જશે. એકવાર બૂટલોડર અનલૉક કરવામાં આવે, પછી 16KB વિકલ્પને સક્રિય કરવા માટે બે વખત રીબૂટ કરવાની જરૂર પડશે. એકવાર તમે આ મોડમાં આવી ગયા પછી, એક જ વખત રીબૂટ કરીને તમે 4KB અને 16KB મોડ વચ્ચે આગળ અને પાછળ સ્વિચ કરી શકો છો. આ મોડમાં અમુક સુવિધાઓ બંધ કરવામાં આવશે, તેથી અમુક ઍપ્લિકેશન કામ કરશે નહીં. ડિવાઇસને પ્રોડક્શન મોડમાં પાછું લાવવા માટે, તમારે 4KB મોડ પર પાછા સ્વિચ કરવાની જરૂર પડશે અને પછી OEM/બૂટલોડર ડિવાઇસને લૉક (જે ફેક્ટરી રીસેટ કરે છે) કરે છે. કૃપા કરીને બૂટલોડરને અનલૉક કરો અને ફરી પ્રયાસ કરો. તમે આ કેવી રીતે કરવું તે માટેની સૂચનાઓ <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> પર જોઈ શકો છો"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB પેજ-એગ્નોસ્ટિક મોડનો ઉપયોગ કરીને"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"તમે પેજ-એગ્નોસ્ટિક મોડના 4KB મોડમાં છો. આ મોડમાં સૉફ્ટવેરની સંપૂર્ણતાની ગૅરંટી આપી શકાતી નથી, અને જ્યારે બૂટલોડર અનલૉક કરેલું હોય ત્યારે ફોન પર સ્ટોર કરેલો કોઈપણ ડેટા જોખમમાં હોઈ શકે છે. આ મોડમાં અમુક સુવિધાઓ બંધ કરવામાં આવશે, તેથી અમુક ઍપ્લિકેશન કામ કરશે નહીં. પ્રોડક્શન મોડમાં ફરીથી દાખલ થવા માટે, તમારે ડિવાઇસના બૂટલોડરને લૉક કરવું આવશ્યક છે. વધુ વાંચવા ટૅપ કરો."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"તમે પેજ-એગ્નોસ્ટિક મોડના 4KB મોડમાં છો. આ મોડમાં સૉફ્ટવેરની સંપૂર્ણતાની ગૅરંટી આપી શકાતી નથી, અને જ્યારે બૂટલોડર અનલૉક કરેલું હોય ત્યારે ફોન પર સ્ટોર કરેલો કોઈપણ ડેટા જોખમમાં હોઈ શકે છે. આ મોડમાં અમુક સુવિધાઓ બંધ કરવામાં આવશે, તેથી અમુક ઍપ્લિકેશન કામ કરશે નહીં. પ્રોડક્શન મોડમાં ફરીથી દાખલ થવા માટે, તમારે ડિવાઇસના બૂટલોડરને લૉક કરવું આવશ્યક છે. આ ડિવાઇસને ફરીથી ફેક્ટરી રીસેટ કરશે અને તેને પ્રોડક્શન સેટિંગમાં રિસ્ટોર કરશે. ડિવાઇસ સફળતાપૂર્વક Androidમાં બૂટ થાય તે પછી, ડેવલપરના વિકલ્પોમાં OEM અનલૉક કરવાની સુવિધાને ચાલુ કરો. જો ડિવાઇસ Androidમાં બૂટ કરવામાં નિષ્ફળ જાય અથવા અસ્થિર હોય, તો <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> પરથી નવીનતમ ફેક્ટરી છબીઓ સાથે ડિવાઇસને ફરીથી ફ્લૅશ કરો અથવા <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>નો ઉપયોગ કરો અને \'ડિવાઇસ વાઇપ કરો\', \'બૂટલોડર લૉક કરો\' અને \'તમામ પાર્ટિશનને ફરજિયાત ફ્લૅશ કરો\' પસંદ કરો."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB પેજ-એગ્નોસ્ટિક મોડનો ઉપયોગ કરીને"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"તમે પેજ-એગ્નોસ્ટિક મોડના 16KB મોડમાં છો. આ મોડમાં સૉફ્ટવેરની સંપૂર્ણતાની ગૅરંટી આપી શકાતી નથી, અને જ્યારે બૂટલોડર અનલૉક કરેલું હોય ત્યારે ફોન પર સ્ટોર કરેલો કોઈપણ ડેટા જોખમમાં હોઈ શકે છે. આ મોડમાં અમુક સુવિધાઓ બંધ કરવામાં આવશે, તેથી અમુક ઍપ્લિકેશન કામ કરશે નહીં. પ્રોડક્શન મોડમાં ફરીથી દાખલ થવા માટે, તમારે 4K મોડ પર પાછા સ્વિચ કરવું આવશ્યક છે અને પછી ડિવાઇસના બૂટલોડરને લૉક કરો. વધુ વાંચવા ટેપ કરો."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"તમે પેજ-એગ્નોસ્ટિક મોડના 16KB મોડમાં છો. આ મોડમાં સૉફ્ટવેરની સંપૂર્ણતાની ગૅરંટી આપી શકાતી નથી, અને જ્યારે બૂટલોડર અનલૉક કરેલું હોય ત્યારે ફોન પર સ્ટોર કરેલો કોઈપણ ડેટા જોખમમાં હોઈ શકે છે. આ મોડમાં અમુક સુવિધાઓ બંધ કરવામાં આવશે, તેથી અમુક ઍપ્લિકેશન કામ કરશે નહીં. પ્રોડક્શન મોડમાં ફરીથી દાખલ થવા માટે, તમારે 4K મોડ પર પાછા સ્વિચ કરવું આવશ્યક છે અને પછી ડિવાઇસના બૂટલોડરને લૉક કરો. આ ડિવાઇસને ફરીથી ફેક્ટરી રીસેટ કરશે અને તેને પ્રોડક્શન સેટિંગમાં રિસ્ટોર કરશે. ડિવાઇસ સફળતાપૂર્વક Androidમાં બૂટ થાય તે પછી, ડેવલપરના વિકલ્પોમાં OEM અનલૉક કરવાની સુવિધાને ચાલુ કરો. જો ડિવાઇસ Androidમાં બૂટ કરવામાં નિષ્ફળ જાય અથવા અસ્થિર હોય, તો <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> પરથી નવીનતમ ફેક્ટરી છબીઓ સાથે ડિવાઇસને ફરીથી ફ્લૅશ કરો અથવા <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>નો ઉપયોગ કરો અને \'ડિવાઇસ વાઇપ કરો\', \'બૂટલોડર લૉક કરો\' અને \'તમામ પાર્ટિશનને ફરજિયાત ફ્લૅશ કરો\' પસંદ કરો."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB પેજ એગ્નોસ્ટિક મોડ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"વધુ વાંચો"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"બગ રિપોર્ટ હૅન્ડલ કરનાર"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"એકથી વધુ વપરાશકર્તાઓને મંજૂરી આપો"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index f05608a..3db8312 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"बेडटाइम"</item>
+ <item msgid="4152450357280759894">"ड्राइविंग"</item>
+ <item msgid="7096549258219399423">"इमर्सिव"</item>
+ <item msgid="2760716776980432977">"मैनेज किया गया"</item>
+ <item msgid="601734478369121764">"स्टार"</item>
+ <item msgid="6243809315432780521">"कैलेंडर"</item>
+ <item msgid="4913577903148415331">"समय"</item>
+ <item msgid="3653377604690057780">"थिएटर"</item>
+ <item msgid="3843711267408385410">"फूल"</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 f10c11c..81da7ea 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"कान की मशीन की सेटिंग"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"शॉर्टकट, कान की मशीन के साथ काम करने की सुविधा"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"प्रीसेट"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"आपके ऑडियोलॉजिस्ट ने कोई प्रीसेट सेट नहीं किया है"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"प्रीसेट अपडेट नहीं किया जा सका"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ऑडियो आउटपुट"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ऑडियो आउटपुट की जानकारी"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा के बारे में ज़्यादा जानें"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"स्मार्टवॉच कनेक्ट करें"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"स्मार्टवॉच डिसकनेक्ट करें"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"फ़िंगरप्रिंट और फ़ेस अनलॉक"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"फ़िंगरप्रिंट और फ़ेस अनलॉक"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"वर्क प्रोफ़ाइल के लिए, फ़ेस और फ़िंगरप्रिंट अनलॉक की सुविधा"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"सेटअप करना होगा"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"चेहरे का मॉडल और फ़िंगरप्रिंट जोड़े गए"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"क्या आपको डिवाइस रीस्टार्ट करना है?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"एनएफ़सी का लाॅग सिर्फ़ डेवलपमेंट के मकसद से बनाया गया है. गड़बड़ी की रिपोर्ट में एनएफ़सी का अतिरिक्त डेटा शामिल होता है. इसमें निजी जानकारी भी शामिल हो सकती है. इस सेटिंग को बदलने के लिए, डिवाइस को रीस्टार्ट करें."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"रीस्टार्ट करें"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"कास्ट करने की सेटिंग"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"स्क्रीन शेयर करें"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"बिना वायर के स्क्रीन दिखाना (वायरलेस डिसप्ले) चालू करें"</string>
@@ -1174,7 +1203,7 @@
<string name="accessibility_personal_account_title" msgid="8535265881509557013">"व्यक्तिगत खाता - <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
<string name="search_settings" msgid="7573686516434589771">"खोजें"</string>
<string name="display_settings" msgid="7197750639709493852">"डिसप्ले"</string>
- <string name="accelerometer_title" msgid="7745991950833748909">"स्क्रीन की ओरिएंटेशन अपने-आप बदलना (ऑटो-रोटेट)"</string>
+ <string name="accelerometer_title" msgid="7745991950833748909">"ऑटो-रोटेट"</string>
<string name="auto_rotate_option_off" msgid="2788096269396290731">"बंद है"</string>
<string name="auto_rotate_option_on" msgid="5776678230808498171">"चालू है"</string>
<string name="auto_rotate_option_face_based" msgid="3438645484087953174">"चालू है - चेहरे के हिसाब से"</string>
@@ -1189,9 +1218,10 @@
<string name="color_mode_option_natural" msgid="6192875655101283303">"बिना किसी बदलाव के"</string>
<string name="color_mode_option_boosted" msgid="4698797857766774289">"बूस्ट किया गया"</string>
<string name="color_mode_option_saturated" msgid="3413853820158447300">"रंग को गहरा या फीका किया गया"</string>
- <string name="color_mode_option_automatic" msgid="2281217686509980870">"ज़रूरत के हिसाब से स्क्रीन की चमक बदलता है"</string>
+ <string name="color_mode_option_automatic" msgid="2281217686509980870">"आस-पास की रोशनी के हिसाब से रंग बदल जाता है"</string>
<string name="brightness" msgid="6216871641021779698">"स्क्रीन की रोशनी का लेवल"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"आस-पास की लाइट के हिसाब से स्क्रीन की रोशनी"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"आस-पास की लाइट के हिसाब से स्क्रीन की रोशनी से जुड़ी जानकारी"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"आपकी गतिविधियों और आस-पास मौजूद लाइट के हिसाब से, डिवाइस की स्क्रीन की रोशनी अपने-आप अडजस्ट हो जाएगी. स्लाइडर को मैन्युअल तरीके से अडजस्ट करें. ऐसा करने से इस सुविधा को आपकी पसंद का पता चलेगा और अगली बार स्क्रीन की रोशनी आपके हिसाब से अडजस्ट करने में मदद मिलेगी."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"चालू है"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"बंद"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"जारी रखें"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"अभी नहीं"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ज़ूम करने की सुविधा की सेटिंग"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ज़ूम वाले हिस्से को एक उंगली से ड्रैग करने की सुविधा"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"ज़ूम वाले हिस्से को एक उंगली से ड्रैग करके इधर-उधर ले जाएं"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"स्क्रीन पर मूव करने के लिए उसे एक उंगली से खींचें और छोड़ें"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ज़ूम वाला हिस्सा एक उंगली से ड्रैग करके इधर-उधर ले जाएं."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ज़ूम वाला हिस्सा दो उंगलियों से ड्रैग करके इधर-उधर ले जाएं."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"स्क्रीन का एक हिस्सा ज़ूम करने के दौरान, यह सुविधा उपलब्ध नहीं होगी"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ज़ूम करने के लिए किसी बटन पर टैप करें"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"कॉन्टेंट को बड़े साइज़ में देखने के लिए, स्क्रीन पर तेज़ी से ज़ूम इन करें"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ज़ूम इन करने के लिए:</b><br/> {0,number,integer}. ज़ूम करने की सुविधा को शुरू करने के लिए, शॉर्टकट का इस्तेमाल करें<br/> {1,number,integer}. स्क्रीन पर टैप करें<br/> {2,number,integer}. स्क्रीन पर इधर-उधर जाने के लिए, दो उंगलियों से खींचें और छोड़ें<br/> {3,number,integer}. ज़ूम को कम या ज़्यादा करने के लिए, दो उंगलियों से पिंच करें<br/> {4,number,integer}. ज़ूम करने की सुविधा को बंद करने के लिए, शॉर्टकट का इस्तेमाल करें<br/><br/> <b>कुछ समय तक ज़ूम इन करने के लिए:</b><br/> {0,number,integer}. पक्का करें कि आपके डिवाइस पर, पूरी स्क्रीन को ज़ूम करने का विकल्प चुना गया हो<br/> {1,number,integer}. ज़ूम करने की सुविधा को शुरू करने के लिए, शॉर्टकट का इस्तेमाल करें<br/> {2,number,integer}. स्क्रीन पर कहीं भी उंगली से दबाकर रखें<br/> {3,number,integer}. स्क्रीन पर इधर-उधर जाने के लिए, उंगली से खींचें और छोड़ें<br/> {4,number,integer}. ज़ूम करने की सुविधा बंद करने के लिए, स्क्रीन से अपनी उंगली हटाएं"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>ज़ूम इन करने के लिए:</b><br/> {0,number,integer}. ज़ूम करने की सुविधा को शुरू करने के लिए, शॉर्टकट का इस्तेमाल करें<br/> {1,number,integer}. स्क्रीन पर टैप करें<br/> {2,number,integer}. स्क्रीन पर इधर-उधर जाने के लिए, उसे दो उंगलियों से खींचें और छोड़ें<br/> {3,number,integer}. ज़ूम को कम या ज़्यादा करने के लिए, दो उंगलियों से पिंच करें<br/> {4,number,integer}. ज़ूम करने की सुविधा को रोकने के लिए, शॉर्टकट का इस्तेमाल करें<br/><br/> आपके पास कुछ समय के लिए ज़ूम इन करने और अन्य काम करने का भी विकल्प है."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>ज़ूम इन करने के लिए:</b><br/> {0,number,integer}. ज़ूम करने की सुविधा को शुरू करने के लिए, शॉर्टकट का इस्तेमाल करें<br/> {1,number,integer}. स्क्रीन पर टैप करें<br/> {2,number,integer}. स्क्रीन पर इधर-उधर जाने के लिए, उसे एक या दो उंगली से खींचें और छोड़ें<br/> {3,number,integer}. ज़ूम को कम या ज़्यादा करने के लिए, दो उंगलियों से पिंच करें<br/> {4,number,integer}. ज़ूम करने की सुविधा को रोकने के लिए, शॉर्टकट का इस्तेमाल करें<br/><br/> आपके पास कुछ समय के लिए ज़ूम इन करने और अन्य काम करने का भी विकल्प है."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"बड़ा करके देखने की सुविधा चालू होने पर, आप स्क्रीन को ज़ूम इन कर सकते हैं.\n\n"<b>"ज़ूम करने के लिए"</b>", बड़ा करके देखने की सुविधा चालू करें और फिर स्क्रीन पर कहीं भी टैप करें.\n"<ul><li>"स्क्रोल करने के लिए दो या ज़्यादा उंगलियों से खींचें और छोड़ें"</li>\n<li>"ज़ूम नियंत्रित करने के लिए दो या ज़्यादा उंगलियों से पिंच करें"</li></ul>\n\n<b>"थोड़ी देर तक ज़ूम करने के लिए"</b>", बड़ा करके देखने की सुविधा चालू करें, फिर स्क्रीन पर कहीं भी दबाकर रखें.\n"<ul><li>"स्क्रीन के दूसरे हिस्सों पर जाने के लिए, उंगलियों से खींचें और छोड़ें"</li>\n<li>"ज़ूम घटाने के लिए उंगलियों को स्क्रीन से हटाएं"</li></ul>\n\n"आप कीबोर्ड या नेविगेशन बार को ज़ूम इन नहीं कर सकते."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"पेज <xliff:g id="NUM_PAGES">%2$d</xliff:g> में से <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"सुलभता बटन का शॉर्टकट"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{कोई शेड्यूल सेट नहीं है}=1{1 शेड्यूल सेट है}one{# शेड्यूल सेट है}other{# शेड्यूल सेट हैं}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"परेशान न करें"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"अहम मोड"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"सिर्फ़ ज़रूरी लोगों और ऐप्लिकेशन की सूचनाएं पाएं"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"मोड अपने-आप चालू होने का शेड्यूल चुनें"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"समय"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"उदाहरण के लिए, \"सुबह 9:30 से शाम 5:00 बजे तक\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"कैलेंडर"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"उदाहरण के लिए, \"निजी कैलेंडर\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"रुकावटों को कम करें"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"शेड्यूल मिटाएं"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"मिटाएं"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"कैलेंडर जोड़ें"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"कैलेंडर का इस्तेमाल करें"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"शेड्यूल"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"शेड्यूल सेट करें"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"शेड्यूल"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"कुछ खास समय पर फ़ोन साइलेंट करें"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"उन सूचनाओं की अनुमति दें जिनके लिए आवाज़ होती है"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"मैसेज पर स्क्रीन चमकने से रोकें"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"संकेत दिखाए जाने की अनुमति दें"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"वे सूचनाएं जो आपको मिल सकती हैं"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"फ़ोकस बनाए रखें"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"अन्य कार्रवाइयां"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"डिसप्ले की सेटिंग"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"डिसप्ले के विकल्प"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"इससे गहरे रंग वाली थीम चालू होती है"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"गहरे रंग के बैकग्राउंड पर हल्के रंग के टेक्स्ट को प्राथमिकता देने के लिए, ओएस और ऐप्लिकेशन पर स्विच करें. ऐसा करके, टेक्स्ट को देख पाना आसान हो जाता है. साथ ही, कुछ डिवाइसों पर बैटरी की काफ़ी बचत होती है"</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="mode_notification_filter_title" msgid="443728483176031977">"सूचना, साउंड वगैरह को रोकें"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"किसी भी सूचना, साउंड वगैरह को रोका नहीं जा रहा है"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"इस्तेमाल न हुई कैटगरी दिखाएं"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"इस्तेमाल न हुई कैटगरी छिपाएं"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"सभी"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} तक, सिर्फ़ एक घंटे के लिए अलार्म मोड पर स्विच करें}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"नाम बदलें"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"आइकॉन बदलें"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"आइकॉन बदलें"</string>
<string name="warning_button_text" msgid="1274234338874005639">"चेतावनी"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"बंद करें"</string>
<string name="device_feedback" msgid="5351614458411688608">"इस डिवाइस के बारे में सुझाव भेजें"</string>
@@ -4861,23 +4918,26 @@
<string name="enable_16k_pages" msgid="8001470927566110689">"16 केबी पेज साइज़ चालू करें"</string>
<string name="enable_16k_pages_summary" msgid="1964363364670306912">"16 केबी पेज साइज़ वाले कर्नेल के ज़रिए चालू करें"</string>
<string name="confirm_enable_16k_pages_title" msgid="611010487387251491">"4 केबी मोड से 16 केबी मोड पर स्विच करें"</string>
- <string name="confirm_enable_16k_pages_text" msgid="6129208614283750541">"आप 4 केबी कर्नेल पर चल रहे पेज-ऐग्नोस्टिक मोड में हैं. आपको 16 केबी मोड पर स्विच किया जा रहा है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. स्विच करने पर डिवाइस फिर से चालू होगा. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को वापस प्रोडक्शन मोड पर सेट करने के लिए, आपको फिर से 4 केबी मोड पर स्विच करना होगा और बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फ़ैक्ट्री रीसेट हो जाता है. जब डिवाइस, अपग्रेड किए गए वर्शन में चालू हो जाए, तब \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें."</string>
+ <string name="confirm_enable_16k_pages_text" msgid="6129208614283750541">"आप 4 केबी कर्नेल पर चल रहे पेज-ऐग्नोस्टिक मोड में हैं. आपको 16 केबी मोड पर स्विच किया जा रहा है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. स्विच करने पर डिवाइस फिर से चालू होगा. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को प्रोडक्शन मोड में वापस लाने के लिए, आपको फिर से 4 केबी मोड पर स्विच करना होगा और बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फ़ैक्ट्री रीसेट हो जाता है. डिवाइस का Android ऑपरेटिंग सिस्टम चालू हो जाने के बाद, \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें."</string>
<string name="confirm_enable_4k_pages_title" msgid="3210360137887034659">"16 केबी मोड से 4 केबी मोड पर स्विच करें"</string>
<string name="confirm_enable_4k_pages_text" msgid="155070605667160083">"आप 16 केबी कर्नेल पर चल रहे पेज-ऐग्नोस्टिक मोड में हैं. आपको 4 केबी मोड पर स्विच किया जा रहा है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक होने के दौरान आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में हो सकती है. इससे डिवाइस फिर से चालू होगा. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, ऐसा हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को प्रोडक्शन मोड में वापस लाने के लिए, आपको बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फ़ैक्ट्री रीसेट हो जाता है. डिवाइस के Android में चालू हो जाने के बाद, \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें."</string>
<string name="toast_16k_update_failed_text" msgid="8888858987184345567">"कर्नेल को 16 केबी पेज साइज़ के साथ काम करने वाले कर्नेल में अपडेट नहीं किया जा सका."</string>
<string name="progress_16k_ota_title" msgid="2117218313875523741">"बदलाव लागू किया जा रहा है"</string>
<string name="confirm_format_ext4_title" msgid="6696191800594435577">"क्या आपको अपना डिवाइस फिर से ext4 में फ़ॉर्मैट करना है? (16 केबी मोड के लिए ज़रूरी है)"</string>
- <string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 केबी मोड का इस्तेमाल करने से पहले, इस डिवाइस के डेटा पार्टिशन को ext4 में बदलना होगा. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. अगर आपने 16 केबी मोड चालू किया है, तो इसके बाद डिवाइस को एक और बार फिर से चालू करना होगा. इस मोड में आ जाने के बाद, डिवाइस को फिर से चालू करके 4 केबी और 16 केबी मोड के बीच स्विच किया जा सकता है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को प्रोडक्शन मोड में वापस लाने के लिए, आपको फिर से 4 केबी मोड पर स्विच करना होगा और बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फ़ैक्ट्री रीसेट हो जाता है. डिवाइस के Android में चालू हो जाने के बाद, \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें. इससे डिवाइस का डेटा वाइप हो जाएगा और पुष्टि करने के बाद, फ़ाइलसिस्टम ext4 में बदल दिया जाएगा. इस प्रक्रिया के बाद, कृपया फिर से 16 केबी मोड को चालू करें."</string>
+ <string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 केबी मोड का इस्तेमाल करने से पहले, इस डिवाइस के डेटा पार्टिशन को ext4 में बदलना होगा. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. अगर आपने 16 केबी मोड चालू किया है, तो इसके बाद डिवाइस को एक और बार चालू करना होगा. इस मोड में आ जाने के बाद, डिवाइस को फिर से चालू करके 4 केबी और 16 केबी मोड के बीच स्विच किया जा सकता है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को प्रोडक्शन मोड में वापस लाने के लिए, आपको फिर से 4 केबी मोड पर स्विच करना होगा और बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फ़ैक्ट्री रीसेट हो जाता है. डिवाइस का Android ऑपरेटिंग सिस्टम चालू हो जाने के बाद, \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें. इससे डिवाइस का डेटा वाइप हो जाएगा और पुष्टि करने के बाद, फ़ाइलसिस्टम ext4 में बदल दिया जाएगा. इस प्रक्रिया के बाद, कृपया फिर से 16 केबी मोड को चालू करें."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"डिवाइस का सारा डेटा हमेशा के लिए मिटाएं"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"डेटा के हिस्से को ext4 में फिर से फ़ॉर्मैट नहीं किया जा सका, न ही इसे वाइप किया जा सका."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 केबी मोड के लिए, बूटलोडर अनलॉक करना ज़रूरी है"</string>
- <string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 केबी मोड इस्तेमाल करने के लिए, इस डिवाइस के बूटलोडर को अनलॉक करना ज़रूरी है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. अगर 16 केबी मोड चालू किया जाता है, तो उपयोगकर्ता का पूरा डेटा और सभी सेटिंग वाइप हो जाती हैं. बूटलोडर अनलॉक करने के बाद, 16 केबी मोड चालू करने के लिए डिवाइस को दो बार फिर से चालू करने की ज़रूरत होती है. इस मोड के चालू हो जाने के बाद, डिवाइस को फिर से चालू करके 4 केबी और 16 केबी मोड के बीच स्विच किया जा सकता है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को वापस प्रोडक्शन मोड पर सेट करने के लिए, आपको 4 केबी मोड पर स्विच करना होगा. इसके बाद, ओईएम/बूटलोडर लॉक करना होगा. इससे डिवाइस फ़ैक्ट्री रीसेट हो जाएगा. कृपया बूटलोडर अनलॉक करें और फिर से कोशिश करें. बूटलोडर अनलॉक करने के निर्देश यहां देखे जा सकते हैं: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
+ <string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 केबी मोड इस्तेमाल करने के लिए, इस डिवाइस के बूटलोडर को अनलॉक करना ज़रूरी है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. अगर 16 केबी मोड चालू किया जाता है, तो उपयोगकर्ता का पूरा डेटा और सभी सेटिंग वाइप हो जाती हैं. बूटलोडर अनलॉक करने के बाद, 16 केबी मोड चालू करने के लिए डिवाइस को दो बार फिर से चालू करने की ज़रूरत होती है. इस मोड के चालू हो जाने के बाद, डिवाइस को फिर से चालू करके 4 केबी और 16 केबी मोड के बीच स्विच किया जा सकता है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. डिवाइस को प्रोडक्शन मोड में वापस लाने के लिए, आपको 4 केबी मोड पर स्विच करना होगा. इसके बाद, ओईएम/बूटलोडर लॉक करना होगा. इससे डिवाइस फ़ैक्ट्री रीसेट हो जाएगा. कृपया बूटलोडर अनलॉक करें और फिर से कोशिश करें. बूटलोडर अनलॉक करने के निर्देश यहां देखे जा सकते हैं: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 केबी पेज-एग्नोस्टिक मोड का इस्तेमाल किया जा रहा है"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"आप 4 केबी पेज साइज़ के साथ काम करने वाले मोड (पेज-ऐग्नोस्टिक मोड) में है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. इसे वापस प्रोडक्शन मोड पर सेट करने के लिए, आपको डिवाइस का बूटलोडर लॉक करना होगा. ज़्यादा पढ़ने के लिए टैप करें."</string>
- <string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"आप 4 केबी पेज साइज़ के साथ काम करने वाले मोड (पेज-ऐग्नोस्टिक मोड) में है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. प्रोडक्शन मोड में वापस जाने के लिए, आपको डिवाइस का बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फिर से फ़ैक्ट्री रीसेट हो जाएगा और इसकी प्रोडक्शन सेटिंग पहले जैसी हो जाएंगी. डिवाइस के Android में चालू हो जाने के बाद, \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें. अगर डिवाइस Android में चालू नहीं होता है या ठीक से काम नहीं करता है, तो <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> पर मौजूद नई फ़ैक्ट्री इमेज की मदद से डिवाइस को फिर से फ़्लैश करें या <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> का इस्तेमाल करें. इसके बाद, \'डिवाइस वाइप करें\', \'बूटलोडर को लॉक करें\', और \'सभी हिस्सों को ज़बरदस्ती फ़्लैश करें\' को चुनें."</string>
+ <string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"आप 4 केबी पेज साइज़ के साथ काम करने वाले मोड (पेज-ऐग्नोस्टिक मोड) में है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. प्रोडक्शन मोड में वापस जाने के लिए, आपको डिवाइस का बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फिर से फ़ैक्ट्री रीसेट हो जाएगा और इसकी प्रोडक्शन सेटिंग पहले जैसी हो जाएंगी. डिवाइस का Android ऑपरेटिंग सिस्टम चालू हो जाने के बाद, \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें. अगर Android ऑपरेटिंग सिस्टम चालू नहीं होता है या ठीक से काम नहीं करता है, तो <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> पर मौजूद नई फ़ैक्ट्री इमेज की मदद से डिवाइस को फिर से फ़्लैश करें या <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> का इस्तेमाल करें. इसके बाद, \'डिवाइस वाइप करें\', \'बूटलोडर को लॉक करें\', और \'सभी हिस्सों को ज़बरदस्ती फ़्लैश करें\' को चुनें."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 केबी पेज-ऐग्नोस्टिक मोड का इस्तेमाल किया जा रहा है"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"आप 16 केबी पेज साइज़ के साथ काम करने वाले मोड (पेज-ऐग्नोस्टिक मोड) में है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. इसे वापस प्रोडक्शन मोड पर सेट करने के लिए, आपको 4 केबी मोड पर फिर से स्विच करना होगा. इसके बाद, डिवाइस का बूटलोडर लॉक करना होगा. ज़्यादा पढ़ने के लिए टैप करें."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"आप 16 केबी पेज साइज़ के साथ काम करने वाले मोड (पेज-ऐग्नोस्टिक मोड) में है. इस मोड में सॉफ़्टवेयर के रखरखाव की गारंटी नहीं है. साथ ही, बूटलोडर अनलॉक रहने पर आपके फ़ोन में सेव डेटा की सुरक्षा खतरे में पड़ सकती है. इन मोड में कुछ सुविधाएं बंद हो जाएंगी. इसलिए, हो सकता है कि कुछ ऐप्लिकेशन काम न करें. इसे वापस प्रोडक्शन मोड पर सेट करने के लिए, आपको 4 केबी मोड पर फिर से स्विच करना होगा. इसके बाद, डिवाइस का बूटलोडर लॉक करना होगा. ऐसा करने पर, डिवाइस फिर से फ़ैक्ट्री रीसेट हो जाएगा और इसकी प्रोडक्शन सेटिंग पहले जैसी हो जाएंगी. जब डिवाइस, अपग्रेड किए गए वर्शन में चालू हो जाए, तब \'डेवलपर के लिए सेटिंग और टूल\' में जाकर ओईएम से अनलॉक करने की सेटिंग बंद करें. अगर डिवाइस अपग्रेड किए गए वर्शन में चालू नहीं होता है या ठीक से काम नहीं करता है, तो <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> पर मौजूद नई फ़ैक्ट्री इमेज की मदद से डिवाइस को फिर से फ़्लैश करें या <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> का इस्तेमाल करें. इसके बाद, \'डिवाइस वाइप करें\', \'बूटलोडर को लॉक करें\', और \'सभी हिस्सों को ज़बरदस्ती फ़्लैश करें\' को चुनें."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 केबी पेज-एग्नोस्टिक मोड"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ज़्यादा पढ़ें"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"गड़बड़ी की रिपोर्ट हैंडल करने वाला"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"एक से ज़्यादा उपयोगकर्ताओं को अनुमति दें"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml
index a5e61bc..0721307 100644
--- a/res/values-hr/arrays.xml
+++ b/res/values-hr/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Vrijeme za spavanje"</item>
+ <item msgid="4152450357280759894">"Vožnja"</item>
+ <item msgid="7096549258219399423">"Angažirajuće"</item>
+ <item msgid="2760716776980432977">"Upravljano"</item>
+ <item msgid="601734478369121764">"Zvijezda"</item>
+ <item msgid="6243809315432780521">"Kalendar"</item>
+ <item msgid="4913577903148415331">"Vrijeme"</item>
+ <item msgid="3653377604690057780">"Kazalište"</item>
+ <item msgid="3843711267408385410">"Cvijet"</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 c2db62b..8ad47b4 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Postavke slušnih pomagala"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Prečac, kompatibilnost sa slušnim pomagalima"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Unaprijed definirana postavka"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Nema definiranih postavki koje je definirao vaš audiolog"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Ažuriranje unaprijed definiranih postavki nije uspjelo"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audioizlaz"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"O audioizlazu"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saznajte više o otključavanju satom"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Dodaj sat"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Uklonite sat"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Otisak prsta i otključavanje licem"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Otključavanje licem i otiskom prsta"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Otključavanje licem i otiskom prsta za posao"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Potrebno je postavljanje"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Dodano je lice i otisci prsta"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalirajte aplikacije"</b>\n"Instalirajte aplikacije koje želite da ostanu privatne u vašem prostoru"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Napomena"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacije se zaustavljaju kad zaključate prostor"</b>\n"Kad zaključate prostor, aplikacije u vašem prostoru zaustavljaju se i nećete primati obavijesti od njih"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privatni prostori nisu prikladni za aplikacije koje moraju raditi u pozadini ili slati važne obavijesti, primjerice medicinske aplikacije. To je zato što se obavijesti i pozadinska aktivnost zaustavljaju kad je vaš prostor zaključan.\n\nAplikacije u vašem privatnom prostoru neće se prikazivati u upravitelju dopuštenja, na nadzornoj ploči za privatnost i u drugim postavkama kad je privatni prostor zaključan.\n\nVaš se privatni prostor ne može premjestiti na novi uređaj. Trebat ćete postaviti novi privatni prostor ako ga želite koristiti na drugom uređaju.\n\nSvatko tko poveže vaš uređaj s računalom ili instalira štetne aplikacije na vaš uređaj možda će moći pristupiti vašem privatnom prostoru."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privatni prostori nisu prikladni za aplikacije koje moraju raditi u pozadini ili slati važne obavijesti, primjerice medicinske aplikacije. To je zato što se obavijesti i pozadinska aktivnost zaustavljaju kad je vaš prostor zaključan.\n\nAplikacije u vašem privatnom prostoru neće se prikazivati u upravitelju dopuštenja, na nadzornoj ploči za privatnost i u drugim postavkama kad je privatni prostor zaključan.\n\nVaš se privatni prostor ne može vratiti na novom uređaju. Trebat ćete postaviti novi prostor ako ga želite koristiti na drugom uređaju.\n\nSvatko tko poveže vaš uređaj s računalom ili instalira zlonamjerne aplikacije na vaš uređaj možda će moći pristupiti vašem privatnom prostoru."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Saznajte više o privatnom prostoru"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"To će potrajati nekoliko trenutaka"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"U tijeku je postavljanje privatnog prostora…"</string>
@@ -652,7 +651,7 @@
<string name="encrypted_summary" msgid="545623487587251207">"Šifrirano"</string>
<string name="no_screen_lock_issue_title" msgid="1814109590692792891">"Postavljanje zaključavanja zaslona"</string>
<string name="no_screen_lock_issue_summary" msgid="2383217853510608406">"Za dodatnu sigurnost postavite PIN, uzorak ili zaporku za ovaj uređaj."</string>
- <string name="no_screen_lock_issue_action_label" msgid="2691229130486382863">"Postavite zaključavanje zaslona"</string>
+ <string name="no_screen_lock_issue_action_label" msgid="2691229130486382863">"Postavi zaključavanje zaslona"</string>
<string name="no_screen_lock_issue_notification_title" msgid="1214876733592830628">"Postavi zaključavanje zaslona"</string>
<string name="no_screen_lock_issue_notification_text" msgid="8696194459170873345">"Za dodatnu sigurnost postavite PIN, uzorak ili zaporku za ovaj uređaj."</string>
<string name="suggested_lock_settings_title" msgid="7836065447159730217">"Zaštitite telefon"</string>
@@ -666,7 +665,7 @@
<string name="lock_settings_picker_biometric_message" msgid="2609666443527262781">"Odaberite dodatni način zaključavanja zaslona"</string>
<string name="lock_settings_picker_admin_restricted_personal_message" msgid="3532653662159888328">"Ako zaboravite radnju za zaključavanje zaslona, IT administrator ga ne može poništiti."</string>
<string name="lock_settings_picker_admin_restricted_personal_message_action" msgid="5956615234246626264">"Postavite zasebno zaključavanje za poslovne aplikacije"</string>
- <string name="lock_settings_picker_profile_message" msgid="9142379549980873478">"Ako zaboravite čime ste ih zaključali, recite administratoru da poništi zaključavanje"</string>
+ <string name="lock_settings_picker_profile_message" msgid="9142379549980873478">"Ako zaboravite čime ste ga zaključali, recite administratoru da poništi zaključavanje"</string>
<string name="setup_lock_settings_options_button_label" msgid="6098297461618298505">"Opcije zaključavanja zaslona"</string>
<string name="setup_lock_settings_options_dialog_title" msgid="7985107300517468569">"Opcije zaključavanja zaslona"</string>
<string name="lock_screen_auto_pin_confirm_title" msgid="3012128112186088375">"Automatska potvrda otključavanja"</string>
@@ -779,7 +778,7 @@
<string name="lockpassword_password_too_short" msgid="1938086368137797700">"{count,plural, =1{Mora sadržavati najmanje # znak}one{Mora sadržavati najmanje # znak}few{Mora sadržavati najmanje # znaka}other{Mora sadržavati najmanje # znakova}}"</string>
<string name="lockpassword_password_too_short_all_numeric" msgid="4301294924022401502">"{count,plural, =1{Ako upotrebljavate samo brojeve, potrebna je najmanje jedna znamenka}one{Ako upotrebljavate samo brojeve, potrebna je najmanje # znamenka}few{Ako upotrebljavate samo brojeve, potrebne su najmanje # znamenke}other{Ako upotrebljavate samo brojeve, potrebno je najmanje # znamenki}}"</string>
<string name="lockpassword_pin_too_short" msgid="8910105226463085689">"{count,plural, =1{PIN mora sadržavati najmanje # znamenku}one{PIN mora sadržavati najmanje # znamenku}few{PIN mora sadržavati najmanje # znamenke}other{PIN mora sadržavati najmanje # znamenki}}"</string>
- <string name="lockpassword_pin_too_short_autoConfirm_extra_message" msgid="3271351502900762571">"{count,plural, =1{PIN mora sadržavati najmanje # znamenku, no radi dodatne sigurnosti preporučuje se {minAutoConfirmLen}-znamenkasti PIN}one{PIN mora sadržavati najmanje # znamenku, no radi dodatne sigurnosti preporučuje se {minAutoConfirmLen}-znamenkasti PIN}few{PIN mora sadržavati najmanje # znamenke, no radi dodatne sigurnosti preporučuje se {minAutoConfirmLen}-znamenkasti PIN}other{PIN mora sadržavati najmanje # znamenki, no radi dodatne sigurnosti preporučuje se {minAutoConfirmLen}-znamenkasti PIN}}"</string>
+ <string name="lockpassword_pin_too_short_autoConfirm_extra_message" msgid="3271351502900762571">"{count,plural, =1{PIN mora sadržavati najmanje # znamenku, no preporučuje se {minAutoConfirmLen}-znamenkasti PIN radi dodatne sigurnosti}one{PIN mora sadržavati najmanje # znamenku, no preporučuje se {minAutoConfirmLen}-znamenkasti PIN radi dodatne sigurnosti}few{PIN mora sadržavati najmanje # znamenke, no preporučuje se {minAutoConfirmLen}-znamenkasti PIN radi dodatne sigurnosti}other{PIN mora sadržavati najmanje # znamenki, no preporučuje se {minAutoConfirmLen}-znamenkasti PIN radi dodatne sigurnosti}}"</string>
<string name="lockpassword_password_too_long" msgid="1940345313260498308">"{count,plural, =1{Mora sadržavati manje od # znaka}one{Mora sadržavati manje od # znaka}few{Mora sadržavati manje od # znaka}other{Mora sadržavati manje od # znakova}}"</string>
<string name="lockpassword_pin_too_long" msgid="1678212054564388576">"{count,plural, =1{Mora sadržavati manje od # znamenke}one{Mora sadržavati manje od # znamenke}few{Mora sadržavati manje od # znamenke}other{Mora sadržavati manje od # znamenki}}"</string>
<string name="lockpassword_pin_recently_used" msgid="6650277060998923465">"Administrator uređaja ne dopušta upotrebu nedavnog PIN-a"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Ponovo pokrenuti?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detaljno zapisivanje za NFC namijenjeno je samo u razvojne svrhe. Dodatni podaci NFC-a uključeni su u izvješća o programskim pogreškama koja mogu sadržavati privatne podatke. Ponovo pokrenite uređaj da biste promijenili tu postavku."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Ponovno pokreni"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Emitiranje"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"zrcalo"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Omogući bežični prikaz"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Prilagodljivo"</string>
<string name="brightness" msgid="6216871641021779698">"Svjetlina zaslona"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Prilagodljiva svjetlina"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"O prilagodljivoj svjetlini"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Svjetlina zaslona automatski će se prilagoditi vašoj okolini i aktivnostima. Klizač možete pomicati ručno kako bi prilagodljiva svjetlina dobila podatke o tome što vam odgovara."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Uključeno"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Isključeno"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Izgled koji je odabrao korisnik: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Govor"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Brzina pokazivača"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Upravljač igrama"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Preusmjeri vibraciju"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Pošalji vibraciju igraćem kontroleru kada su povezani"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Ipak nastavi"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Odustani"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Postavke povećavanja"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Pomicanje jednim prstom"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Pomičite područje povećanja jednim prstom."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Pomičite područje povećanja dvama prstima."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nije dostupno kad se povećava samo dio zaslona"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Dodirnite gumb za zumiranje"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Brzo povećajte zaslon da bi se povećao prikaz sadržaja"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Da biste povećali prikaz:</b><br/> {0,number,integer}. Upotrijebite prečac da biste pokrenuli povećavanje.<br/> {1,number,integer}. Dodirnite zaslon.<br/> {2,number,integer}. Povlačite dva prsta da biste se pomicali po zaslonu.<br/> {3,number,integer}. Spojite dva prsta da biste prilagodili povećanje.<br/> {4,number,integer}. Upotrijebite prečac da biste zaustavili povećavanje.<br/><br/> <b>Da biste privremeno povećali prikaz:</b><br/> {0,number,integer}. Provjerite je li odabrano povećavanje cijelog zaslona.<br/> {1,number,integer}. Upotrijebite prečac da biste pokrenuli povećavanje.<br/> {2,number,integer}. Dodirnite i zadržite bilo gdje na zaslonu.<br/> {3,number,integer}. Povlačite prst da biste se pomicali po zaslonu.<br/> {4,number,integer}. Podignite prst da biste zaustavili povećavanje."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kad je povećanje uključeno, možete povećati prikaz na zaslonu.\n\n"<b>"Da biste zumirali"</b>", pokrenite povećanje, a zatim dodirnite bilo gdje na zaslonu.\n"<ul><li>"Povlačite s dva prsta ili više njih da biste se pomicali."</li>\n<li>"Spojite dva prsta ili više njih da biste prilagodili zumiranje."</li></ul>\n\n<b>"Da biste nešto privremeno zumirali"</b>", pokrenite povećanje, a zatim dodirnite bilo gdje na zaslonu i zadržite pritisak.\n"<ul><li>"Povlačite prstom da biste se kretali zaslonom."</li>\n<li>"Podignite prst da biste smanjili prikaz."</li></ul>\n\n"Tipkovnica i navigacijska traka ne mogu se povećati."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Stranica <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> od <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Prečac gumba za pristupačnost"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nijedan}=1{Postavljen je jedan raspored}one{Postavljen je # raspored}few{Postavljena su # rasporeda}other{Postavljeno je # rasporeda}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne uznemiravaj"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioritetni načini"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Primajte obavijesti samo od važnih osoba i aplikacija"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Odaberite vrstu aktivacije"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Vrijeme"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Npr. \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Npr. \"Osobni kalendar\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ograničavanje prekida"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Brisanje rasporeda"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Brisanje"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Uredi"</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>
@@ -3340,6 +3400,8 @@
<string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Postavite raspored"</string>
<string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Raspored"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
+ <skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Raspored"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Utišaj telefon u određeno vrijeme"</string>
<string name="zen_mode_automation_suggestion_summary" msgid="1946750790084170826">"Postavite pravila za način Ne uznemiravaj"</string>
@@ -3349,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Dopusti ometanja koja proizvode zvuk"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokiranje vizualnih ometanja"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Dopusti vizualne signale"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Obavijesti koje možete dobiti"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Usredotočite se"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Dodatne radnje"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Postavke zaslona"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opcije zaslona"</string>
@@ -3366,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"omogući tamnu temu"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Prebacuje OS i aplikacije da koriste svijetli tekst na tamnoj pozadini, što omogućuje manje naprezanje očiju i značajnu uštedu baterije na nekim uređajima"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Bez promjena na zaslonu}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}one{{effect_1}, {effect_2} i još #}few{{effect_1}, {effect_2} i još #}other{{effect_1}, {effect_2} i još #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtriraj prekide"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nijedan prekid se ne filtrira"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcije prikaza za filtrirane obavijesti"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kad je uključena značajka Ne uznemiravaj"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Bez zvuka obavijesti"</string>
@@ -3662,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorije"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Drugo"</string>
<string name="no_channels" msgid="4716199078612071915">"Ova aplikacija nije objavila nijednu obavijest"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Prikaži nekorištene kategorije"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Dodatne postavke u aplikaciji"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Prikaži nekorištene kategorije"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Sakrij nekorištene kategorije"</string>
@@ -3771,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Odabrane aplikacije"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nijedna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Sve"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -4864,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Podatkovna particija ovog uređaja treba se konvertirati u ext4 prije upotrebe opcije za razvojne programere od 16 KB. U ovom se načinu ne može zajamčiti integritet softvera, a svi podaci pohranjeni na telefonu mogu biti ugroženi dok je pokretač operativnog sustava otključan. Za aktiviranje opcije od 16 KB bit će potrebno još jedno ponovno pokretanje nakon konvertiranja podatkovne particije uređaja. Nakon što prijeđete na ovaj način, možete se prebacivati između načina od 4 KB i 16 KB uz jedno ponovno pokretanje. Neke će značajke biti onemogućene u tim načinima, pa neke aplikacije možda neće funkcionirati. Da biste uređaj vratili na produkcijski način rada, trebat ćete se vratiti na način od 4 KB, a zatim zaključati pokretač operativnog sustava, čime će se uređaj vratiti na tvorničke postavke. Nakon što uređaj uspješno pokrene Android, onemogućite otključavanje OEM-a u opcijama za razvojne programere. Podaci s uređaja će se izbrisati, a nakon potvrde datotečni sustav promijenit će se u ext4. Nakon što se to dovrši, vratite se da biste ponovno omogućili način od 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Izbriši sve podatke"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Formatiranje i čišćenje podatkovne particije u ext4 nije uspjelo."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Za način od 16 KB potrebno je otključati pokretač operativnog sustava"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Ovaj uređaj mora imati otključan pokretač operativnog sustava prije upotrebe opcije za razvojne programere od 16 KB. U ovom se načinu ne može zajamčiti integritet softvera, a svi podaci pohranjeni na telefonu mogu biti ugroženi dok je pokretač operativnog sustava otključan. Svi korisnički podaci i postavke izbrisat će se nakon aktiviranja načina od 16 KB. Nakon što se pokretač operativnog sustava otključa, za aktiviranje opcije od 16 KB bit će potrebno dva puta pokrenuti ponovno pokretanje. Nakon što prijeđete na ovaj način, možete se prebacivati između načina od 4 KB i 16 KB uz jedno ponovno pokretanje. Neke će značajke biti onemogućene u tim načinima, pa neke aplikacije možda neće funkcionirati. Da biste uređaj vratili na produkcijski način rada, trebat ćete se vratiti na način od 4 KB, a zatim zaključati OEM/pokretač operativnog sustava (čime će se uređaj vratiti na tvorničke postavke). Otključajte pokretač operativnog sustava i pokušajte ponovno. Upute kako to učiniti možete pronaći na web-lokaciji <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Upotreba načina od 4 KB koji ne ovisi o veličini stranice"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Aktivan je način od 4 KB koji ne ovisi o veličini stranice. U ovom se načinu ne može zajamčiti integritet softvera, a svi podaci pohranjeni na telefonu mogu biti ugroženi dok je pokretač operativnog sustava otključan. Neke će značajke biti onemogućene u tim načinima, pa neke aplikacije možda neće funkcionirati. Da biste se vratili u produkcijski način rada, morate zaključati pokretač operativnog sustava. Dodirnite za više informacija."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Aktivan je način od 4 KB koji ne ovisi o veličini stranice. U ovom se načinu ne može zajamčiti integritet softvera, a svi podaci pohranjeni na telefonu mogu biti ugroženi dok je pokretač operativnog sustava otključan. Neke će značajke biti onemogućene u tim načinima, pa neke aplikacije možda neće funkcionirati. Da biste ponovno ušli u produkcijski način rada, morate zaključati pokretač operativnog sustava uređaja. To će ponovno vratiti uređaj na tvorničke postavke i vratiti ga na produkcijske postavke. Nakon što uređaj uspješno pokrene Android, onemogućite otključavanje OEM-a u opcijama za razvojne programere. Ako uređaj ne uspije pokrenuti Android ili ako nije stabilan, ponovno instalirajte sliku sustava na uređaju s najnovijim tvorničkim verzijama firmwarea s web-lokacije <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ili upotrijebite web-lokaciju <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>, a zatim odaberite opcije Izbriši uređaj, Zaključaj pokretač operativnog sustava i Prisilno instaliraj sliku sustava na svim particijama."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Upotreba načina od 16 KB koji ne ovisi o veličini stranice"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Aktivan je način od 16 KB koji ne ovisi o veličini stranice. U ovom se načinu ne može zajamčiti integritet softvera, a svi podaci pohranjeni na telefonu mogu biti ugroženi dok je pokretač operativnog sustava otključan. Neke će značajke biti onemogućene u tim načinima, pa neke aplikacije možda neće funkcionirati. Da biste ponovno ušli u produkcijski način rada, morate se vratiti na način od 4 KB, a zatim zaključati pokretač operativnog sustava uređaja. Dodirnite da biste pročitali više."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Aktivan je način od 16 KB koji ne ovisi o veličini stranice. U ovom se načinu ne može zajamčiti integritet softvera, a svi podaci pohranjeni na telefonu mogu biti ugroženi dok je pokretač operativnog sustava otključan. Neke će značajke biti onemogućene u tim načinima, pa neke aplikacije možda neće funkcionirati. Da biste ponovno ušli u produkcijski način rada, morate se vratiti na način od 4 KB, a zatim zaključati pokretač operativnog sustava uređaja. To će ponovno vratiti uređaj na tvorničke odnosno produkcijske postavke. Nakon što uređaj uspješno pokrene Android, onemogućite otključavanje OEM-a u opcijama za razvojne programere. Ako uređaj ne uspije pokrenuti Android ili ako nije stabilan, ponovno instalirajte sliku sustava na uređaju s najnovijim tvorničkim verzijama firmwarea s web-lokacije <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ili upotrijebite web-lokaciju <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>, a zatim odaberite opcije Izbriši uređaj, Zaključaj pokretač operativnog sustava i Prisilno instaliraj sliku sustava na svim particijama."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Način 16 od KB koji ne ovisi o veličini stranice"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Pročitajte više"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Rukovatelj izvješćem o programskim pogreškama"</string>
@@ -4971,8 +5041,8 @@
<string name="default_active_sim_sms" msgid="8041498593025994921">"SMS"</string>
<string name="default_active_sim_mobile_data" msgid="6798083892814045301">"mobilne podatke"</string>
<string name="wifi_scan_notify_message" msgid="1331238142061476869">"Radi boljeg doživljaja na uređaju, aplikacije i usluge i dalje mogu tražiti Wi‑Fi mreže u bilo kojem trenutku, čak i kada je Wi‑Fi isključen. Time se primjerice mogu poboljšati značajke i usluge koje se temelje na lokaciji. To možete promijeniti u postavkama traženja Wi-Fija."</string>
- <string name="wifi_scan_change" msgid="8438320311511852918">"Promijeni"</string>
- <string name="preference_summary_default_combination" msgid="4643585915107796253">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="NETWORKMODE">%2$s</xliff:g>"</string>
+ <string name="wifi_scan_change" msgid="8438320311511852918">"Promijenite"</string>
+ <string name="preference_summary_default_combination" msgid="4643585915107796253">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="NETWORKMODE">%2$s</xliff:g>"</string>
<string name="mobile_data_connection_active" msgid="2422223108911581552">"Povezano"</string>
<string name="mobile_data_temp_connection_active" msgid="3430470299756236413">"Privremeno povezano"</string>
<string name="mobile_data_temp_using" msgid="5211002380149434155">"Privremeno koristite <xliff:g id="SUBNAME">%1$s</xliff:g>"</string>
@@ -5004,7 +5074,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Koristi prikvačivanje aplikacije"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Koristi opcije za razvojne programere"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Koristi uslugu ispisa"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dopusti više korisnika"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"dopustiti, više, korisnik, dopuštenje, mnogo"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"više, korisnici, profili, osobe, računi, prebaci, mnogi"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Upotreba bežičnog otklanjanja pogrešaka"</string>
@@ -5348,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
index db7e4a4..109259a 100644
--- a/res/values-hu/arrays.xml
+++ b/res/values-hu/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Alvásidő"</item>
+ <item msgid="4152450357280759894">"Vezetés"</item>
+ <item msgid="7096549258219399423">"Magával ragadó"</item>
+ <item msgid="2760716776980432977">"Kezelt"</item>
+ <item msgid="601734478369121764">"Csillag"</item>
+ <item msgid="6243809315432780521">"Naptár"</item>
+ <item msgid="4913577903148415331">"Idő"</item>
+ <item msgid="3653377604690057780">"Színház"</item>
+ <item msgid="3843711267408385410">"Virág"</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 73dff50..66e539a 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Hallókészülék-beállítások"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Gyorsparancs, hallókészülék-kompatibilitás"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Beállításkészlet"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Audiológusa nem programozott be beállításkészleteket"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Nem sikerült frissíteni a beállításkészletet"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Hangkimenet"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"A hangkimenetről"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"További információ a Feloldás órával funkcióról"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Óra hozzáadása"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Óra eltávolítása"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Feloldás ujjlenyomattal és Arcalapú feloldás"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Arc- és ujjlenyomat-alapú feloldás"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Arc- és ujjlenyomat-alapú feloldás a munkaprofilban"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Beállítás szükséges"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Arc és ujjlenyomatok hozzáadva"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Alkalmazások telepítése"</b>\n"Telepítse azokat az alkalmazásokat, amelyeket privát területén szeretne tartani."</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Fontos tudnivalók"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Az alkalmazások leállnak, amikor zárolja a területét"</b>\n"A területe zárolásakor a benne található alkalmazások leállnak, és nem fog tőlük értesítéseket kapni."</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"A privát területek nem alkalmasak olyan alkalmazások számára, amelyeknek a háttérben kell futniuk, vagy kulcsfontosságú értesítéseket kell küldeniük (ilyenek például az egészségügyi appok). Ez azért van így, mert az értesítések és a háttértevékenységek le vannak állítva, amikor zárolva van a terület.\n\nA privát területen lévő alkalmazások nem jelennek meg az Engedélykezelőben, az adatvédelmi irányítópulton és más beállításokban, amikor a privát terület zárolva van.\n\nA privát terület nem helyezhető át új eszközre. Ha másik eszközön szeretné használni, akkor másik privát területet kell beállítania.\n\nBárki, aki az Ön eszközét számítógéphez csatlakoztatja, vagy kártékony alkalmazást telepít az Ön eszközére, hozzá tud férni a privát területhez."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"A privát területek nem alkalmasak olyan alkalmazások számára, amelyeknek a háttérben kell futniuk, vagy kulcsfontosságú értesítéseket kell küldeniük (ilyenek például az egészségügyi appok). Ez azért van így, mert az értesítések és a háttértevékenységek le vannak állítva, amikor zárolva van a terület.\n\nA privát területen lévő alkalmazások nem jelennek meg az Engedélykezelőben, az adatvédelmi irányítópulton és más beállításokban, amikor a privát terület zárolva van.\n\nA privát terület nem állítható vissza új eszközön. Ha másik eszközön szeretné használni, akkor másik területet kell beállítania.\n\nBárki, aki az Ön eszközét számítógéphez csatlakoztatja, vagy rosszindulatú alkalmazást telepít az eszközére, hozzá tud férni az Ön privát területéhez."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"További információ a magánterületről"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Ez eltart egy kis ideig"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"A privát terület beállítása…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Újraindítja az eszközt?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"A részletes NFC-naplózás csak fejlesztési célokra szolgál. A hibajelentésekben további NFC-adatok is szerepelnek, amelyek között privát információk is lehetnek. A beállítás módosításához indítsa újra eszközét."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Újraindítás"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Tartalomátküldés"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"tükrözés"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Vezeték nélküli kijelző engedélyezése"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptív"</string>
<string name="brightness" msgid="6216871641021779698">"Fényerőszint"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Alkalmazkodó fényerő"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Az alkalmazkodó fényerőről"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"A képernyő fényerőssége automatikusan alkalmazkodik a környezethez és az adott tevékenységhez. A csúszka mozgatásával segíthet az alkalmazkodó fényerő funkciónak, hogy megtanulja az Ön személyes preferenciáit."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Bekapcsolva"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Kikapcsolva"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Felhasználó által kiválasztva: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Beszéd"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Mutató sebessége"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Játékvezérlő"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Rezgés átirányítása"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Rezgés küldése a játékvezérlőre kapcsolódáskor"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Folytatás mégis"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Mégse"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Nagyítási beállítások"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Egyujjas pásztázás"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"A nagyítási terület mozgatása egy ujj húzásával."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"A nagyítási terület mozgatása két ujj húzásával."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nem áll rendelkezésre, ha a nagyítás csak a képernyő egy részére terjed ki"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Nagyításhoz koppintson a gombra"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Gyorsan nagyíthat a képernyőn a tartalom felnagyítása érdekében"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>A nagyításhoz:</b><br/> {0,number,integer}. Használja a gyorsparancsot a nagyítás megkezdéséhez.<br/> {1,number,integer}. Koppintson a képernyőre.<br/> {2,number,integer}. Két ujjának húzásával mozoghat a képernyőn.<br/> {3,number,integer}. Két ujjának összehúzásával módosíthatja a nagyítási szintet.<br/> {4,number,integer}. A gyorsparancs segítségével leállíthatja a nagyítási funkciót.<br/><br/><b>Az ideiglenes nagyításhoz:</b><br/> {0,number,integer}. Ellenőrizze, hogy a nagyítás típusa teljes képernyőre van-e beállítva.<br/> {1,number,integer}. Használja a gyorsparancsot a nagyítás megkezdéséhez.<br/> {2,number,integer}. Tartsa lenyomva egyik ujját bárhol a képernyőn.<br/> {3,number,integer}. Ujjának húzásával mozoghat a képernyőn.<br/> {4,number,integer}. Emelje fel ujját a nagyítás befejezéséhez."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Ha be van kapcsolva a nagyítás funkció, ránagyíthat a képernyő tartalmára.\n\nA "<b>"nagyításhoz"</b>", indítsa el a funkciót, majd koppintson a kívánt területre a képernyőn.\n"<ul><li>"Görgetéshez húzza legalább két ujját a képernyőn."</li>\n<li>"A nagyítás mértékét két vagy több ujjának össze- vagy széthúzásával módosíthatja."</li></ul>\n\n<b>"Ideiglenes nagyításhoz"</b>" indítsa el a funkciót, majd tartsa lenyomva a kívánt területet a képernyőn.\n"<ul><li>"Ujját lenyomva tartva mozoghat a képernyőn."</li>\n<li>"A méret visszaállításához emelje fel ujját a képernyőről."</li></ul>\n\n"A billentyűzeten és a navigációs sávon nem lehetséges a nagyítás."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>/<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. oldal"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Gyorsparancs a Kisegítő lehetőségek gombhoz"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nincs}=1{1 ütemezés beállítva}other{# ütemezés beállítva}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne zavarjanak"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioritási módok"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Értesítés fogadása csak fontos személyektől és alkalmazásoktól"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Aktiválástípus kiválasztása"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Idő"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Pl.: „9:30 – 17:00”"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Naptár"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Pl.: „Személyes naptár”"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"A megszakítások korlátozása"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"A Ne zavarjanak mód bekapcsolása"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Az ébresztések és médiahangok megszakíthatják a „Ne zavarjanak” módot"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Ütemezések"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Ütemezések törlése"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Törlés"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Naptár hozzáadása"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Naptár használata"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Ütemezés"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Állítson be ütemezést"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Ütemezés"</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> p"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ütemezés"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Telefonnémítás ütemezése"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Hanggal járó jelzések engedélyezése"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Megjelenő értesítések tiltása"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Vizuális jelek engedélyezése"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Értesítések, amelyek eljuthatnak Önhöz"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Folyamatosan figyeljen"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"További műveletek"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Megjelenítési beállítások"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Megjelenítési beállítások"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"sötét téma engedélyezése"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Módosíthatja az operációs rendszer és az alkalmazások beállításait úgy, hogy a sötét háttér előtti világos szöveget részesítsék előnyben, ami kevésbé megterhelő a szemnek, valamint jóval energiatakarékosabb használatot eredményez egyes eszközökön."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nincs megjelenítésmódosítás}=1{{effect_1}}=2{{effect_1} és {effect_2}}=3{{effect_1}, {effect_2} és {effect_3}}other{{effect_1}, {effect_2}, és # további}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Megszakítások szűrése"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"A rendszer nem szűrt ki megszakításokat"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"A szűrt értesítések megjelenítési beállításai"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Ha a „Ne zavarjanak” mód aktív"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Nincs hang az értesítéseknél"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategóriák"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Egyéb"</string>
<string name="no_channels" msgid="4716199078612071915">"Ez az alkalmazás nem küldött semmilyen értesítést"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Nem használt kategóriák mutatása"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Az alkalmazás további beállításai"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Nem használt kategóriák mutatása"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Nem használt kategóriák elrejtése"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Kiválasztott alkalmazások"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nincs"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Összes"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Felülbírálás engedélyezése az alkalmazások számára"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Azok az alkalmazások, amelyeknél engedélyezve van a megszakítás"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"További alkalmazások kiválasztása"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Módosítás csak ébresztésekre egy órára, eddig: {time}}other{Módosítás csak ébresztésekre # órára, eddig: {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Váltás „Csak ébresztésekre” eddig: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Módosítás a bármikor történő megszakításra"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Átnevezés"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Ikon megváltoztatása"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Ikon megváltoztatása"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Figyelmeztetés"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Bezárás"</string>
<string name="device_feedback" msgid="5351614458411688608">"Visszajelzés küldése az eszközről"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"A 16 kB-os fejlesztői opció használata előtt konvertálja ext4 fájlrendszerre az eszköz adatpartícióját. A szoftverek integritása nem garantálható ebben a módban, és a telefonon tárolt összes adat veszélyben lehet, amíg a rendszerindító zárolása fel van oldva. A 16 kB-os opció aktiválásával még egy újraindításra van szükség ezután. Ebben a módban egyetlen újraindítással válthat oda és vissza a 4 kB-os és a 16 kB-os mód között. Egyes funkciók le lesznek tiltva ezekben a módokban, ezért előfordulhat, hogy néhány alkalmazás nem működik. Ha szeretné az eszközt éles üzemmódba visszaállítani, akkor annyit kellene tennie, hogy visszavált 4 kB-os módra, majd zárolja a rendszerindítót, ezzel ugyanis visszaállítja az eszközt a gyári beállításokra. Miután az eszköz sikeresen elindította az Android rendszert, tiltsa le az OEM-feloldást a Fejlesztői beállítások funkcióban. A rendszer ekkor törli az eszköz adatait, a fájlrendszer pedig a megerősítést követően ext4 rendszerre módosul. Miután a folyamat befejeződött, próbálja újra engedélyezni a 16 kB-os módot."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Minden adat törlése"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Nem sikerült az ext4 fájlrendszerre való újraformatálás és az adatpartíció adatainak visszaállíthatatlan törlése."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"A 16 kB-os módhoz a rendszerindító zárolásának feloldása szükséges"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"A 16 kB-os fejlesztői opció használata előtt fel kell oldani ezen az eszközön a rendszerindító zárolását. A szoftverek integritása nem garantálható ebben a módban, és a telefonon tárolt összes adat veszélyben lehet, amíg rendszerindító zárolása fel van oldva. A 16 kB-os mód aktiválásakor a rendszer minden felhasználói adatot és beállítást töröl. A rendszerindító zárolásának feloldása után két újraindítás szükséges a 16 kB-os opció aktiválásához. Ebben a módban egyetlen újraindítással válthat oda és vissza a 4 kB-os és a 16 kB-os mód között. Egyes funkciók le lesznek tiltva ezekben a módokban, ezért előfordulhat, hogy néhány alkalmazás nem működik. Ha szeretné az eszközt éles üzemmódba visszaállítani, akkor annyit kellene tennie, hogy visszavált 4 kB-os módra, majd zárolja az eszközön az OEM-et/rendszerindítót (ezzel visszaállítja az eszközt a gyári beállításokra). Oldja fel a rendszerindító zárolását, majd próbálkozzon újra. A művelettel kapcsolatos utasításokat itt találja: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 kB-os, lapmérettől független módot használ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Ön jelenleg a lapmérettől független mód 4 kB-os módjában van. A szoftverek integritása nem garantálható ebben a módban, és a telefonon tárolt összes adat veszélyben lehet, amíg a rendszerindító zárolása fel van oldva. Egyes funkciók le lesznek tiltva ezekben a módokban, ezért előfordulhat, hogy néhány alkalmazás nem működik. Ha szeretne visszalépni az éles üzemmódba, zárolja az eszköz rendszerindítóját. Koppintson a további információk megtekintéséhez."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Ön jelenleg a lapmérettől független mód 4 kB-os módjában van. A szoftverek integritása nem garantálható ebben a módban, és a telefonon tárolt összes adat veszélyben lehet, amíg a rendszerindító zárolása fel van oldva. Egyes funkciók le lesznek tiltva ezekben a módokban, ezért előfordulhat, hogy néhány alkalmazás nem működik. Ha szeretne visszalépni az éles üzemmódba, zárolja az eszköz rendszerindítóját. Ezzel újra visszaállítja az eszközt a gyári beállításokra, és egyúttal az éles beállításokra is. Miután az eszköz sikeresen elindította az Android rendszert, tiltsa le az OEM-feloldást a Fejlesztői beállítások funkcióban. Ha az eszköz nem indítja el az Android rendszert vagy nem stabil, telepítse újra az eszközt a legújabb gyári képfájlokkal a következő oldalon leírt módon: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Másik megoldásként használhatja a <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> webhelyet is, ahol válassza a következő lehetőségeket: „Wipe Device” (Eszközadatok visszaállíthatatlan törlése), „Lock Bootloader” (Rendszerindító zárolása) és „Force Flash all partitions” (Összes partíció telepítésének kényszerítése)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 kB-os, lapmérettől független módot használ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Ön jelenleg a lapmérettől független mód 16 kB-os módjában van. A szoftverek integritása nem garantálható ebben a módban, és a telefonon tárolt összes adat veszélyben lehet, amíg a rendszerindító zárolása fel van oldva. Egyes funkciók le lesznek tiltva ezekben a módokban, ezért előfordulhat, hogy néhány alkalmazás nem működik. Ha szeretne visszalépni az éles üzemmódba, váltson vissza a 4 kB-os módra, majd zárolja az eszköz rendszerindítóját. Koppintson a további információk megtekintéséhez."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Ön jelenleg a lapmérettől független mód 16 kB-os módjában van. A szoftverek integritása nem garantálható ebben a módban, és a telefonon tárolt összes adat veszélyben lehet, amíg a rendszerindító zárolása fel van oldva. Egyes funkciók le lesznek tiltva ezekben a módokban, ezért előfordulhat, hogy néhány alkalmazás nem működik. Ha szeretne visszalépni az éles üzemmódba, váltson vissza a 4 kB-os módra, majd zárolja az eszköz rendszerindítóját. Ezzel újra visszaállítja az eszközt a gyári beállításokra, és egyúttal az éles beállításokra is. Miután az eszköz sikeresen elindította az Android rendszert, tiltsa le az OEM-feloldást a Fejlesztői beállítások funkcióban. Ha az eszköz nem indítja el az Android rendszert vagy nem stabil, telepítse újra az eszközt a legújabb gyári képfájlokkal a következő oldalon leírt módon: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Másik megoldásként használhatja a <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> webhelyet is, ahol válassza a következő lehetőségeket: „Wipe Device” (Eszközadatok visszaállíthatatlan törlése), „Lock Bootloader” (Rendszerindító zárolása) és „Force Flash all partitions” (Összes partíció telepítésének kényszerítése)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 kB-os, lapmérettől független mód"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Továbbiak"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Hibajelentés kezelője"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Alkalmazáskitűzés használata"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Fejlesztői beállítások használata"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Nyomtatási szolgáltatás használata"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Több felhasználó engedélyezése"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"engedélyezés, több, felhasználó, engedély, sok"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"több, felhasználók, profilok, személyek, fiókok, kapcsoló, sok"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Vezeték nélküli hibakeresés használata"</string>
@@ -5353,4 +5418,6 @@
<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">"Audiostream QR-kódjának beolvasása 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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-hy/arrays.xml b/res/values-hy/arrays.xml
index 1a8b95d..13aa275 100644
--- a/res/values-hy/arrays.xml
+++ b/res/values-hy/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Քնելու ժամը"</item>
+ <item msgid="4152450357280759894">"Մեքենայով"</item>
+ <item msgid="7096549258219399423">"Ներկայության էֆեկտով"</item>
+ <item msgid="2760716776980432977">"Կառավարվող"</item>
+ <item msgid="601734478369121764">"Աստղ"</item>
+ <item msgid="6243809315432780521">"Օրացույց"</item>
+ <item msgid="4913577903148415331">"Ժամ"</item>
+ <item msgid="3653377604690057780">"Թատրոն"</item>
+ <item msgid="3843711267408385410">"Ծաղիկ"</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 2845385..170e4ec 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Լսողական սարքի կարգավորումներ"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Դյուրանցում, լսողական սարքի համատեղելիություն"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Կարգավորումների հավաքածու"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Մասնագետի կողմից կազմված կարգավորումների հավաքածուներ չկան"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Չհաջողվեց թարմացնել կարգավորումների հավաքածուն"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Աուդիո ելք"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Աուդիո ելքի մասին"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Իմանալ ավելին ժամացույցով ապակողպման մասին"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Ավելացնել ժամացույց"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Հեռացնել ժամացույցը"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Մատնահետքով և դեմքով ապակողպում"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Դեմքով և մատնահետքով ապակողպում"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Դեմքով և մատնահետքով ապակողպում աշխատանքի համար"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Պահանջվում է կարգավորում"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Դեմքի և մատնահետքի նմուշներն ավելացվեցին"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Վերագործարկե՞լ սարքը"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC-ի միջոցով մանրամասն մատյանի վարումը նախատեսված է ոչ միայն ծրագրավորման նպատակներով։ NFC-ի լրացուցիչ տվյալները ավելացվում են նաև վրիպակների մասին զեկույցներում, որոնք կարող են անձնական տեղեկություններ պարունակել։ Այս կարգավորումը փոխելու համար վերագործարկեք ձեր սարքը։"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Վերագործարկել"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Հեռարձակում"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"հայելապատճենում"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Միացնել անլար էկրանը"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Հարմարվող"</string>
<string name="brightness" msgid="6216871641021779698">"Պայծառության մակարդակ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Հարմարվող պայծառություն"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Հարմարվող պայծառության մասին"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Էկրանի պայծառությունն ավտոմատ կկարգավորվի՝ կախված միջավայրի պայմաններից և ձեր գործողություններից։ Դուք կարող եք տեղաշարժել սահիչը՝ թույլ տալով հարմարվող պայծառությանը հիշել ձեր կարգավորումները։"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Միացված է"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Անջատված է"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Շարունակել"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Չեղարկել"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Խոշորացման կարգավորումներ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Մեկ մատով տեղաշարժ"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Տեղափոխեք խոշորացման ընդգրկույթը՝ մեկ մատով քաշելով։"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Տեղափոխեք խոշորացման ընդգրկույթը՝ երկու մատով քաշելով։"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Հասանելի չէ, երբ միայն էկրանի մի մասն է խոշորացվում"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Հպել որևէ կոճակի՝ մեծացնելու համար"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Արագ խոշորացրեք էկրանը՝ բովանդակությունն ավելի պարզ տեսնելու համար"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Խոշորացնելու համար՝</b><br/> {0,number,integer}. Օգտագործեք դյուրանցումը<br/> {1,number,integer}. Հպեք էկրանին<br/> {2,number,integer}. Քաշեք երկու մատով՝ էկրանի վրա տեղաշարժվելու համար<br/> {3,number,integer}. Շարժեք երկու մատը՝ խոշորացումը կարգավորելու համար<br/> {4,number,integer}. Դյուրանցման միջոցով դադարեցրեք խոշորացումը<br/><br/> <b>Ժամանակավորապես խոշորացնելու համար՝</b><br/> {0,number,integer}. Համոզվեք, որ խոշորացման համար նշված է լիաէկրան ռեժիմը<br/> {1,number,integer}. Օգտագործեք դյուրանցումը<br/> {2,number,integer}. Հպեք էկրանի որևէ մասի և պահեք<br/> {3,number,integer}. Քաշեք մատով՝ էկրանի վրա տեղաշարժվելու համար<br/> {4,number,integer}. Հեռացրեք մատը էկրանից՝ խոշորացումը դադարեցնելու համար"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Երբ խոշորացումը միացված է, դուք կարող եք մեծացնել էկրանի մասշտաբը:\n\n"<b>"Մասշտաբը մեծացնելու համար"</b>"միացրեք խոշորացումը և հպեք էկրանի ցանկացած հատվածին:\n"<ul><li>"Ոլորելու համար 2 կամ ավելի մատները քաշեք էկրանի վրայով։"</li>\n<li>"Մասշտաբը փոխելու համար 2 կամ ավելի մատները մոտեցրեք միմյանց։"</li></ul>\n\n<b>"Մասշտաբը ժամանակավորապես փոխելու համար"</b>" միացրեք խոշորացումը, ապա հպեք էկրանի ցանկացած հատվածին և պահեք։\n"<ul><li>"Քաշեք՝ էկրանով մեկ շարժելու համար։"</li>\n<li>"Բարձրացրեք մատը՝ փոքրացնելու համար։"</li></ul>\n\n"Ստեղնաշարի կամ նավիգացիայի գոտու միջոցով հնարավոր չէ մեծացնել:"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Էջ <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">"«Հատուկ գործառույթներ» կոճակի դյուրանցում"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ոչ մի ժամանակացույց}=1{Սահմանված է 1 ժամանակացույց}one{Սահմանված է # ժամանակացույց}other{Սահմանված է # ժամանակացույց}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Չանհանգստացնել"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Կարևոր ռեժիմներ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Ծանուցում ստանալ միայն կարևոր մարդկանցից և հավելվածներից"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Ընտրել ակտիվացման տեսակը"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Ժամ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Օրինակ՝ «9:30 – 17:00»"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Օրացույց"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Օրինակ՝ «Անձնական օրացույց»"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ընդհատումների սահմանափակում"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Ժամանակացույցների ջնջում"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Ջնջել"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Ավելացնել օրացույց"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Օգտագործել իմ օրացույցը"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Ժամանակացույց"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Սահմանեք ժամանակացույց"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ժամանակացույց"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Հեռախոսի ձայնի անջատում որոշակի ժամերի"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Թույլատրել ձայնային ազդանշանները"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Արգելափակել տեսողական ծանուցումները"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Թույլատրել տեսողական ազդանշանները"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Ծանուցումներ, որոնք միևնույն է կստանաք"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Կենտրոնացում"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Լրացուցիչ գործողություններ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Ցուցադրման կարգավորումներ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Ցուցադրման տարբերակներ"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"միացնել մուգ թեման"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Օպերացիոն համակարգն ու հավելվածները դարձրեք բաց տեքստով՝ մուգ ֆոնի վրա։ Դա կարող է աչքերին ավելի հաճելի լինել և նշանակալի կերպով տնտեսել մարտկոցի լիցքը որոշ սարքերում"</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="mode_notification_filter_title" msgid="443728483176031977">"Զտել ընդհատումները"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ընդհատումները չեն զտվում"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Ցույց տալ չկիրառվող կատեգորիաները"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Թաքցնել չկիրառվող կատեգորիաները"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Բոլորը"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը մեկ ժամով մինչև {time}}one{Ակտիվացնել «Միայն զարթուցիչը» ռեժիմը # ժամով մինչև {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Վերանվանել"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Փոխել պատկերակը"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Փոխել պատկերակը"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Նախազգուշացում"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Փակել"</string>
<string name="device_feedback" msgid="5351614458411688608">"Կարծիք հայտնել սարքի մասին"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Նախքան մշակողի 16 ԿԲ ընտրանքն օգտագործելը սարքի տվյալների բաժինն անհրաժեշտ է փոխարկել ext4 ֆայլային համակարգի։ Ծրագրի ամբողջականությունը հնարավոր չէ երաշխավորել այս ռեժիմում, և ցանկացած տվյալ, որը պահվում է հեռախոսում, քանի դեռ բեռնիչը ապակողպված է, կարող է վտանգված լինել։ 16 ԿԲ ընտրանքի ակտիվացման համար կարող է պահանջվել ևս մեկ վերագործարկում։ Երբ անցնեք այս ռեժիմին, մեկ վերագործարկմամբ կկարողանաք անցում կատարել 4 ԿԲ և 16 ԿԲ ռեժիմների միջև։ Որոշ գործառույթներ կանջատվեն այս ռեժիմներում, ուստի հնարավոր է՝ ոչ բոլոր հավելվածներն աշխատեն։ Սարքն արտադրական ռեժիմին վերադարձնելու համար պետք է նորից անցնեք 4 ԿԲ ռեժիմին և կողպեք օպերացիոն համակարգի բեռնիչը, որը վերականգնում է սարքի գործարանային կարգավորումները։ Android-ը հաջողությամբ գործարկելուց հետո Մշակողի ընտրանքներում անջատեք OEM-ի ապակողպումը։ Հաստատումից հետո սարքի տվյալները կսրբվեն, և ֆայլային համակարգը կփոխարինվի ext4-ով։ Դրանից հետո նորից վերադարձեք՝ 16 ԿԲ-ը կրկին միացնելու համար։"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Ջնջել բոլոր տվյալները"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Չհաջողվեց վերաֆորմատավորել սարքը ext4 ֆայլային համակարգի և սրբել տվյալների բաժինը։"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 ԿԲ ռեժիմի համար պահանջվում է ապակողպել օպերացիոն համակարգի բեռնիչը"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Նախքան մշակողի 16 ԿԲ ընտրանքն օգտագործելը հարկավոր է ապակողպել օպերացիոն համակարգի բեռնիչը։ Ծրագրի ամբողջականությունը հնարավոր չէ երաշխավորել այս ռեժիմում, և ցանկացած տվյալ, որը պահվում է հեռախոսում, քանի դեռ բեռնիչը ապակողպված է, կարող է վտանգված լինել։ Երբ 16 ԿԲ ռեժիմն ակտիվացվի, օգտատիրոջ բոլոր տվյալները և կարգավորումները կսրբվեն։ Հենց որ օպերացիոն համակարգի բեռնիչն ապակողպվի, 16 ԿԲ ընտրանքի ակտիվացման համար կպահանջվի երկու վերագործարկում։ Երբ անցնեք այս ռեժիմին, մեկ վերագործարկմամբ կկարողանաք անցում կատարել 4 ԿԲ և 16 ԿԲ ռեժիմների միջև։ Որոշ գործառույթներ կանջատվեն այս ռեժիմներում, ուստի հնարավոր է՝ ոչ բոլոր հավելվածներն աշխատեն։ Սարքը արտադրական ռեժիմին վերադարձնելու համար անհրաժեշտ է նորից անցնել 4 ԿԲ ռեժիմին և կողպել OEM-ը / օպերացիոն համակարգի բեռնիչը, որը վերականգնում է սարքի գործարանային կարգավորումները։ Ապակողպեք օպերացիոն համակարգի բեռնիչը և նորից փորձեք։ Թե ինչպես կարող եք դա անել, կարդացեք այստեղ՝ <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Էջաչափից անկախ 4 ԿԲ ռեժիմի օգտագործում"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Դուք էջաչափից անկախ 4 ԿԲ ռեժիմում եք։ Ծրագրի ամբողջականությունը հնարավոր չէ երաշխավորել այս ռեժիմում, և ցանկացած տվյալ, որը պահվում է հեռախոսում, քանի դեռ բեռնիչը ապակողպված է, կարող է վտանգված լինել։ Որոշ գործառույթներ կանջատվեն այս ռեժիմներում, ուստի հնարավոր է՝ ոչ բոլոր հավելվածներն աշխատեն։ Արտադրական ռեժիմին վերադառնալու համար պետք է կողպեք սարքի օպերացիոն համակարգի բեռնիչը։ Հպեք՝ ավելին իմանալու համար։"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Դուք էջաչափից անկախ ռեժիմի 4 ԿԲ ռեժիմում եք։ Ծրագրի ամբողջականությունը հնարավոր չէ երաշխավորել այս ռեժիմում, և ցանկացած տվյալ, որը պահվում է հեռախոսում, քանի դեռ բեռնիչը ապակողպված է, կարող է վտանգված լինել։ Որոշ գործառույթներ կանջատվեն այս ռեժիմներում, ուստի հնարավոր է՝ ոչ բոլոր հավելվածներն աշխատեն։ Արտադրական ռեժիմին վերադառնալու համար պետք է կողպեք սարքի օպերացիոն համակարգի բեռնիչը։ Սարքի գործարանային կարգավորումները նորից կվերականգնվեն, և այն կանցնի արտադրական կարգավորումների ռեժիմ։ Android-ը հաջողությամբ գործարկելուց հետո Մշակողի ընտրանքներում անջատեք OEM-ի ապակողպումը։ Եթե սարքն անկայուն է աշխատում, կամ չհաջողվի այն գործարկել Android-ով, թարմացրեք սարքը՝ օգտագործելով գործարանային պատկերներ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> էջից կամ անցեք <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> և ընտրեք «Սրբել սարքը», «Կողպել օպերացիոն համակարգի բեռնիչը» և «Ստիպողաբար թարմացնել բոլոր բաժինները»։"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Էջաչափից անկախ 16 ԿԲ ռեժիմի օգտագործում"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Դուք էջաչափից անկախ 16 ԿԲ ռեժիմում եք։ Ծրագրի ամբողջականությունը հնարավոր չէ երաշխավորել այս ռեժիմում, և ցանկացած տվյալ, որը պահվում է հեռախոսում, քանի դեռ բեռնիչը ապակողպված է, կարող է վտանգված լինել։ Որոշ գործառույթներ կանջատվեն այս ռեժիմներում, ուստի հնարավոր է՝ ոչ բոլոր հավելվածներն աշխատեն։ Արտադրական ռեժիմին վերադառնալու համար պետք է նորից անցնեք 4 ԿԲ ռեժիմին և կողպեք սարքի օպերացիոն համակարգի բեռնիչը։ Հպեք՝ ավելին իմանալու համար։"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Դուք էջաչափից անկախ ռեժիմի 16 ԿԲ ռեժիմում եք։ Ծրագրի ամբողջականությունը հնարավոր չէ երաշխավորել այս ռեժիմում, և ցանկացած տվյալ, որը պահվում է հեռախոսում, քանի դեռ բեռնիչը ապակողպված է, կարող է վտանգված լինել։ Որոշ գործառույթներ կանջատվեն այս ռեժիմներում, ուստի հնարավոր է՝ ոչ բոլոր հավելվածներն աշխատեն։ Արտադրական ռեժիմին վերադառնալու համար պետք է նորից անցնեք 4 ԿԲ ռեժիմին և կողպեք սարքի օպերացիոն համակարգի բեռնիչը։ Սարքի գործարանային կարգավորումները նորից կվերականգնվեն, և այն կանցնի արտադրական կարգավորումների ռեժիմ։ Android-ը հաջողությամբ գործարկելուց հետո Մշակողի ընտրանքներում անջատեք OEM-ի ապակողպումը։ Եթե սարքն անկայուն է աշխատում, կամ չհաջողվի այն գործարկել Android-ով, թարմացրեք սարքը՝ օգտագործելով գործարանային պատկերներ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> էջից կամ անցեք <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> և ընտրեք «Սրբել սարքը», «Կողպել օպերացիոն համակարգի բեռնիչը» և «Ստիպողաբար թարմացնել բոլոր բաժինները»։"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Էջաչափից անկախ 16 ԿԲ ռեժիմ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Կարդալ ավելին"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Վրիպակների մասին հաշվետվությունների մշակիչ"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Թույլատրել մեկից ավելի օգտատերեր"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml
index e878f49..c5d73ab 100644
--- a/res/values-in/arrays.xml
+++ b/res/values-in/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Waktu Tidur"</item>
+ <item msgid="4152450357280759894">"Mengemudi"</item>
+ <item msgid="7096549258219399423">"Imersif"</item>
+ <item msgid="2760716776980432977">"Dikelola"</item>
+ <item msgid="601734478369121764">"Bintang"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Waktu"</item>
+ <item msgid="3653377604690057780">"Teater"</item>
+ <item msgid="3843711267408385410">"Bunga"</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 0dda465..741b56a 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Setelan alat bantu dengar"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Pintasan, kompatibilitas alat bantu dengar (HAC)"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Tidak ada preset yang diprogram oleh ahli audiologi Anda"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Tidak dapat memperbarui preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Output audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Tentang output audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Pelajari lebih lanjut Buka dengan Smartwatch"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Tambahkan smartwatch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Hapus smartwatch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Buka dengan Sidik Jari & Wajah"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Buka dengan Wajah & Sidik Jari"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Buka dengan Wajah & Sidik Jari untuk profil kerja"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Penyiapan diperlukan"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Wajah dan sidik jari ditambahkan"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instal aplikasi"</b>\n"Instal aplikasi yang ingin Anda jadikan pribadi di ruang Anda"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Perlu diingat"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikasi berhenti saat Anda mengunci ruang"</b>\n"Saat Anda mengunci ruang, aplikasi di ruang Anda akan dihentikan dan Anda tidak akan menerima notifikasi dari aplikasi tersebut"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Ruang privasi tidak cocok untuk aplikasi yang perlu berjalan di latar belakang atau mengirim notifikasi penting, seperti aplikasi medis. Hal ini dikarenakan notifikasi dan aktivitas latar belakang dihentikan saat ruang Anda dikunci.\n\nAplikasi di ruang privasi Anda tidak akan muncul di pengelola izin, dasbor privasi, dan setelan lainnya saat ruang privasi Anda dikunci.\n\nRuang privasi Anda tidak dapat dipindahkan ke perangkat baru. Anda harus menyiapkan ruang privasi baru jika ingin menggunakannya di perangkat lain.\n\nSiapa pun yang menghubungkan perangkat Anda ke komputer atau menginstal aplikasi berbahaya ke perangkat Anda mungkin dapat mengakses ruang privasi Anda."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Ruang privasi tidak cocok untuk aplikasi yang perlu berjalan di latar belakang atau mengirim notifikasi penting, seperti aplikasi medis. Hal ini dikarenakan notifikasi dan aktivitas latar belakang dihentikan saat ruang Anda dikunci.\n\nAplikasi di ruang privasi Anda tidak akan muncul di pengelola izin, dasbor privasi, dan setelan lainnya saat ruang privasi dikunci.\n\nRuang privasi Anda tidak dapat dipulihkan ke perangkat baru. Anda harus menyiapkan ruang lain jika ingin menggunakannya di perangkat lain.\n\nSiapa pun yang menghubungkan perangkat Anda ke komputer atau menginstal aplikasi berbahaya ke perangkat Anda mungkin dapat mengakses ruang privasi Anda."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Pelajari lebih lanjut ruang privasi"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Proses ini perlu waktu beberapa saat"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Menyiapkan ruang privasi…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Mulai Ulang Perangkat?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Pencatatan log NFC detail dimaksudkan hanya untuk tujuan pengembangan. Data NFC tambahan disertakan dalam laporan bug, yang mungkin berisi informasi pribadi. Mulai ulang perangkat untuk mengubah setelan ini."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Mulai ulang"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Transmisi"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"cermin"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Aktifkan layar nirkabel"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptif"</string>
<string name="brightness" msgid="6216871641021779698">"Tingkat kecerahan"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Kecerahan adaptif"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Kecerahan layar akan disesuaikan otomatis dengan lingkungan dan aktivitas Anda. Anda dapat memindahkan penggeser secara manual untuk membantu kecerahan adaptif belajar dari preferensi Anda."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Tentang kecerahan adaptif"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Kecerahan layar akan otomatis disesuaikan dengan lingkungan dan aktivitas Anda. Anda dapat menggeser tombol kecerahan secara manual untuk membantu fitur ini mempelajari preferensi Anda."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Aktif"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Nonaktif"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"White balance layar"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Dipilih pengguna: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Ucapan"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Kecepatan kursor"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Pengendali Game"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Mengalihkan getaran"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Kirim getaran ke pengontrol game saat terhubung"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Tetap lanjutkan"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Batal"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Setelan pembesaran"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Penggeseran satu jari"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Pindahkan area pembesaran dengan menarik satu jari."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Pindahkan area pembesaran dengan menarik dua jari."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Tidak tersedia ketika hanya memperbesar sebagian layar"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Ketuk tombol untuk zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Perbesar layar dengan cepat untuk membuat konten terlihat lebih besar"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Untuk memperbesar:</b><br/> {0,number,integer}. Gunakan pintasan untuk memulai pembesaran<br/> {1,number,integer}. Ketuk layar<br/> {2,number,integer}. Tarik dengan 2 jari untuk berpindah pada layar<br/> {3,number,integer}. Cubit dengan 2 jari untuk menyesuaikan zoom<br/> {4,number,integer}. Gunakan pintasan untuk menghentikan pembesaran<br/><br/> <b>Untuk memperbesar sementara:</b><br/> {0,number,integer}. Pastikan jenis pembesaran disetel ke layar penuh<br/> {1,number,integer}. Gunakan pintasan untuk memulai pembesaran<br/> {2,number,integer}. Sentuh lama di mana pun pada layar<br/> {3,number,integer}. Tarik dengan jari untuk berpindah pada layar<br/> {4,number,integer}. Angkat jari untuk menghentikan pembesaran"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Jika pembesaran diaktifkan, Anda dapat memperbesar tampilan layar.\n\n"<b>"Untuk memperbesar tampilan"</b>", mulai pembesaran, lalu ketuk di bagian mana saja pada layar.\n"<ul><li>"Tarik dengan 2 jari atau lebih untuk melakukan scroll"</li>\n<li>"Cubit dengan 2 jari atau lebih untuk menyesuaikan pembesaran"</li></ul>\n\n<b>"Untuk memperbesar tampilan sementara"</b>", mulai pembesaran, lalu sentuh lama di bagian mana saja pada layar.\n"<ul><li>"• Tarik untuk menggeser layar"</li>\n<li>"• Angkat jari untuk memperkecil tampilan"</li></ul>\n\n"Anda tidak dapat memperbesar keyboard atau menu navigasi."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Halaman <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> dari <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Pintasan tombol aksesibilitas"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Tidak ada}=1{1 jadwal disetel}other{# jadwal disetel}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Jangan Ganggu"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Mode Prioritas"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<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="5135520719771212697">"Pilih jenis aktivasi"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Waktu"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Misalnya, \"09:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Misalnya, \"Kalender pribadi\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Batasi gangguan"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Aktifkan mode Jangan Ganggu"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarm dan media boleh menginterupsi"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Jadwal"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Hapus jadwal"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Hapus"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Jadwal"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Jadwal"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Tambahkan kalender"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Gunakan kalender Anda"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Jadwal"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Setel jadwal"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Jadwal"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Nonaktifkan notifikasi ponsel pada waktu tertentu"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Izinkan gangguan yang mengeluarkan suara"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokir gangguan visual"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Izinkan sinyal visual"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifikasi yang dapat menjangkau Anda"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Tetap fokus"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Tindakan tambahan"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Setelan layar"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opsi tampilan"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"aktifkan tema gelap"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Gunakan pilihan teks terang dengan latar belakang gelap di OS dan aplikasi, yang mungkin akan lebih nyaman di mata dan menghemat baterai secara signifikan di beberapa perangkat"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Tidak ada perubahan tampilan}=1{{effect_1}}=2{{effect_1} dan {effect_2}}=3{{effect_1}, {effect_2}, dan {effect_3}}other{{effect_1}, {effect_2}, dan # lainnya}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filter gangguan"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Tidak ada gangguan yang difilter"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opsi tampilan untuk notifikasi yang difilter"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Saat mode Jangan Ganggu diaktifkan"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Tidak ada suara dari notifikasi"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategori"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Lainnya"</string>
<string name="no_channels" msgid="4716199078612071915">"Aplikasi ini belum memposting notifikasi"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Tampilkan kategori yang tidak digunakan"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Setelan tambahan di aplikasi"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Tampilkan kategori yang tidak digunakan"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Sembunyikan kategori yang tidak digunakan"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Aplikasi terpilih"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Tidak ada"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Semua"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Izinkan aplikasi mengganti"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikasi yang boleh menginterupsi"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Pilih aplikasi lain"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Ubah ke mode hanya alarm selama satu jam hingga {time}}other{Ubah ke mode hanya alarm selama # jam hingga {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ubah ke mode hanya alarm hingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Ubah ke mode selalu ganggu"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Ganti nama"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Ubah ikon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Ubah ikon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Peringatan"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Tutup"</string>
<string name="device_feedback" msgid="5351614458411688608">"Kirim masukan tentang perangkat ini"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Partisi data perangkat ini perlu dikonversi ke ext4 sebelum menggunakan opsi developer 16KB. Integritas software tidak dapat dijamin dalam mode ini, dan data apa pun yang disimpan di ponsel saat bootloader dibuka kuncinya dapat berpotensi terkena bahaya. Mengaktifkan opsi 16KB akan memerlukan mulai ulang sekali lagi setelah ini. Setelah Anda berada dalam mode ini, Anda dapat beralih antara mode 4KB dan 16KB dengan sekali mulai ulang. Beberapa fitur akan dinonaktifkan dalam mode ini, sehingga beberapa aplikasi mungkin tidak berfungsi. Untuk mengembalikan perangkat ke mode produksi, Anda perlu beralih kembali ke mode 4KB dan mengunci bootloader, yang akan mereset perangkat ke setelan pabrik. Setelah perangkat berhasil melakukan booting ke Android, nonaktifkan pembukaan kunci OEM di Opsi developer. Perangkat akan dihapus total dan sistem file akan diubah menjadi ext4 setelah konfirmasi. Setelah selesai, kembali untuk mengaktifkan 16KB lagi."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Hapus semua data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Gagal memformat ulang dan menghapus total partisi data ke ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Buka Kunci Bootloader Diperlukan untuk menggunakan Mode 16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Perangkat ini harus membuka kunci bootloader sebelum menggunakan opsi developer 16KB. Integritas software tidak dapat dijamin dalam mode ini, dan data apa pun yang disimpan di ponsel saat bootloader dibuka kuncinya dapat berpotensi terkena bahaya. Semua data dan setelan pengguna akan dihapus total saat mengaktifkan mode 16KB. Setelah bootloader dibuka kuncinya, mengaktifkan opsi 16KB akan memerlukan dua kali mulai ulang. Setelah Anda berada dalam mode ini, Anda dapat beralih antara mode 4KB dan 16KB dengan sekali mulai ulang. Beberapa fitur akan dinonaktifkan dalam mode ini, sehingga beberapa aplikasi mungkin tidak berfungsi. Untuk mengembalikan perangkat ke mode produksi, Anda perlu beralih kembali ke mode 4KB dan mengunci bootloader/OEM perangkat (yang akan mereset perangkat setelan pabrik). Buka kunci bootloader dan coba lagi. Anda dapat melihat petunjuk cara melakukannya di <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Menggunakan mode agnostik halaman 4KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Anda berada dalam mode 4KB dari mode agnostik halaman. Integritas software tidak dapat dijamin dalam mode ini, dan data apa pun yang disimpan di ponsel saat bootloader dibuka kuncinya dapat berpotensi terkena bahaya. Beberapa fitur akan dinonaktifkan dalam mode ini, sehingga beberapa aplikasi mungkin tidak berfungsi. Agar dapat kembali masuk ke mode produksi, Anda harus mengunci bootloader perangkat. Ketuk untuk membaca selengkapnya."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Anda berada dalam mode 4KB dari mode agnostik halaman. Integritas software tidak dapat dijamin dalam mode ini, dan data apa pun yang disimpan di ponsel saat bootloader dibuka kuncinya dapat berpotensi terkena bahaya. Beberapa fitur akan dinonaktifkan dalam mode ini, sehingga beberapa aplikasi mungkin tidak berfungsi. Agar dapat kembali masuk ke mode produksi, Anda harus mengunci bootloader perangkat. Tindakan ini akan mereset perangkat ke setelan pabrik dan memulihkannya ke setelan produksi. Setelah perangkat berhasil melakukan booting ke Android, nonaktifkan pembukaan kunci OEM di Opsi developer. Jika perangkat gagal melakukan booting ke Android atau tidak stabil, flash ulang perangkat dengan setelan pabrik terbaru dari <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> atau gunakan <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> dan pilih \'Hapus Total Perangkat\', \'Kunci Bootloader\', dan \'Paksa Flash semua partisi\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Menggunakan mode agnostik halaman 16KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Anda berada dalam mode 16KB dari mode agnostik halaman. Integritas software tidak dapat dijamin dalam mode ini, dan data apa pun yang disimpan di ponsel saat bootloader dibuka kuncinya dapat berpotensi terkena bahaya. Beberapa fitur akan dinonaktifkan dalam mode ini, sehingga beberapa aplikasi mungkin tidak berfungsi. Agar dapat kembali masuk ke mode produksi, Anda harus beralih kembali ke mode 4K dan kemudian mengunci bootloader perangkat. Ketuk untuk membaca selengkapnya."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Anda berada dalam mode 16KB dari mode agnostik halaman. Integritas software tidak dapat dijamin dalam mode ini, dan data apa pun yang disimpan di ponsel saat bootloader dibuka kuncinya dapat berpotensi terkena bahaya. Beberapa fitur akan dinonaktifkan dalam mode ini, sehingga beberapa aplikasi mungkin tidak berfungsi. Agar dapat kembali masuk ke mode produksi, Anda harus beralih kembali ke mode 4K dan kemudian mengunci bootloader perangkat. Tindakan ini akan mereset perangkat ke setelan pabrik dan memulihkannya ke setelan produksi. Setelah perangkat berhasil melakukan booting ke Android, nonaktifkan pembukaan kunci OEM di Opsi developer. Jika perangkat gagal melakukan booting ke Android atau tidak stabil, flash ulang perangkat dengan setelan pabrik terbaru dari <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> atau gunakan <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> dan pilih \'Hapus Total Perangkat\', \'Kunci Bootloader\', dan \'Paksa Flash semua partisi\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Mode Agnostik halaman 16KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Baca selengkapnya"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Pengendali laporan bug"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Izinkan multi-pengguna"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-is/arrays.xml b/res/values-is/arrays.xml
index f13f517..c791ae1 100644
--- a/res/values-is/arrays.xml
+++ b/res/values-is/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Svefntími"</item>
+ <item msgid="4152450357280759894">"Akstur"</item>
+ <item msgid="7096549258219399423">"Umlykjandi"</item>
+ <item msgid="2760716776980432977">"Í umsjón"</item>
+ <item msgid="601734478369121764">"Stjarna"</item>
+ <item msgid="6243809315432780521">"Dagatal"</item>
+ <item msgid="4913577903148415331">"Tími"</item>
+ <item msgid="3653377604690057780">"Leikhús"</item>
+ <item msgid="3843711267408385410">"Blóm"</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 55bbc5c..7aed05a 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Stillingar heyrnartækis"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Flýtileið, samhæfi við heyrnartæki"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Forstilling"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Heyrnarsérfræðingurinn þinn hefur ekki valið neinar forstillingar"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Tókst ekki að uppfæra forstillingu"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Hljóðúttak"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Um hljóðúttak"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Nánar um opnun með úri"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Bæta við úri"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Fjarlægja úr"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingrafar og andlitskenni"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Andlits- og fingrafarskenni"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Andlits- og fingrafarskenni fyrir vinnu"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Þörf er á uppsetningu"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Andliti og fingraförum bætt við"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Settu upp forrit"</b>\n"Settu upp forrit sem þú vilt halda leyndum í rýminu þínu"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Hafðu í huga"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Forrit stöðvast þegar þú læsir rýminu þínu"</b>\n"Þegar þú læsir rýminu þínu eru forrit í því rými stöðvuð og þú færð ekki tilkynningar frá þeim"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Leynirými henta ekki fyrir forrit sem þurfa að keyra í bakgrunni eða senda mikilvægar tilkynningar, s.s. forrit sem notuð eru í læknisfræðilegum tilgangi. Það er vegna þess að tilkynningar og bakgrunnsvirkni stöðvast þegar rýmið er læst.\n\nForrit í leynirýminu þínu birtast ekki í leyfisstjóra, á persónuverndarstjórnborði og í öðrum stillingum þegar leynirýmið er læst.\n\nEkki er hægt að flytja leynirými yfir í nýtt tæki. Þú þarft að setja upp nýtt leynirými ef þú vilt nota það í öðru tæki.\n\nHver sem tengir tækið þitt við tölvu eða setur upp skaðleg forrit í tækinu gæti fengið aðgang að leynirýminu."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Leynirými henta ekki fyrir forrit sem þurfa að keyra í bakgrunni eða senda mikilvægar tilkynningar, s.s. forrit sem notuð eru í læknisfræðilegum tilgangi. Það er vegna þess að tilkynningar og bakgrunnsvirkni stöðvast þegar rýmið er læst.\n\nForrit í leynirýminu þínu birtast ekki í leyfisstjóra, á persónuverndarstjórnborði og í öðrum stillingum þegar leynirýmið er læst.\n\nEkki er hægt að endurheimta leynirými í nýju tæki. Þú þarft að setja upp annað rými ef þú vilt nota það í öðru tæki.\n\nHver sem tengir tækið þitt við tölvu eða setur upp skaðleg forrit í tækinu gæti fengið aðgang að leynirýminu."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Nánar um leynirými"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Þetta tekur stutta stund"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Setur upp leynirými…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Endurræsa tæki?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Ítarleg NFC-skráning er aðeins ætluð í þróunartilgangi. Viðbótargögn um NFC fylgja villutilkynningum sem kunna að innihalda lokaðar upplýsingar. Endurræstu tækið til að breyta þessari stillingu."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Endurræsa"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Útsending"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"spegla"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Leyfa þráðlausan skjá"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Breytilegir"</string>
<string name="brightness" msgid="6216871641021779698">"Birtustig"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Aðlögun birtustigs"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Um aðlögun birtustigs"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Birtustigi skjásins verður breytt sjálfkrafa í samræmi við umhverfið og hvað þú ert að gera. Þú getur fært sleðann til að hjálpa aðlögun birtustigs að læra inn á hvernig þú vilt hafa birtuna."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Kveikt"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Slökkt"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Valið af notanda: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Tal"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Hraði bendils"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Leikjafjarstýring"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Endurbeina titringi"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Senda titring í leikjafjarstýringu þegar hún er tengd"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Halda samt áfram"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Hætta við"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Stillingar stækkunar"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Hliðrun með einum fingri"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Færðu stækkaða svæðið með því að draga einn fingur."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Færðu stækkaða svæðið með því að draga tvo fingur."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ótiltækt þegar aðeins hluti skjásins er stækkaður"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Ýttu á hnapp til að stækka"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Auktu aðdráttinn á skjánum til að stækka efnið"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Gerðu eftirfarandi til að auka aðdrátt:</b><br/> {0,number,integer}. Notaðu flýtileið til að hefja stækkun<br/> {1,number,integer}. Ýttu á skjáinn<br/> {2,number,integer}. Dragðu 2 fingur til að ferðast um skjáinn<br/> {3,number,integer}. Færðu tvo fingur saman til að stilla aðdráttinn<br/> {4,number,integer}. Notaðu flýtileið til að hætta stækkun<br/><br/> <b>Til að auka aðdrátt tímabundið:</b><br/> {0,number,integer}. Gakktu úr skugga um að stækkunaraðferðin sé stillt til að birtast á öllum skjánum<br/> {1,number,integer}. Notaðu flýtileið til að hefja stækkun<br/> {2,number,integer}. Haltu fingri hvar sem er á skjánum<br/> {3,number,integer}. Dragðu fingurinn til að ferðast um skjáinn<br/> {4,number,integer}. Lyftu fingri til að hætta stækkun"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Þegar kveikt er á stækkun geturðu aukið aðdráttinn á skjánum.\n\n"<b>"Til að stækka"</b>" skaltu hefja stækkun og ýta svo hvar sem er á skjáinn.\n"<ul><li>"Dragðu með tveimur eða fleiri fingrum til að fletta"</li>\n<li>"Færðu tvo eða fleiri fingur saman til að stilla aðdrátt"</li></ul>\n\n<b>"Til að stækka tímabundið"</b>" skaltu hefja stækkun og halda síðan fingri hvar sem er á skjánum.\n"<ul><li>"Dragðu til að fara um skjáinn"</li>\n<li>"Lyftu fingrinum til að minnka aðdrátt"</li></ul>\n\n"Þú getur ekki stækkað á lyklaborðinu eða yfirlitsstikunni."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Síða <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> af <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Flýtileið fyrir aðgengishnapp"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Engin}=1{1 áætlun stillt}one{# áætlun stillt}other{# áætlanir stilltar}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ónáðið ekki"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Forgangsstillingar"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Fáðu aðeins tilkynningar frá mikilvægum einstaklingum og forritum"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Veldu virkjunartegund"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Tími"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"T.d. „9:30 – 17:00“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Dagatal"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"T.d. „Persónulegt dagatal“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Takmarka truflanir"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Kveikja á „Ónáðið ekki“"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Vekjarar og hljóð efnis mega trufla"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Tímaáætlanir"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Eyða áætlunum"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Eyða"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Breyta"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Áætlanir"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Áætlun"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Bæta við dagatali"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Nota dagatalið þitt"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Áætlun"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Stilla áætlun"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Áætlun"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> klst. og <xliff:g id="MINUTES">%2$d</xliff:g> mín."</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Áætlun"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Þagga í símanum á vissum tíma"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Leyfa truflanir sem gefa frá sér hljóð"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Útiloka sjónrænt áreiti"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Leyfa sjónræn merki"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Tilkynningar sem geta náð til þín"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Haltu einbeitingunni"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Fleiri aðgerðir"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Skjástillingar"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Birtingarvalkostir"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"kveikja á dökku þema"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Stilltu stýrikerfið og forrit á að hafa ljósan texta á dökkum bakgrunni, sem getur verið þægilegra fyrir augun og hefur í för með sér umtalsverðan rafhlöðusparnað í sumum tækjum"</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="mode_notification_filter_title" msgid="443728483176031977">"Sía truflanir"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Engar truflanir eru síaðar"</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>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Flokkar"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Annað"</string>
<string name="no_channels" msgid="4716199078612071915">"Þetta forrit hefur ekki birt neinar tilkynningar"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Sýna ónotaða flokka"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Fleiri stillingar í forritinu"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Sýna ónotaða flokka"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Fela ónotaða flokka"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Valin forrit"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Engin"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Öll"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Leyfa forritum að hnekkja"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Forrit sem mega trufla"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Veldu fleiri forrit"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Skipta yfir í vekjara í aðeins eina klukkustund til kl. {time}}one{Skipta yfir í vekjara í aðeins # klukkustund til kl. {time}}other{Skipta yfir í vekjara í aðeins # klukkustundir til kl. {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Breyta í vekjara eingöngu til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Breyta í truflanir alltaf"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Gefa nýtt heiti"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Breyta tákni"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Breyta tákni"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Viðvörun"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Loka"</string>
<string name="device_feedback" msgid="5351614458411688608">"Senda ábendingar um þetta tæki"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Þú þarft að breyta gagnaskiptingu tækisins í ext4 áður en þú getur valið 16 kB-forritunarkostinn. Ekki er hægt að tryggja heilleika hugbúnaðarins í þessari stillingu og öll gögn símans kunna að vera í hættu á meðan ræsiforritið er ólæst. Virkjun 16 kB-valkostsins krefst þess að tækið sé endurræst einu sinni í viðbót. Þegar þú hefur virkjað þessa stillingu geturðu skipt á milli 4 kB- og 16 kB-stillinganna með því að endurræsa tækið einu sinni. Í þessum stillingum er slökkt á tilteknum eiginleikum og því munu einhver forrit ekki virka. Til að kveikja á framleiðslustillingu tækisins á ný þarftu að núllstilla tækið með því að skipta aftur yfir í 4 kB-stillingu og læsa ræsiforritinu. Slökktu síðan á „Taka ræsiforrit úr lás“ í forritunarkostunum þegar tækið hefur ræst Android. Að lokinni staðfestingu verður tækið straujað og skráarkerfinu breytt í ext4. Að því loknu skaltu koma hingað aftur til að virkja 16 kB á ný."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Eyða öllum gögnum"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Ekki tókst að endursníða og strauja gagnaskiptinguna til að breyta henni í ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 kB-stilling krefst þess að ræsiforritið sé tekið úr lás"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Þú þarft að taka ræsiforrit tækisins úr lás áður en þú getur valið 16 kB-forritunarkostinn. Ekki er hægt að tryggja heilleika hugbúnaðarins í þessari stillingu og öll gögn símans kunna að vera í hættu á meðan ræsiforritið er ólæst. Öll notandagögn og stillingar verða straujaðar þegar 16 kB-stillingin er virkjuð. Þegar ræsiforritið hefur verið tekið úr lás mun virkjun 16 kB-stillingarinnar krefjast þess að tækið sé endurræst tvisvar sinnum. Þegar þú hefur virkjað þessa stillingu geturðu skipt á milli 4 kB- og 16 kB-stillinganna með því að endurræsa tækið einu sinni. Í þessum stillingum er slökkt á tilteknum eiginleikum og því munu einhver forrit ekki virka. Til að kveikja á framleiðslustillingu tækisins á ný þarftu að núllstilla tækið með því að skipta aftur yfir í 4 kB-stillingu og læsa ræsiforritinu. Taktu ræsiforritið úr lás og reyndu aftur. Leiðbeiningar um hvernig þetta er framkvæmt má finna á <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Notar 4 kB-stillingu óháðrar síðustillingar"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Þú ert að nota 4 kB-stillingu óháðrar síðustillingar. Ekki er hægt að tryggja heilleika hugbúnaðarins í þessari stillingu og öll gögn símans kunna að vera í hættu á meðan ræsiforritið er ólæst. Í þessum stillingum er slökkt á tilteknum eiginleikum og því munu einhver forrit ekki virka. Til að kveikja á framleiðslustillingu tækisins á ný þarfðu að læsa ræsiforriti tækisins. Ýttu til að lesa meira."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Þú ert að nota 4 kB-stillingu óháðrar síðustillingar. Ekki er hægt að tryggja heilleika hugbúnaðarins í þessari stillingu og öll gögn símans kunna að vera í hættu á meðan ræsiforritið er ólæst. Í þessum stillingum er slökkt á tilteknum eiginleikum og því munu einhver forrit ekki virka. Til að kveikja á framleiðslustillingu tækisins á ný þarfðu að læsa ræsiforriti tækisins. Við þetta mun tækið núllstillast og kveikja á framleiðslustillingu á ný. Slökktu síðan á „Taka ræsiforrit úr lás“ í forritunarkostunum þegar tækið hefur ræst Android. Ef tækið er óstöðugt eða því tekst ekki að ræsa Android skaltu uppfæra tækið aftur með nýjustu útgáfu núllstillingarmynda af <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> eða fara á <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> og velja „Strauja tæki“, „Læsa ræsiforriti“ og „Þvinga uppfærslu allra deilda“."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Notar 16 kB-stillingu óháðrar síðustillingar"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Þú ert að nota 16 kB-stillingu óháðrar síðustillingar. Ekki er hægt að tryggja heilleika hugbúnaðarins í þessari stillingu og öll gögn símans kunna að vera í hættu á meðan ræsiforritið er ólæst. Í þessum stillingum er slökkt á tilteknum eiginleikum og því munu einhver forrit ekki virka. Til að kveikja á framleiðslustillingu tækisins á ný þarftu að skipta aftur yfir í 4 kB-stillingu og læsa ræsiforriti tækisins. Ýttu til að lesa meira."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Þú ert að nota 16 kB-stillingu óháðrar síðustillingar. Ekki er hægt að tryggja heilleika hugbúnaðarins í þessari stillingu og öll gögn símans kunna að vera í hættu á meðan ræsiforritið er ólæst. Í þessum stillingum er slökkt á tilteknum eiginleikum og því munu einhver forrit ekki virka. Til að kveikja á framleiðslustillingu tækisins á ný þarftu að skipta aftur yfir í 4 kB-stillingu og læsa ræsiforriti tækisins. Við þetta mun tækið núllstillast og kveikja á framleiðslustillingu á ný. Slökktu síðan á „Taka ræsiforrit úr lás“ í forritunarkostunum þegar tækið hefur ræst Android. Ef tækið er óstöðugt eða því tekst ekki að ræsa Android skaltu uppfæra tækið aftur með nýjustu útgáfu núllstillingarmynda af <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> eða fara á <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> og velja „Strauja tæki“, „Læsa ræsiforriti“ og „Þvinga uppfærslu allra deilda“."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 kB-stilling óháðrar síðustillingar"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lesa meira"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Meðhöndlun villutilkynningar"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Nota forritsfestingu"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Nota forritunarkosti"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Nota prentþjónustu"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Leyfa marga notendur"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"leyfa, margir, notandi, leyfi, margir"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"margir, notendur, prófílar, fólk, reikningar, skipta, margt"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Nota þráðlausa villuleit"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index 6b7b9fd..2a88c60 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Riposo"</item>
+ <item msgid="4152450357280759894">"Alla guida"</item>
+ <item msgid="7096549258219399423">"Immersiva"</item>
+ <item msgid="2760716776980432977">"Gestita"</item>
+ <item msgid="601734478369121764">"Stella"</item>
+ <item msgid="6243809315432780521">"Calendario"</item>
+ <item msgid="4913577903148415331">"Tempo"</item>
+ <item msgid="3653377604690057780">"Teatro"</item>
+ <item msgid="3843711267408385410">"Fiore"</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 c4d883d..13560a3 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Impostazioni protesi uditive"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Scorciatoia, compatibilità con apparecchi acustici"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Non sono presenti preset programmati dal tuo audiologo"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Impossibile aggiornare preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Uscita audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Informazioni su uscita audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Scopri di più su Sblocco dall\'orologio"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Aggiungi smartwatch"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Rimuovi smartwatch"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Sblocco con il Volto e l\'Impronta"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Sblocco con il Volto e con l\'Impronta"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Sblocco con il Volto e l\'Impronta per lavoro"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Configurazione richiesta"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Impronte e volto aggiunti"</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Gli spazi privati non sono adatti per le app che devono essere eseguite in background o inviare notifiche critiche, come le app mediche. Questo perché le notifiche e le attività in background vengono interrotte quando il tuo spazio è bloccato.\n\nLe app nel tuo spazio privato non verranno visualizzate nella gestione autorizzazioni, nella dashboard della privacy e in altre impostazioni quando lo spazio privato è bloccato.\n\nIl tuo spazio privato non può essere ripristinato su un nuovo dispositivo. Dovrai configurare un altro spazio privato per poterlo usare su un altro dispositivo.\n\nChiunque colleghi il dispositivo a un computer o installi app dannose sul dispositivo può avere accesso al tuo spazio privato."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Gli spazi privati non sono adatti per le app che devono essere eseguite in background o inviare notifiche critiche, come le app mediche. Questo perché le notifiche e le attività in background vengono interrotte quando lo spazio è bloccato.\n\nLe app nel tuo spazio privato non verranno visualizzate nella gestione autorizzazioni, nella dashboard della privacy e in altre impostazioni quando lo spazio privato è bloccato.\n\nIl tuo spazio privato non può essere ripristinato su un nuovo dispositivo. Dovrai configurare un altro spazio se vuoi usarlo su un altro dispositivo.\n\nChiunque colleghi il tuo dispositivo a un computer o installi app dannose sul tuo dispositivo potrebbe accedere al tuo spazio privato."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Scopri di più sullo spazio privato"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"L\'operazione richiederà alcuni istanti"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configurazione dello spazio privato in corso…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vuoi riavviare il dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Il logging NFC dettagliato è a solo scopo di sviluppo. Vengono inclusi dati NFC aggiuntivi nelle segnalazioni di bug, che potrebbero contenere informazioni private. Riavvia il dispositivo per cambiare questa impostazione."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Riavvia"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Trasmissione"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirroring"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Attiva display wireless"</string>
@@ -1176,7 +1205,7 @@
<string name="display_settings" msgid="7197750639709493852">"Display"</string>
<string name="accelerometer_title" msgid="7745991950833748909">"Rotazione automatica dello schermo"</string>
<string name="auto_rotate_option_off" msgid="2788096269396290731">"Off"</string>
- <string name="auto_rotate_option_on" msgid="5776678230808498171">"On"</string>
+ <string name="auto_rotate_option_on" msgid="5776678230808498171">"Attiva"</string>
<string name="auto_rotate_option_face_based" msgid="3438645484087953174">"On - Rotazione basata sul viso"</string>
<string name="auto_rotate_switch_face_based" msgid="9116123744601564320">"Riconoscimento facciale"</string>
<string name="auto_rotate_link_a11y" msgid="5146188567212233286">"Scopri di più sulla rotazione automatica"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adattivi"</string>
<string name="brightness" msgid="6216871641021779698">"Livello di luminosità"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Luminosità adattiva"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Informazioni sulla luminosità adattiva"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"La luminosità dello schermo verrà regolata automaticamente in base all\'ambiente e alle attività. Puoi spostare manualmente il cursore per far sì che la luminosità adattiva memorizzi le tue preferenze."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"On"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Off"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Selezionato dall\'utente: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voce"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocità del puntatore"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controller di gioco"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Reindirizza vibrazione"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Invia la vibrazione al controller di gioco quando è collegato"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continua comunque"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Annulla"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Impostazioni ingrandimento"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Panning con un dito"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Muovi Lente d\'ingrandimento con 1 dito"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Trascina 1 dito per spostarti nella schermata"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Sposta l\'area di ingrandimento trascinando un dito."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Sposta l\'area di ingrandimento trascinando due dita."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Non disponibile quando viene ingrandita solo una parte dello schermo"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tocca un pulsante per eseguire lo zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Aumenta velocemente lo zoom sullo schermo per ingrandire i contenuti"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Per aumentare lo zoom:</b><br/> {0,number,integer}. Usa la scorciatoia per avviare l\'ingrandimento<br/> {1,number,integer}. Tocca lo schermo<br/> {2,number,integer}. Trascina 2 dita per spostarti sullo schermo<br/> {3,number,integer}. Pizzica con 2 dita per regolare lo zoom<br/> {4,number,integer}. Usa la scorciatoia per interrompere l\'ingrandimento<br/><br/> <b>Per aumentare lo zoom temporaneamente:</b><br/> {0,number,integer}. Assicurati che sia impostato il tipo di ingrandimento a schermo intero<br/> {1,number,integer}. Usa la scorciatoia per avviare l\'ingrandimento<br/> {2,number,integer}. Tocca e tieni premuto un punto qualsiasi dello schermo<br/> {3,number,integer}. Trascina il dito per spostarti sullo schermo<br/> {4,number,integer}. Solleva il dito per interrompere l\'ingrandimento"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Per aumentare lo zoom:</b><br/> {0,number,integer}. Usa la scorciatoia per avviare l\'ingrandimento.<br/> {1,number,integer}. Tocca lo schermo.<br/> {2,number,integer}. Trascina 2 dita per spostarti sullo schermo.<br/> {3,number,integer}. Pizzica con 2 dita per regolare lo zoom.<br/> {4,number,integer}. Utilizza la scorciatoia per interrompere l\'ingrandimento<br/><br/> Puoi anche aumentare lo zoom temporaneamente e altro ancora."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Per aumentare lo zoom:</b><br/> {0,number,integer}. Usa la scorciatoia per avviare l\'ingrandimento.<br/> {1,number,integer}. Tocca lo schermo.<br/> {2,number,integer}. Trascina 1 o 2 dita per spostarti sullo schermo<br/> {3,number,integer}. Pizzica con 2 dita per regolare lo zoom.<br/> {4,number,integer}. Utilizza la scorciatoia per interrompere l\'ingrandimento<br/><br/> Puoi anche aumentare lo zoom temporaneamente e altro ancora."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Quando è attivo l\'ingrandimento, puoi aumentare lo zoom sullo schermo.\n\n"<b>"Per eseguire lo zoom"</b>", avvia l\'ingrandimento, quindi tocca un punto qualsiasi sullo schermo.\n"<ul><li>"Trascina almeno due dita per scorrere"</li>\n<li>"Pizzica con almeno due dita per regolare lo zoom."</li></ul>\n\n<b>"Per ingrandire temporaneamente"</b>", avvia l\'ingrandimento, quindi tocca e tieni premuto un punto qualsiasi sullo schermo.\n"<ul><li>"Trascina per spostarti sullo schermo"</li>\n<li>"Solleva il dito per ridurre lo zoom"</li></ul>\n\n"Non puoi aumentare lo zoom sulla tastiera o nella barra di navigazione."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Pagina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> di <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Scorciatoia pulsante Accessibilità"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nessuna}=1{1 pianificazione impostata}other{# pianificazioni impostate}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Non disturbare"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modalità priorità"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Ricevi soltanto le notifiche di app e persone importanti"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Seleziona tipo di attivazione"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Ora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Ad esempio, \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendario"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Ad esempio, \"Calendario personale\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitare le interruzioni"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Attiva Non disturbare"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Sveglie e suoni multimediali possono interrompere"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Pianificazioni"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Elimina pianificazioni"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Elimina"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Modifica"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Pianificazioni"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Pianificazione"</string>
@@ -3340,6 +3396,8 @@
<string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Imposta una programmazione"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
+ <skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Pianificazione"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Disattiva la suoneria in orari specifici"</string>
<string name="zen_mode_automation_suggestion_summary" msgid="1946750790084170826">"Imposta regole Non disturbare"</string>
@@ -3349,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Consenti le interruzioni sonore"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blocca interruzioni visive"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Consenti segnali visivi"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notifiche che possono arrivarti"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Mantieni la concentrazione"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Azioni aggiuntive"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Impostazioni di visualizzazione"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opzioni di visualizzazione"</string>
@@ -3366,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"attiva tema scuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Scegli l\'opzione Testo chiaro su sfondo scuro per il sistema operativo e le app per non stancare gli occhi e consentire un notevole risparmio della batteria su alcuni dispositivi"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nessuna modifica del display}=1{{effect_1}}=2{{effect_1} e {effect_2}}=3{{effect_1}, {effect_2} e {effect_3}}other{{effect_1}, {effect_2} e altri #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtra interruzioni"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nessuna interruzione filtrata"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Mostra opzioni per le notifiche filtrate"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Quando è attiva la modalità Non disturbare"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Notifiche senza audio"</string>
@@ -3662,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorie"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Altro"</string>
<string name="no_channels" msgid="4716199078612071915">"L\'app non ha pubblicato alcuna notifica"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostra le categorie inutilizzate"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Altre impostazioni nell\'app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostra le categorie inutilizzate"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Nascondi le categorie inutilizzate"</string>
@@ -3771,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"App selezionate"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nessuna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Tutti"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Consenti alle app di ignorarla"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"App che possono interrompere"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Seleziona altre app"</string>
@@ -4864,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"La partizione dei dati del dispositivo deve essere convertita in ext4 prima di usare l\'opzione sviluppatore a 16 kB. Non è possibile garantire l\'integrità del software in questa modalità e i dati archiviati sullo smartphone potrebbero essere a rischio finché il bootloader è sbloccato. Se attivi l\'opzione a 16 kB, sarà necessario un ulteriore riavvio. Una volta che sarà attiva questa modalità, potrai passare dalla modalità a 4 kB a quella a 16 kB con un solo riavvio. Alcune funzionalità verranno disattivate in queste modalità, pertanto alcune applicazioni potrebbero non funzionare. Per far tornare il dispositivo in modalità di produzione, dovrai tornare alla modalità a 4 kB e bloccare il bootloader, il che ripristina i dati di fabbrica del dispositivo. Dopo che Android viene avviato correttamente sul dispositivo, disattiva lo sblocco OEM nelle Opzioni sviluppatore. Tutti i dati verranno cancellati dal dispositivo e il file system verrà convertito in ext4 dopo la conferma. Quando termina l\'operazione, riabilita nuovamente la modalità a 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Resetta tutti i dati"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Impossibile riformattare e cancellare la partizione di dati in ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Sblocco del bootloader richiesto per la modalità a 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"È necessario sbloccare il bootloader del dispositivo prima di usare l\'opzione sviluppatore a 16 kB. Non è possibile garantire l\'integrità del software in questa modalità e i dati archiviati sullo smartphone potrebbero essere a rischio finché il bootloader è sbloccato. Tutti i dati utente e le impostazioni verranno cancellati quando attivi la modalità a 16 kB. Dopo aver sbloccato il bootloader, l\'attivazione dell\'opzione a 16 kB richiederà due riavvii. Una volta che sarà attiva questa modalità, potrai passare dalla modalità a 4 kB a quella a 16 kB con un solo riavvio. Alcune funzionalità verranno disattivate in queste modalità, pertanto alcune applicazioni potrebbero non funzionare. Per far tornare il dispositivo in modalità di produzione, dovrai tornare alla modalità a 4 kB e bloccare il bootloader del dispositivo, il che ripristina i dati di fabbrica del dispositivo. Sblocca il bootloader e riprova. Puoi consultare le istruzioni su come fare all\'indirizzo <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Modalità indipendente dalla pagina a 4 kB in uso"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Hai attivato l\'opzione a 4 kB della modalità indipendente dalla pagina. Non è possibile garantire l\'integrità del software in questa modalità e i dati archiviati sullo smartphone potrebbero essere a rischio finché il bootloader è sbloccato. Alcune funzionalità verranno disattivate in queste modalità, pertanto alcune applicazioni potrebbero non funzionare. Per tornare alla modalità di produzione, devi bloccare il bootloader del dispositivo. Tocca per leggere altro."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Hai attivato l\'opzione a 4 kB della modalità indipendente dalla pagina. Non è possibile garantire l\'integrità del software in questa modalità e i dati archiviati sullo smartphone potrebbero essere a rischio finché il bootloader è sbloccato. Alcune funzionalità verranno disattivate in queste modalità, pertanto alcune applicazioni potrebbero non funzionare. Per tornare alla modalità di produzione, devi bloccare il bootloader del dispositivo. Questo eseguirà nuovamente il ripristino dei dati di fabbrica del dispositivo e ripristinerà le impostazioni di produzione. Dopo che Android viene avviato correttamente sul dispositivo, disattiva lo sblocco OEM nelle Opzioni sviluppatore. Se l\'avvio di Android sul dispositivo non riesce o è instabile, esegui nuovamente il flashing del dispositivo con le immagini del produttore più recenti da <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e seleziona \"Cancella dati dispositivo\", \"Blocca bootloader\" e \"Esegui il flash forzato di tutte le partizioni\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Modalità indipendente dalla pagina a 16 kB in uso"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Hai attivato l\'opzione a 16 kB della modalità indipendente dalla pagina. Non è possibile garantire l\'integrità del software in questa modalità e i dati archiviati sullo smartphone potrebbero essere a rischio finché il bootloader è sbloccato. Alcune funzionalità verranno disattivate in queste modalità, pertanto alcune applicazioni potrebbero non funzionare. Per tornare alla modalità di produzione, devi tornare alla modalità a 4 kB e bloccare il bootloader del dispositivo. Tocca per leggere altro."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Hai attivato l\'opzione a 16 kB della modalità indipendente dalla pagina. Non è possibile garantire l\'integrità del software in questa modalità e i dati archiviati sullo smartphone potrebbero essere a rischio finché il bootloader è sbloccato. Alcune funzionalità verranno disattivate in queste modalità, pertanto alcune applicazioni potrebbero non funzionare. Per tornare alla modalità di produzione, devi tornare alla modalità a 4 kB e bloccare il bootloader del dispositivo. Questo eseguirà nuovamente il ripristino dei dati di fabbrica del dispositivo e ripristinerà le impostazioni di produzione. Dopo che Android viene avviato correttamente sul dispositivo, disattiva lo sblocco OEM nelle Opzioni sviluppatore. Se l\'avvio di Android sul dispositivo non riesce o è instabile, esegui nuovamente il flashing del dispositivo con le immagini del produttore più recenti da <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o usa <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e seleziona \"Cancella dati dispositivo\", \"Blocca bootloader\" e \"Esegui il flash forzato di tutte le partizioni\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modalità indipendente dalla pagina a 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Leggi tutto"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Gestore segnalazione di bug"</string>
@@ -5003,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usa Blocco app su schermo"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usa Opzioni sviluppatore"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usa servizio di stampa"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Consenti utenti multipli"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"consentire, multiplo, utente, autorizzare, molti"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"più, utenti, profili, persone, account, sensore, molti"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usa debug wireless"</string>
@@ -5347,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
index 44c7e80..972aaf8 100644
--- a/res/values-iw/arrays.xml
+++ b/res/values-iw/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"מנוחה"</item>
+ <item msgid="4152450357280759894">"נהיגה"</item>
+ <item msgid="7096549258219399423">"ריכוז"</item>
+ <item msgid="2760716776980432977">"בשליטה"</item>
+ <item msgid="601734478369121764">"כוכב"</item>
+ <item msgid="6243809315432780521">"יומן"</item>
+ <item msgid="4913577903148415331">"שעה"</item>
+ <item msgid="3653377604690057780">"תיאטרון"</item>
+ <item msgid="3843711267408385410">"פרח"</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 3e68933..2820e2f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ההגדרות של מכשיר השמיעה"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"קיצור דרך, תאימות למכשירי שמיעה"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"הגדרה קבועה מראש"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"לא תוכנתו הגדרות קבועות מראש על ידי האודיולוג שלך"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"לא ניתן לעדכן את ההגדרה הקבועה מראש"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"פלט אודיו"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"מידע על פלט האודיו"</string>
@@ -383,7 +384,7 @@
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_title_2" msgid="2580899232734177771">"איך זה עובד"</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_2" msgid="5909924864816776516">"הפיצ\'ר \'ביטול הנעילה בטביעת אצבע\' יוצר תבנית ייחודית של טביעת האצבע שלך כדי לאמת את זהותך. תהליך היצירה של תבנית לטביעת האצבע כולל צילום תמונות של טביעת האצבע שלך מזוויות שונות."</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_2" msgid="3493356605815124807">"הפיצ\'ר \'ביטול הנעילה בטביעת אצבע\' יוצר תבנית ייחודית של טביעת האצבע של הילד או הילדה כדי לאמת את זהותם. כדי ליצור את התבנית הזו לטביעת האצבע במהלך ההגדרה, יהיה עליהם לצלם תמונות של טביעת האצבע מזוויות שונות."</string>
- <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_6" msgid="5314031490467481499">"לקבלת התוצאות הטובות ביותר, כדאי להשתמש במגן מסך בעל אישור Made for Google. טביעת האצבע שלך עלולה לא לעבוד עם מגיני מסך אחרים."</string>
+ <string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_6" msgid="5314031490467481499">"לקבלת התוצאות הטובות ביותר, כדאי להשתמש במגן מסך שקיבל אישור Made for Google. יכול להיות שטביעת האצבע שלך לא תעבוד עם מגני מסך אחרים."</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_footer_message_consent_6" msgid="3563942520716110478">"לקבלת התוצאות הטובות ביותר, כדאי להשתמש במגן מסך בעל אישור Made for Google. טביעת האצבע של הילד או הילדה עלולה לא לעבוד עם מגני מסך אחרים."</string>
<string name="security_settings_fingerprint_v2_enroll_introduction_message_learn_more" msgid="5856010507790137793"></string>
<string name="security_settings_activeunlock_preference_title" msgid="4257580421087062228">"ביטול נעילה עם השעון"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"מידע נוסף על ביטול נעילה עם השעון"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"הוספת השעון"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"הסרת השעון"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ביטול הנעילה בטביעת אצבע ופתיחה ע\"י זיהוי הפנים"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"פתיחה ע\"י זיהוי הפנים וביטול הנעילה בטביעת אצבע"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"פתיחה ע\"י זיהוי הפנים וביטול הנעילה בטביעת אצבע בפרופיל העבודה"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"צריך להגדיר ביטול נעילה בעזרת מידע ביומטרי"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"נוספו טביעות אצבע וזיהוי פנים"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"להפעיל את המכשיר מחדש?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"הרישום ביומן של פרטי NFC מיועד למטרות פיתוח בלבד. נתוני NFC נוספים נכללים בדוחות על באגים, שעשויים להכיל מידע פרטי. צריך להפעיל מחדש את המכשיר כדי לשנות את ההגדרה."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"הפעלה מחדש"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"הפעלת Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"העברה (csat)"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"הפעלת תצוגת WiFi"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"גוון ניתן להתאמה"</string>
<string name="brightness" msgid="6216871641021779698">"רמת בהירות"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"בהירות אוטומטית"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"בהירות המסך תותאם באופן אוטומטי לסביבה ולפעילויות שלך. עדיין אפשר לכוונן את הבהירות באופן ידני מפס ההזזה, וכך הבהירות האוטומטית תותאם עם הזמן להעדפות שלך."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"מידע על התאמה אוטומטית של הבהירות"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"בהירות המסך תותאם באופן אוטומטי לסביבה ולפעילויות שלך. עדיין אפשר לכוונן את הבהירות באופן ידני באמצעות פס ההזזה, וכך הבהירות האוטומטית תותאם עם הזמן להעדפות שלך."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"פועל"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"כבויה"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"הצגת איזון לבן"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"אני רוצה להמשיך בכל זאת"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ביטול"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"הגדרות ההגדלה"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"הזזה עם אצבע אחת"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"מזיזים את זכוכית המגדלת עם אצבע אחת"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"גוררים אצבע אחת כדי לנוע על פני המסך"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"גוררים אצבע אחת כדי להזיז את אזור ההגדלה."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"גוררים שתי אצבעות כדי להזיז את אזור ההגדלה."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"לא זמין בזמן הגדלה של רק חלק מהמסך"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"הקשה על לחצן כדי לשנות את מרחק התצוגה"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"כדי לראות טוב יותר את התוכן, אפשר להגדיל במהירות את התצוגה"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>כדי להגדיל את התצוגה:</b><br/> {0,number,integer}. משתמשים בקיצור הדרך כדי להתחיל בהגדלה<br/> {1,number,integer}. מקישים על המסך<br/> {2,number,integer}. גוררים 2 אצבעות על המסך כדי לזוז בו<br/> {3,number,integer}. עושים תנועת צביטה באמצעות 2 אצבעות כדי לשנות את מרחק התצוגה<br/> {4,number,integer}. משתמשים בקיצור הדרך כדי להפסיק את ההגדלה<br/><br/> <b>כדי להגדיל את התצוגה באופן זמני:</b><br/> {0,number,integer}. מוודאים שסוג ההגדלה הוא \'מסך מלא\'<br/> {1,number,integer}. משתמשים בקיצור הדרך כדי להתחיל בהגדלה<br/> {2,number,integer}. לוחצים לחיצה ארוכה במקום כלשהו במסך<br/> {3,number,integer}. גוררים את האצבע על המסך כדי לזוז בו<br/> {4,number,integer}. כדי להפסיק את ההגדלה, מרימים את האצבע"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>כדי להגדיל את התצוגה:</b><br/> {0,number,integer}. משתמשים במקש קיצור כדי להתחיל בהגדלה<br/> {1,number,integer}. מקישים על המסך<br/> {2,number,integer}. גוררים 2 אצבעות על המסך כדי לזוז בו<br/> {3,number,integer}. עושים תנועת צביטה עם 2 אצבעות כדי לשנות את מרחק התצוגה<br/> {4,number,integer}. אפשר להשתמש במקש קיצור כדי לעצור את ההגדלה<br/><br/> ניתן גם להגדיל את התצוגה באופן זמני ועוד."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>כדי להגדיל את התצוגה:</b><br/> {0,number,integer}. משתמשים במקש קיצור כדי להתחיל בהגדלה<br/> {1,number,integer}. מקישים על המסך<br/> {2,number,integer}. גוררים אצבע אחת או שתיים על המסך כדי לזוז בו<br/> {3,number,integer}. עושים תנועת צביטה עם 2 אצבעות כדי לשנות את מרחק התצוגה<br/> {4,number,integer}. אפשר להשתמש במקש קיצור כדי לעצור את ההגדלה<br/><br/> ניתן גם להגדיל את התצוגה באופן זמני ועוד."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"כשההגדלה מופעלת, ניתן להתקרב למסך.\n\n"<b>"כדי להתקרב,"</b>", מתחילים בהגדלה ולאחר מכן מקישים במקום כלשהו במסך.\n"<ul><li>"גוררים שתי אצבעות או יותר כדי לגלול"</li>\n<li>"עושים תנועת צביטה עם שתי אצבעות או יותר כדי לשנות את מרחק התצוגה"</li></ul>\n\n<b>"כדי להתקרב באופן זמני"</b>", מתחילים בהגדלה ולאחר מכן, לוחצים לחיצה ארוכה במקום כלשהו במסך.\n"<ul><li>"גוררים כדי לנוע במסך"</li>\n<li>"מרימים את האצבע כדי להתרחק"</li></ul>\n\n"לא ניתן להתקרב באמצעות המקלדת או סרגל הניווט."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"דף <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">"קיצור דרך באמצעות לחצן הנגישות"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"מצבי עדיפות"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"קבלת התראות רק מאפליקציות ומאנשים חשובים"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"בחירת סוג ההפעלה"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"שעה"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"לדוגמה: \"21:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"יומן"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"לדוגמה: \"יומן אישי\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"הגבלת הפרעות"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"מחיקת לוחות זמנים"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"מחיקה"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"הוספת יומן"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"שימוש ביומן"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"לוח זמנים"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"הגדרת לוח זמנים"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"לוח זמנים"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"השתקת הטלפון בזמנים מסוימים"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"אישור להפרעות עם צלילים"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"חסימת הפרעות חזותיות"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"הפעלת אותות חזותיים"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"התראות שיכולות להגיע אליך"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"שמירה על ריכוז"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"פעולות נוספות"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"הגדרות תצוגה"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"אפשרויות תצוגה"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"הפעלת העיצוב הכהה"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"במערכת ההפעלה ובאפליקציות, כדאי להחליף להעדפה של טקסט בהיר על רקע כהה. העיצוב הזה פחות מאמץ את העיניים ומוביל לחיסכון משמעותי בסוללה במכשירים מסוימים"</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="mode_notification_filter_title" msgid="443728483176031977">"סינון של הפרעות"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"ללא סינון של הפרעות"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"הצגת קטגוריות שלא בשימוש"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"הסתרת קטגוריות שלא בשימוש"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"הכול"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{החלפה למצב \'התראות בלבד\' למשך שעה אחת עד {time}}one{החלפה למצב \'התראות בלבד\' למשך # שעות עד {time}}two{החלפה למצב \'התראות בלבד\' למשך שעתיים (#) עד {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"שינוי השם"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"שינוי הסמל"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"שינוי הסמל"</string>
<string name="warning_button_text" msgid="1274234338874005639">"אזהרה"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"סגירה"</string>
<string name="device_feedback" msgid="5351614458411688608">"שליחת משוב על המכשיר הזה"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"צריך להמיר את מחיצת הנתונים של המכשיר הזה ל-ext4 לפני השימוש באפשרות למפתחים של 16KB. לא ניתן להבטיח את תקינות התוכנה במצב הזה. כל הנתונים שמאוחסנים בטלפון בזמן שתוכנת האתחול לא נעולה עלולים להיות בסיכון. לאחר הפעלת האפשרות של 16KB תידרש הפעלה נוספת מחדש. מהמצב הזה, אפשר לעבור בין מצב 4KB למצב 16KB בהפעלה אחת מחדש. חלק מהתכונות יושבתו במצבים האלה, כך שחלק מהאפליקציות לא יפעלו. כדי להחזיר את המכשיר למצב ייצור, עליך לחזור למצב 4KB ולנעול את תוכנת האתחול. המכשיר יאופס להגדרות המקוריות. אחרי שהמכשיר מאותחל ל-Android, צריך להשבית את מצב OEM באפשרויות למפתחים. לאחר האישור, הנתונים במכשיר יאופסו ומערכת הקבצים תשתנה ל-ext4. לאחר השלמת הפעולה הזו, צריך לחזור כדי להפעיל את מצב 16KB שוב."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"מחיקת כל הנתונים"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"הניסיון לפרמט מחדש את המכשיר ולאפס את מחיצת הנתונים ל-ext4 נכשל."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"נדרש ביטול נעילה של תוכנת האתחול למצב 16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"לפני השימוש באפשרות למפתחים של 16KB, צריך לבטל את הנעילה של תוכנת האתחול במכשיר הזה. לא ניתן להבטיח את תקינות התוכנה במצב הזה. כל הנתונים שמאוחסנים בטלפון בזמן שתוכנת האתחול לא נעולה עלולים להיות בסיכון. כל נתוני המשתמש וההגדרות יאופסו בהפעלת מצב 16KB. לאחר ביטול הנעילה של תוכנת האתחול יידרשו שתי הפעלות מחדש כדי שמצב 16KB ייכנס לתוקף. מהמצב הזה, אפשר לעבור בין מצב 4KB למצב 16KB בהפעלה אחת מחדש. חלק מהתכונות יושבתו במצבים האלה, כך שחלק מהאפליקציות לא יפעלו. כדי להחזיר את המכשיר למצב ייצור, צריך לחזור למצב 4KB ואז לנעול את תוכנת האתחול או את מצב ה-OEM של המכשיר (המכשיר יאופס להגדרות המקוריות). צריך לבטל את הנעילה של תוכנת האתחול ולנסות שוב. הוראות לביצוע הפעולה זמינות בכתובת <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"שימוש במצב לא מותאם לדף של 4KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"הפעילות שלך מתרחשת במצב לא מותאם לדף של 4KB. לא ניתן להבטיח את תקינות התוכנה במצב הזה. כל הנתונים שמאוחסנים בטלפון בזמן שתוכנת האתחול לא נעולה עלולים להיות בסיכון. חלק מהתכונות יושבתו במצבים האלה, כך שחלק מהאפליקציות לא יפעלו. כדי להיכנס שוב למצב ייצור, עליך לנעול את תוכנת האתחול של המכשיר. אפשר להקיש כדי לקרוא עוד."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"הפעילות שלך מתרחשת במצב 4KB השייך למצב שבו גודל הדף לא נקבע מראש על ידי מערכת ההפעלה. לא ניתן להבטיח את תקינות התוכנה במצב הזה. כל הנתונים שמאוחסנים בטלפון בזמן שתוכנת האתחול לא נעולה עלולים להיות בסיכון. חלק מהתכונות יושבתו במצבים האלה, כך שחלק מהאפליקציות לא יפעלו. כדי להיכנס שוב למצב ייצור, עליך לנעול את תוכנת האתחול של המכשיר. הפעולה הזו תאפס שוב את המכשיר להגדרות המקוריות ותשחזר את הגדרות הייצור. אחרי שהמכשיר מאותחל ל-Android, צריך להשבית את מצב OEM באפשרויות למפתחים. אם לא ניתן לאתחל את המכשיר ל-Android או שהוא לא יציב, צריך לעדכן במכשיר את גיבויי הקושחה בכתובת <a href=\"https://developers.google.com/android/images\">https://developers .google.com/android/images</a> או להשתמש ב-<a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ולבחור באפשרות \'איפוס נתונים במכשיר\' > \'נעילת תוכנת האתחול\' > \'כפיית עדכון על כל המחיצות\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"שימוש במצב מותאם לדף של 16KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"הפעילות שלך מתרחשת במצב לא מותאם לדף של 16KB. לא ניתן להבטיח את תקינות התוכנה במצב הזה. כל הנתונים שמאוחסנים בטלפון בזמן שתוכנת האתחול לא נעולה עלולים להיות בסיכון. חלק מהתכונות יושבתו במצבים האלה, כך שחלק מהאפליקציות לא יפעלו. כדי להיכנס שוב למצב ייצור, עליך לחזור למצב 4K ואז לנעול את תוכנת האתחול של המכשיר. אפשר להקיש כדי לקרוא עוד."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"מצב העבודה הנוכחי שלך הוא 16KB של מצב עבודה לא מותאם. אי אפשר להבטיח את תקינות התוכנה במצב הזה. כל הנתונים שמאוחסנים בטלפון בזמן שתוכנת האתחול לא נעולה עלולים להיות בסיכון. חלק מהתכונות יושבתו במצבים האלה, כך שחלק מהאפליקציות לא יפעלו. כדי להיכנס שוב למצב ייצור, עליך לחזור למצב 4K ואז לנעול את תוכנת האתחול של המכשיר. הפעולה הזו תאפס שוב את המכשיר להגדרות המקוריות ותשחזר את הגדרות הייצור. אחרי שהמכשיר מאותחל ל-Android, צריך להשבית את מצב OEM באפשרויות למפתחים. אם לא ניתן לאתחל את המכשיר ל-Android או שהוא לא יציב, צריך לעדכן במכשיר את גיבויי הקושחה בכתובת <a href=\"https://developers.google.com/android/images\">https://developers .google.com/android/images</a> או להשתמש ב-<a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ולבחור באפשרות \'איפוס נתונים במכשיר\' > \'נעילת תוכנת האתחול\' > \'כפיית עדכון על כל המחיצות\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"מצב לא מותאם לדף של 16KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"עוד פרטים"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"טיפול בדוחות על באגים"</string>
@@ -4998,7 +5058,7 @@
<string name="bluetooth_phonebook_access_dialog_title" msgid="7624607995928968721">"להעניק גישה לאנשי הקשר וליומן השיחות?"</string>
<string name="bluetooth_phonebook_access_dialog_content" msgid="959658135522249170">"מכשיר Bluetooth, <xliff:g id="DEVICE_NAME_0">%1$s</xliff:g>, מבקש לקבל גישה לאנשי הקשר וליומן השיחות. הגישה תכלול גם נתונים על שיחות נכנסות ויוצאות.\n\nלא התחברת בעבר למכשיר <xliff:g id="DEVICE_NAME_1">%2$s</xliff:g>."</string>
<string name="category_name_brightness" msgid="8520372392029305084">"בהירות"</string>
- <string name="category_name_lock_display" msgid="8310402558217129670">"מסך נעילה"</string>
+ <string name="category_name_lock_display" msgid="8310402558217129670">"תצוגת מסך נעילה"</string>
<string name="category_name_appearance" msgid="8287486771764166805">"מראה"</string>
<string name="category_name_color" msgid="937514550918977151">"צבע"</string>
<string name="category_name_display_controls" msgid="7046581691184725216">"הגדרות תצוגה נוספות"</string>
@@ -5010,7 +5070,8 @@
<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="6686858308083037810">"הרשאה למשתמשים מרובים"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5354,4 +5415,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index ceafd68..118104f 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"就寝"</item>
+ <item msgid="4152450357280759894">"運転中"</item>
+ <item msgid="7096549258219399423">"臨場感"</item>
+ <item msgid="2760716776980432977">"管理対象"</item>
+ <item msgid="601734478369121764">"スター"</item>
+ <item msgid="6243809315432780521">"カレンダー"</item>
+ <item msgid="4913577903148415331">"時刻"</item>
+ <item msgid="3653377604690057780">"劇場"</item>
+ <item msgid="3843711267408385410">"花"</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 de14686..abaf629 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"補聴器の設定"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ショートカット、補聴器両立性"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"プリセット"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"言語聴覚士によってプログラムされたプリセットはありません"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"プリセットを更新できませんでした"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"音声出力"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"音声出力について"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ウォッチ認証の詳細"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"スマートウォッチを追加"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"スマートウォッチを削除"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"指紋認証と顔認証"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"顔認証と指紋認証"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"仕事用の顔認証と指紋認証"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"セットアップが必要です"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"顔と指紋を登録しました"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"デバイスを再起動しますか?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC 詳細ログは開発専用に設計されています。バグレポートには、追加の NFC データが含まれます。これには、非公開の情報が含まれることがあります。この設定を変更するには、デバイスを再起動してください。"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"再起動"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"キャスト"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ミラー"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ワイヤレス ディスプレイの有効化"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"自動調整"</string>
<string name="brightness" msgid="6216871641021779698">"明るさのレベル"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"明るさの自動調節"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"明るさの自動調節について"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"環境やアクティビティに応じて画面の明るさが自動的に調整されます。スライダーを手動で動かして、明るさの自動調節機能に設定を学習させることもできます。"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ON"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"OFF"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"無視して続行"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"キャンセル"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"画面の拡大設定"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"指 1 本でのパン操作"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"1 本の指で拡大鏡を移動"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"1 本の指でドラッグして画面上を移動"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"1 本の指でドラッグして拡大領域を移動します。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"2 本の指でドラッグして拡大領域を移動します。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"画面の一部のみを拡大している間は利用できません"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ボタンをタップしてズームします"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"画面をすばやくズームインして、コンテンツを拡大できます"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ズームインするには:</b><br/> {0,number,integer}. ショートカットを使って拡大を開始します<br/> {1,number,integer}. 画面をタップします<br/> {2,number,integer}. 2 本の指でドラッグして画面上を移動します<br/> {3,number,integer}. 2 本の指でピンチ操作してズームを調整します<br/> {4,number,integer}. ショートカットを使って拡大を停止します<br/><br/> <b>一時的にズームインするには:</b><br/> {0,number,integer}. 拡大の種類が全画面に設定されていることを確認します<br/> {1,number,integer}. ショートカットを使って拡大を開始します<br/> {2,number,integer}. 画面を長押しします<br/> {3,number,integer}. 指をドラッグして画面上を移動します<br/> {4,number,integer}. 指を離して拡大を停止します"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>ズームインするには:</b><br/> {0,number,integer}. ショートカットを使って拡大を開始します<br/> {1,number,integer}. 画面をタップします<br/> {2,number,integer}. 2 本の指でドラッグして画面上を移動します<br/> {3,number,integer}. 2 本の指でピンチ操作してズームを調整します<br/> {4,number,integer}. ショートカットを使って拡大を停止します<br/><br/> 一時的にズームインするなどの操作もできます。"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>ズームインするには:</b><br/> {0,number,integer}. ショートカットを使って拡大を開始します<br/> {1,number,integer}. 画面をタップします<br/> {2,number,integer}. 1 本または 2 本の指でドラッグして画面上を移動します<br/> {3,number,integer}. 2 本の指でピンチ操作してズームを調整します<br/> {4,number,integer}. ショートカットを使って拡大を停止します<br/><br/> 一時的にズームインするなどの操作もできます。"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"[拡大] を ON にすると、画面で拡大操作を行えます。\n\n"<b>"ズーム"</b>"するには、[拡大] を ON にして画面をタップします。\n"<ul><li>"2 本以上の指をドラッグしてスクロール"</li>\n<li>"2 本以上の指でピンチ操作して拡大率を調節"</li></ul>\n\n<b>"一時的にズーム"</b>"するには、[拡大] を ON にして画面を長押しします。\n"<ul><li>"ドラッグで画面上を移動"</li>\n<li>"指を放してズームアウト"</li></ul>\n\n"キーボードやナビゲーション バーでは拡大操作は行えません。"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<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">"ユーザー補助機能ボタンのショートカット"</string>
@@ -2706,7 +2745,7 @@
<string name="cellular_security_settings_title" msgid="7779141923670352595">"モバイル ネットワーク セキュリティ"</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">"デバイスが暗号化されていないネットワークに接続された場合や、ネットワークで一意のデバイス ID や SIM ID が記録された場合に、お知らせします"</string>
+ <string name="cellular_security_notifications_controller_summary" msgid="8339863845393759958">"デバイスが暗号化されていないネットワークに接続された場合や、一意のデバイス ID や SIM ID がネットワークで記録された場合に、お知らせします"</string>
<string name="cellular_security_settings_encryption_title" msgid="4013084091666375780">"暗号化"</string>
<string name="cellular_security_network_generations_title" msgid="2343026988833783854">"ネットワークの世代"</string>
<string name="cellular_security_network_generations_summary" msgid="139087814553929402">"挿入した SIM カードごとに、3G、4G、5G 対応のネットワークにのみ接続するように設定できます。旧式の安全でない 2G ネットワークには接続できなくなります。この設定により、2G ネットワークしか利用できない場合に接続が制限されることがあります。緊急の場合は 2G が使用されることがあります。"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"優先モード"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"大切な人やアプリからの通知のみ受け取ります"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"有効化の種類を選択する"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"時刻"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"例: 「9 時 30 分~午後 5 時」"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"カレンダー"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"例: 「個人用のカレンダー」"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"割り込みを制限する"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"サイレント モードを ON にする"</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>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"カレンダーの追加"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"カレンダーを使用する"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"スケジュール"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"スケジュールを設定してください"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"スケジュール"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"一時的にスマートフォンを消音"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"音が出る割り込みの許可"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"視覚的な通知のブロック"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"視覚的な割り込みを許可"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"確認できる通知"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"集中しましょう"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"その他の操作"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"表示の設定"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"表示オプション"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ダークモードを有効にする"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"暗い背景に明るいテキストを表示するよう OS やアプリを切り替えると、見やすくなることがあり、デバイスによってはバッテリーの大幅な節約につながります"</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="mode_notification_filter_title" msgid="443728483176031977">"割り込みをフィルタする"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"フィルタしている割り込みはありません"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"フィルタした通知の表示オプション"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"サイレント モードが ON のとき"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"通知音なし"</string>
@@ -3617,8 +3674,7 @@
<skip />
<!-- no translation found for notification_polite_main_control_title (7267191551379543859) -->
<skip />
- <!-- no translation found for notification_polite_description (7749280535620291610) -->
- <skip />
+ <string name="notification_polite_description" msgid="7749280535620291610">"短時間に多くの通知が届いた場合に、通知と音の頻度を最小限に抑えます。通話、アラーム、優先度の高い会話については、通常どおり通知が届きます。受け取った通知はすべて、画面を上から下にスワイプして簡単に確認できます。"</string>
<string name="notification_polite_work" msgid="8823596456640216391">"仕事用プロファイルに適用する"</string>
<string name="notification_polite_work_summary" msgid="5014189280132951378">"仕事用プロファイルのアプリに適用する"</string>
<string name="vr_listeners_title" msgid="4960357292472540964">"VR ヘルパー サービス"</string>
@@ -3665,6 +3721,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"使用していないカテゴリを表示"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"使用していないカテゴリを非表示"</string>
@@ -3774,6 +3831,8 @@
<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_all_apps" msgid="705700582778445484">"すべて"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3869,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time}まで1時間、アラームのみに変更します}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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"名前を変更"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"アイコンを変更"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"アイコンの変更"</string>
<string name="warning_button_text" msgid="1274234338874005639">"警告"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"閉じる"</string>
<string name="device_feedback" msgid="5351614458411688608">"このデバイスについてフィードバックを送信"</string>
@@ -4870,14 +4926,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 KB デベロッパー オプションを使用するには、このデバイスのデータ パーティションを ext4 に変換する必要があります。ソフトウェアの完全性はこのモードでは保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。16 KB オプションを有効にするには、この操作の後でもう 1 回再起動が必要です。このモードになったら、4 KB モードと 16 KB モードの間で切り替えることができます(切り替えのたびに 1 回再起動します)。これらのモードで無効になる機能があるため、一部のアプリが動作しないことがあります。デバイスを本番環境モードに戻すには、4 KB モードに戻してからブートローダーをロックする必要があります。この操作でデバイスは出荷時の設定にリセットされます。デバイスが Android で起動したら、開発者向けオプションで [OEM のロック解除] を無効にします。デバイスがワイプされて、確認後にファイルシステムが ext4 に変更されます。完了したら、戻って 16 KB を再度有効にしてください。"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"すべてのデータを消去"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"データ パーティションを ext4 に再フォーマットしてワイプすることができませんでした。"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB モードを使用するにはブートローダーのロック解除が必要です"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"このデバイスで 16KB デベロッパー オプションを使用するには、ブートローダーのロックを解除しておく必要があります。ソフトウェアの完全性はこのモードでは保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。16KB モードの有効化中にユーザーデータと設定はすべてワイプされます。ブートローダーのロックが解除されたら、16KB オプションを有効にするために再起動が 2 回必要です。このモードになったら、4KB モードと 16KB モードの間で切り替えることができます(切り替えのたびに 1 回再起動します)。これらのモードで無効になる機能があるため、一部のアプリが動作しないことがあります。デバイスを本番環境モードに戻すには、4KB モードに戻してから、OEM / ブートローダーをロックする必要があります。この操作で、デバイスは出荷時の設定にリセットされます。ブートローダーのロックを解除してから、もう一度お試しください。この手順については、<a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> をご覧ください。"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 KB のページ非依存モードを使用中"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"4KB のページ非依存モードです。ソフトウェアの完全性はこのモードでは保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。これらのモードで無効になる機能があるため、一部のアプリが動作しないことがあります。再び本番環境モードにするには、デバイスのブートローダーをロックする必要があります。タップすると詳細が表示されます。"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"4 KB のページ非依存モードです。ソフトウェアの完全性はこのモードでは保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。これらのモードで無効になる機能があるため、一部のアプリが動作しないことがあります。再び本番環境モードにするには、デバイスのブートローダーをロックする必要があります。この操作で、デバイスは再び出荷時の設定にリセットされ、製品版の設定に復元されます。デバイスが Android で起動したら、開発者向けオプションで [OEM のロック解除] を無効にします。デバイスが Android で起動しなかった場合や不安定な場合は、<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> の最新のファクトリー イメージでデバイスの再書き込みを行うか、<a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> を使用し、[Wipe Device]、[Lock Bootloader]、[Force Flash all partitions] を選択してください。"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 KB のページ非依存モードを使用中"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"16 KB のページ非依存モードです。ソフトウェアの完全性はこのモードでは保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。これらのモードで無効になる機能があるため、一部のアプリが動作しないことがあります。再び本番環境モードにするには、4 KB モードに戻してからデバイスのブートローダーをロックする必要があります。タップすると詳細が表示されます。"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"16KB のページ非依存モードです。ソフトウェアの完全性はこのモードでは保証されないため、ブートローダーのロック解除中にスマートフォンに保存されているデータが失われる恐れがあります。これらのモードで無効になる機能があるため、一部のアプリが動作しないことがあります。再び本番環境モードにするには、4KB モードに戻してから、デバイスのブートローダーをロックする必要があります。この操作で、デバイスは再び出荷時の設定にリセットされ、製品版の設定に復元されます。デバイスが Android で起動したら、開発者向けオプションで [OEM のロック解除] を無効にします。デバイスが Android で起動しなかった場合や不安定な場合は、<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> の最新のファクトリー イメージでデバイスの再書き込みを行うか、<a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> を使用し、[Wipe Device]、[Lock Bootloader]、[Force Flash all partitions] を選択してください。"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB のページ非依存モード"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"詳細"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"バグレポート ハンドラ"</string>
@@ -5009,7 +5068,8 @@
<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="6686858308083037810">"複数のユーザーを許可する"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5413,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ka/arrays.xml b/res/values-ka/arrays.xml
index e70a3e3..a7e6438 100644
--- a/res/values-ka/arrays.xml
+++ b/res/values-ka/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ძილის დრო"</item>
+ <item msgid="4152450357280759894">"ავტომობილის მართვა"</item>
+ <item msgid="7096549258219399423">"იმერსიული"</item>
+ <item msgid="2760716776980432977">"მართული"</item>
+ <item msgid="601734478369121764">"ვარსკვლავი"</item>
+ <item msgid="6243809315432780521">"კალენდარი"</item>
+ <item msgid="4913577903148415331">"დრო"</item>
+ <item msgid="3653377604690057780">"თეატრი"</item>
+ <item msgid="3843711267408385410">"ყვავილი"</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 b378c8d..d8b8db6 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"სმენის აპარატის პარამეტრები"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"მალსახმობი, სმენის აპარატებთან თავსებადობა"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"წინასწარ დაყენებული"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"აუდიოლოგისტს არ დაუპროგრამებია წინასწარ დაყენებული პარამეტრ."</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"წინასწარ დაყენებულის განახლება ვერ მოხერხდა"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"გამომავალი აუდიო"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"აუდიოს გამოსატანის შესახებ"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"შეიტყვეთ მეტი საათის განბლოკვის შესახებ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"საათის დამატება"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"საათის ამოშლა"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"თითის ანაბეჭდით და სახით განბლოკვა"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"სახით და ანაბეჭდით განბლოკვა"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"სახით და თითის ანაბეჭდით განბლოკვა სამსახურისთვის"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"საჭიროა დაყენება"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"სახე და თითის ანაბეჭდები დამატებულია"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"გსურთ მოწყობილობის გადატვირთვა?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"დეტალური NFC აღრიცხვა გათვალისწინებულია მხოლოდ დეველოპერული მიზნებისთვის. დამატებითი NFC მონაცემები მოყვანილია სისტემის ხარვეზის ანგარიშებში, რომლებიც შეიძლება მოიცავდეს პირად ინფორმაციას. გადატვირთეთ თქვენი მოწყობილობა ამ პარამეტრის შესაცვლელად."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"გადატვირთვა"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ტრანსლირება"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"გამოსახულების ასლი"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"უსადენო ეკრანის ჩართვა"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ადაპტაციური"</string>
<string name="brightness" msgid="6216871641021779698">"სიკაშკაშის დონე"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"მორგებადი სიკაშკაშე"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"მორგებადი სიკაშკაშის შესახებ"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"თქვენი ეკრანის სიკაშკაშე ავტომატურად დარეგულირდება თქვენი გარემოსა და აქტივობების გათვალისწინებით. ამ სლაიდერის ამოძრავებას ხელითაც შეძლებთ, რითაც დაეხმარებით მორგებადი სიკაშკაშის პარამეტრს, შეიტყოს, თუ რას ანიჭებთ უპირატესობას."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ჩართული"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"გამორთული"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"მაინც გაგრძელება"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"გაუქმება"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"გადიდების პარამეტრები"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ერთი თითით პანირება"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"გადაადგილეთ გამადიდებელი 1 თითით"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"ეკრანზე გადასაადგილებლად ჩაავლეთ 1 თითით"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"გაამოძრავეთ გადიდების ზონა ერთი თითის ჩავლებით."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"გაამოძრავეთ გადიდების ზონა ორი თითის ჩავლებით."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"მიუწვდომელია ეკრანის მხოლოდ ნაწილის გადიდებისას"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"მასშტაბირება ღილაკზე შეხებით"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"კონტენტის გასადიდებლად სწრაფად გაადიდეთ მასშტაბი ეკრანზე"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>მასშტაბის გასადიდებლად:</b><br/> {0,number,integer}. გადიდების დასაწყებად გამოიყენეთ მალსახმობი<br/> {1,number,integer}. შეეხეთ ეკრანს<br/> {2,number,integer}. ჩაავლეთ 2 თითი ეკრანზე გადასაადგილებლად<br/> {3,number,integer}. მასშტაბის კორექტირებისთვის გამოიყენეთ თითებით მასშტაბირება 2 თითით<br/> {4,number,integer}. გადიდების შესაწყვეტად გამოიყენეთ მალსახმობი<br/><br/><b>მასშტაბის დროებით გასადიდებლად:</b><br/> {0,number,integer}. გადიდების მასშტაბი სრულ ეკრანზე უნდა იყოს დაყენებული<br/> {1,number,integer}. გადიდების დასაწყებად გამოიყენეთ მალსახმობი<br/> {2,number,integer}. ხანგრძლივად შეეხეთ ეკრანს ნებისმიერ ადგილას<br/> {3,number,integer}. ჩაავლეთ თითი ეკრანზე გადასაადგილებლად<br/> {4,number,integer}. გადიდების შესაწყვეტად მოაშორეთ თითი"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>მასშტაბის გასადიდებლად:</b><br/> {0,number,integer}. გადიდების დასაწყებად გამოიყენეთ მალსახმობი<br/> {1,number,integer}. შეეხეთ ეკრანს<br/> {2,number,integer}. ეკრანზე გადასაადგილებლად ჩაავლეთ 2 თითით<br/> {3,number,integer}. მასშტაბის კორექტირებისთვის გამოიყენეთ თითებით მასშტაბირება 2 თითით<br/> {4,number,integer}. გადიდების შეწყვეტისთვის გამოიყენეთ მალსახმობი<br/><br/> თქვენ ასევე შეგიძლიათ დროებით გაადიდოთ მასშტაბი და შეასრულოთ სხვა მოქმედებები."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>მასშტაბის გასადიდებლად:</b><br/> {0,number,integer}. გადიდების დასაწყებად გამოიყენეთ მალსახმობი<br/> {1,number,integer}. შეეხეთ ეკრანს<br/> {2,number,integer}. ეკრანზე გადასაადგილებლად ჩაავლეთ 1 ან 2 თითით<br/> {3,number,integer}. მასშტაბის კორექტირებისთვის გამოიყენეთ თითებით მასშტაბირება 2 თითით<br/> {4,number,integer}. გადიდების შეწყვეტისთვის გამოიყენეთ მალსახმობი<br/><br/> თქვენ ასევე შეგიძლიათ დროებით გაადიდოთ მასშტაბი და შეასრულოთ სხვა მოქმედებები."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"როდესაც გადიდება ჩართულია, შეგიძლიათ გაადიდოთ მასშტაბი თქვენს ეკრანზე.\n\n"<b>"მასშტაბირებისთვის"</b>", დაიწყეთ გადიდება, შემდეგ შეეხეთ ეკრანის ნებისმიერ ადგილს.\n"<ul><li>"გადასაადგილებლად გადაატარეთ ეკრანს 2 ან მეტი თითი"</li>\n<li>"მასშტაბის დასარეგულირებლად ეკრანზე შეაერთეთ 2 ან მეტი თითი"</li></ul>\n\n<b>"მასშტაბის დროებით გასადიდებლად"</b>", დაიწყეთ გადიდება, შემდეგ ხანგრძლივად შეეხეთ ეკრანის ნებისმიერ ნაწილს.\n"<ul><li>"გადაატარეთ თითი ეკრანს მისი სხვადასხვა ნაწილის დასათვალიერებლად"</li>\n<li>"მასშტაბის შესამცირებლად ასწიეთ თითი"</li></ul>\n\n"კლავიატურისა და ნავიგაციის ზოლის მასშტაბის გაზრდა ვერ მოხერხდება."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"გვერდი <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">"მარტივი წვდომის ღილაკის მალსახმობი"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"პრიორიტეტული რეჟიმები"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"შეტყობინებების მიღება მხოლოდ მნიშვნელოვანი ხალხისგან და აპებიდან"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"აქტივაციის ტიპის არჩევა"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"დრო"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"მაგ. „09:30 — 17:00“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"კალენდარი"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"მაგ. „პირადი კალენდარი“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"წყვეტების შეზღუდვა"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"განრიგების წაშლა"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"წაშლა"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"კალენდრის დამატება"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"თქვენი კალენდრის გამოყენება"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"განრიგი"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"განრიგის დაყენება"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"განრიგი"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ტელეფონის დადუმება გარკვეულ მომენტებში"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ხმის გამომცემი წყვეტების დაშვება"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ვიზუალური სიგნალების დაბლოკვა"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ვიზუალური სიგნალების დაშვება"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"შეტყობინებები, რომლებსაც თქვენთან დაკავშირება შეუძლიათ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ფოკუსის შენარჩუნება"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"დამატებითი მოქმედებები"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ეკრანის პარამეტრები"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ეკრანის ვარიანტები"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"მუქი თემის ჩართვა"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"შეცვალეთ ოპერაციული სისტემა და აპები და უპირატესობა მიანიჭეთ ნათელ ტექსტს მუქ ფონზე, რაც თვალისთვის უფრო ადვილი აღსაქმელია და მნიშვნელოვნად ზოგავს ბატარეას ზოგიერთ მოწყობილობაზე"</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="mode_notification_filter_title" msgid="443728483176031977">"შეფერხებების გაფილტვრა"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"შეფერხებები არ გაფილტრულა"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"გამოუყენებელი კატეგორიების ჩვენება"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"გამოუყენებელი კატეგორიების დამალვა"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"ყველა"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"გადარქმევა"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ხატულის შეცვლა"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ხატულის შეცვლა"</string>
<string name="warning_button_text" msgid="1274234338874005639">"შენიშვნა"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"დახურვა"</string>
<string name="device_feedback" msgid="5351614458411688608">"გამოხმაურება ამ მოწყობილობის შესახებ"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"დეველოპერთა 16-კბაიტიანი პარამეტრების გამოყენებამდე ამ მოწყობილობის მონაცემთა დანაყოფი უნდა დაკონვერტირდეს ext4-ზე. აღნიშნულ რეჟიმში პროგრამული უზრუნველყოფის მთლიანობა ვერ იქნება გარანტირებული და სანამ ჩამტვირთავი განბლოკილია, ტელეფონში შენახული ნებისმიერი მონაცემი შეიძლება რისკის ქვეშ იყოს. 16-კბაიტიანი ვარიანტის გააქტიურება მოითხოვს კიდევ ერთ გადატვირთვას. ამ რეჟიმში შესვლის შემდეგ, 4-კბაიტიან და 16-კბაიტიან რეჟიმებს შორის შეგიძლიათ ერთი გადატვირთვით გადაერთოთ. ამ რეჟიმებში ზოგი ფუნქცია გაითიშება, რის გამოც გარკვეულმა აპლიკაციებმა შეიძლება არ იმუშაოს. მოწყობილობის წარმოების რეჟიმზე დასაბრუნებლად, უკან უნდა გადმოერთოთ 4-კბაიტიან რეჟიმზე და შემდეგ ჩაკეტოთ ჩამტვირთავი, რაც მოწყობილობას ქარხნულ პარამეტრებზე დააბრუნებს. მოწყობილობის Android-ში წარმატებით ჩატვირთვის შემდეგ, დეველოპერთა პარამეტრებში გათიშეთ OEM-ის მხრიდან განბლოკვა. თანხმობის შემდეგ, ეს მოწყობილობა ამოიშლება და ფაილის სისტემა შეიცვლება ext4-ზე. მას შემდეგ რაც ეს დასრულდება, გთხოვთ დაბრუნდეთ რათა თავიდან ჩართოთ 16-კბაიტიანი რეჟიმი."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ყველა მონაცემის ამოშლა"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ფორმატის შეცვლა და მონაცემთა დანაყოფის ext4-მდე ამოშლა ვერ მოხერხდა."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16-კბაიტიანი რეჟიმისათვის აუცილებელია ჩამტვირთავის განბლოკვა."</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"დეველოპერთა 16-კბაიტიანი პარამეტრების გამოყენებამდე ამ მოწყობილობის ჩამტვირთავი განბლოკილი უნდა იყოს. აღნიშნულ რეჟიმში პროგრამული უზრუნველყოფის მთლიანობა ვერ იქნება გარანტირებული და სანამ ჩამტვირთავი განბლოკილია, ტელეფონში შენახული ნებისმიერი მონაცემი შეიძლება რისკის ქვეშ იყოს. 16-კბაიტიანი რეჟიმის აქტივაციის შემდეგ, ყველა მომხმარებლის მონაცემები და პარამეტრები ამოიშლება. 16-კბაიტიან ვარიანტს ესაჭიროება ორჯერ გადატვირთვა ჩამტვირთავის განბლოკვის შემდეგ. ამ რეჟიმში შესვლის შემდეგ, 4-კბაიტიან და 16-კბაიტიან რეჟიმებს შორის შეგიძლიათ ერთი გადატვირთვით გადაერთოთ. ამ რეჟიმებში ზოგი ფუნქცია გაითიშება, რის გამოც გარკვეულმა აპლიკაციებმა შეიძლება არ იმუშაოს. მოწყობილობის წარმოების რეჟიმში დასაბრუნებლად, უკან უნდა გადმოერთოთ 4-კბაიტიან რეჟიმზე და შემდეგ ჩაკეტოთ OEM/ჩამტვირთავი (რაც მოწყობილობას ქარხნულ პარამეტრებზე დააბრუნებს). გთხოვთ, განბლოკოთ ჩამტვირთავი და ხელახლა ცადოთ. მოცემულ ბმულზე შეგიძლიათ იხილოთ ამ პროცესის ინსტრუქცია: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"იყენებთ 4-კბაიტიან გვერდ-აგნოსტიკურ რეჟიმს"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"თქვენ იმყოფებით გვერდ-აგნოსტიკური რეჟიმის 4-კბაიტიან რეჟიმში. აღნიშნულ რეჟიმში პროგრამული უზრუნველყოფის მთლიანობა ვერ იქნება გარანტირებული და სანამ ჩამტვირთავი განბლოკილია, ტელეფონში შენახული ნებისმიერი მონაცემი შეიძლება რისკის ქვეშ იყოს. ამ რეჟიმებში ზოგი ფუნქცია გაითიშება, რის გამოც გარკვეულმა აპლიკაციებმა შეიძლება არ იმუშაოს. მოწყობილობის წარმოების რეჟიმში თავიდან შესასვლელად უნდა ჩაკეტოთ მოწყობილობის ჩამტვირთავი. მეტის წასაკითხად შეეხეთ."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"თქვენ იმყოფებით გვერდ-აგნოსტიკური რეჟიმის 4-კბაიტიან რეჟიმში. აღნიშნულ რეჟიმში პროგრამული უზრუნველყოფის მთლიანობა ვერ იქნება გარანტირებული და სანამ ჩამტვირთავი განბლოკილია, ტელეფონში შენახული ნებისმიერი მონაცემი შეიძლება რისკის ქვეშ იყოს. ამ რეჟიმებში ზოგი ფუნქცია გაითიშება, რის გამოც გარკვეულმა აპლიკაციებმა შეიძლება არ იმუშაოს. მოწყობილობის წარმოების რეჟიმში თავიდან შესასვლელად უნდა ჩაკეტოთ მოწყობილობის ჩამტვირთავი. ეს მოწყობილობას კვლავ ქარხნულ პარამეტრებზე დააბრუნებს და შესაბამისად, აღადგენს მისი წარმოების პარამეტრებს. მოწყობილობის Android-ში წარმატებით ჩატვირთვის შემდეგ, დეველოპერთა პარამეტრებში გათიშეთ OEM-ის მხრიდან განბლოკვა. თუ მოწყობილობა ვერ იტვირთება Android-ში ან არასტაბილურია, განაახლეთ ჩაშენებული პროგრამული უზრუნველყოფა უახლესი ქარხნული იმიჯებით შემდეგი ბმულიდან: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> და აირჩიეთ „მოწყობილობის წაშლა“, „ჩამტვირთავის ჩაკეტვა“ და „ყველა დანაყოფზე იძულებითი ჩატვირთვა“."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"იყენებთ 16-კბაიტიან გვერდ-აგნოსტიკურ რეჟიმს"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"თქვენ იმყოფებით გვერდ-აგნოსტიკური რეჟიმის 16-კბაიტიან რეჟიმში. აღნიშნულ რეჟიმში პროგრამული უზრუნველყოფის მთლიანობა ვერ იქნება გარანტირებული და სანამ ჩამტვირთავი განბლოკილია, ტელეფონში შენახული ნებისმიერი მონაცემი შეიძლება რისკის ქვეშ იყოს. ამ რეჟიმებში ზოგი ფუნქცია გაითიშება, რის გამოც გარკვეულმა აპლიკაციებმა შეიძლება არ იმუშაოს. მოწყობილობის წარმოების რეჟიმში ხელახლა შესასვლელად უნდა გადაერთოთ 4-კბაიტიან რეჟიმზე და შემდეგ ჩაკეტოთ მოწყობილობის ჩამტვირთავი. მეტის წასაკითხად შეეხეთ."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"თქვენ იმყოფებით გვერდ-აგნოსტიკური რეჟიმის 16-კბაიტიან რეჟიმში. აღნიშნულ რეჟიმში პროგრამული უზრუნველყოფის მთლიანობა ვერ იქნება გარანტირებული და სანამ ჩამტვირთავი განბლოკილია, ტელეფონში შენახული ნებისმიერი მონაცემი შეიძლება რისკის ქვეშ იყოს. ამ რეჟიმებში ზოგი ფუნქცია გაითიშება, რის გამოც გარკვეულმა აპლიკაციებმა შეიძლება არ იმუშაოს. მოწყობილობის წარმოების რეჟიმში ხელახლა შესასვლელად უნდა გადაერთოთ 4-კბაიტიან რეჟიმზე და შემდეგ ჩაკეტოთ მოწყობილობის ჩამტვირთავი. ეს მოწყობილობას კვლავ ქარხნულ პარამეტრებზე დააბრუნებს და შესაბამისად, აღადგენს მისი წარმოების პარამეტრებს. მოწყობილობის Android-ში წარმატებით ჩატვირთვის შემდეგ, დეველოპერთა პარამეტრებში გათიშეთ OEM-ის მხრიდან განბლოკვა. თუ მოწყობილობა ვერ იტვირთება Android-ში ან არასტაბილურია, განაახლეთ ჩაშენებული პროგრამული უზრუნველყოფა უახლესი ქარხნული იმიჯებით შემდეგი ბმულიდან: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> და აირჩიეთ „მოწყობილობის წაშლა“, „ჩამტვირთავის ჩაკეტვა“ და „ყველა დანაყოფზე იძულებითი ჩატვირთვა“."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16-კბაიტიანი გვერდ-აგნოსტიკური რეჟიმი"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ვრცლად"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"სისტემის ხარვეზის ანგარიშის დამმუშავებელი"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"მრავალი მომხმარებლის დაშვება"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-kk/arrays.xml b/res/values-kk/arrays.xml
index ba44902..9e12fa2 100644
--- a/res/values-kk/arrays.xml
+++ b/res/values-kk/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Ұйқы режимі"</item>
+ <item msgid="4152450357280759894">"Көлік жүргізу"</item>
+ <item msgid="7096549258219399423">"Әсерлі"</item>
+ <item msgid="2760716776980432977">"Басқару"</item>
+ <item msgid="601734478369121764">"Жұлдыз"</item>
+ <item msgid="6243809315432780521">"Күнтізбе"</item>
+ <item msgid="4913577903148415331">"Уақыт"</item>
+ <item msgid="3653377604690057780">"Театр"</item>
+ <item msgid="3843711267408385410">"Гүл"</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 408368c..c492750 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Есту құрылғысының параметрлері"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Жылдам пәрмен, есту аппаратының үйлесімділігі"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Параметрлер жинағы"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Аудиолог бағдарламалаған параметрлер жинағы жоқ."</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Параметрлер жинағы жаңартылмады."</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудио шығысы"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Аудио шығысы туралы"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Құлыпты сағат арқылы ашу туралы толық ақпарат"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Сағатты қосу"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Сағатты өшіру"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Бет және саусақ ізі арқылы құлыпты ашу"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Бет тану, саусақ ізімен ашу"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Жұмысқа арналған бет тану және саусақ ізімен ашу функциялары"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Реттеу қажет."</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Бет және саусақ іздері енгізілді."</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Құрылғыны өшіріп қосасыз ба?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Толық NFC журналы әзірлеу мақсаттарына ғана арналған. Қосымша NFC деректері қате туралы есептерге қосылған, ал онда құпия ақпарат болуы мүмкін. Бұл параметрді өзгерту үшін құрылғыны өшіріп қосыңыз."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Өшіріп қосу"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Трансляция"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"айна"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Сымсыз дисплейді қосу"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Бейімделеді"</string>
<string name="brightness" msgid="6216871641021779698">"Жарықтық деңгейі"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Жарықтықты бейімдеу"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Экран жарықтығы қоршаған ортаға және әрекеттерге автоматты түрде бейімделеді. Жүгірткіні қолмен жылжытуыңызға болады."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Жарықтықты бейімдеу туралы"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Экран жарықтығы қоршаған ортаға және әрекеттерге автоматты түрде бейімделеді. Жүгірткіні қолмен жылжытсаңыз, функция қалауыңызды ескеретін болады."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Қосулы"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Өшірулі"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Дисплейдің ақ түс балансы"</string>
@@ -1227,7 +1257,7 @@
<string name="night_display_start_time_title" msgid="2611541851596977786">"Басталу уақыты"</string>
<string name="night_display_end_time_title" msgid="5243112480391192111">"Аяқталу уақыты"</string>
<string name="night_display_temperature_title" msgid="857248782470764263">"Қанықтығы"</string>
- <string name="night_display_summary_off_auto_mode_never" msgid="7406899634169354142">"Автоматты қосылмайды"</string>
+ <string name="night_display_summary_off_auto_mode_never" msgid="7406899634169354142">"Автоматты түрде қосылмайды"</string>
<string name="night_display_summary_off_auto_mode_custom" msgid="6667008039080687931">"Автоматты қосылады: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="night_display_summary_off_auto_mode_twilight" msgid="3669132200611324994">"Күн батқанда, автоматты түрде қосылады"</string>
<string name="night_display_summary_on_auto_mode_never" msgid="832333009202889350">"Автоматты өшпейді"</string>
@@ -1247,7 +1277,7 @@
<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>
+ <string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"Автоматты түрде қосылмайды"</string>
<string name="dark_ui_summary_off_auto_mode_auto" msgid="6766831395970887213">"Күн батқанда, автоматты түрде қосылады"</string>
<string name="dark_ui_summary_off_auto_mode_custom" msgid="1345906088326708376">"Автоматты түрде қосылады: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="dark_ui_summary_off_auto_mode_custom_bedtime" msgid="7759826673214624622">"Ұйқы режимінде автоматты түрде қосылады."</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Бәрібір жалғастыру"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Бас тарту"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Ұлғайту параметрлері"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Бір саусақпен панорамалау"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Ұлғайту аймағын бір саусақпен сүйреп жылжытыңыз."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Ұлғайту аймағын екі саусақпен сүйреп жылжытыңыз."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Экранның тек бір бөлігін ұлғайту кезінде қолданылмайды."</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Масштабтау үшін түймені түртіңіз"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Экранның масштабын тез өзгертіп, контентті үлғайта аласыз."</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Ұлғайту үшін:</b><br/> {0,number,integer}. Жылдам пәрмен көмегімен ұлғайта бастаңыз.<br/> {1,number,integer}. Экранды түртіңіз.<br/> {2,number,integer}. Экранның басқа жеріне жылжу үшін 2 саусақпен сүйреңіз.<br/> {3,number,integer}. Ыңғайлы масштабты таңдау үшін 2 саусақ арасын ашыңыз немесе қосыңыз.<br/> {4,number,integer}. Жылдам пәрмен көмегімен ұлғайту режимінен шығыңыз.<br/><br/> <b>Уақытша ұлғайту үшін:</b><br/> {0,number,integer}. Ұлғайту түріне \"толық экран\" мәні тағайындалғанына көз жеткізіңіз.<br/> {1,number,integer}. Жылдам пәрмен көмегімен ұлғайта бастаңыз.<br/> {2,number,integer}. Экранның кез келген жерін түртіп ұстап тұрыңыз.<br/> {3,number,integer}. Экранның басқа жеріне жылжу үшін саусақпен сүйреңіз.<br/> {4,number,integer}. Ұлғайту режимінен шығу үшін саусағыңызды көтеріңіз."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Ұлғайту функциясы қосулы тұрғанда, экраныңызды ұлғайта аласыз.\n\n"<b>"Масштабтау үшін"</b>" ұлғайту функциясын іске қосып, экранның кез келген жерін түртіңіз.\n"<ul><li>"Айналдыру үшін екі немесе бірнеше саусақпен сүйреңіз."</li>\n<li>"Масштабтауды реттеу үшін екі немесе бірнеше саусақты жақындатыңыз."</li></ul>\n\n<b>"Уақытша масштабтау үшін"</b>" ұлғайту функциясын іске қосыңыз, содан кейін экранның кез келген жерін басып тұрыңыз.\n"<ul><li>"Жылжыту үшін саусағыңызды экранның бір жерінен екінші жеріне сүйреңіз."</li>\n<li>"Кішірейту үшін саусағыңызды көтеріңіз."</li></ul>\n\n"Пернетақтада және навигация жолағында ұлғайту мүмкін емес."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<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">"Арнайы мүмкіндіктер түймесінің жылдам пәрмені"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Басымдылық режимдері"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Хабарландыруды маңызды адамдардан және қолданбалардан ғана алу"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Іске қосу түрін таңдау"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Уақыты"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"(мысалы, \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Күнтізбе"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"(мысалы, \"Жеке күнтізбе\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Хабарландыруларды шектеу"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Кестелерді жою"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Жою"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Күнтізбе қосыңыз"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Өз күнтізбеңізді пайдаланыңыз"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Жоспарлау"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Кесте құру"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Кесте"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Телефонды үнсіз режимге қою"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Дыбыстарға рұқсат ету"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Көрнекі мазалағыштарды бөгеу"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Визуалды сигналдарды қосу"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Сізге жіберілуі мүмкін хабарландырулар"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Жолға қараңыз!"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Қосымша әрекеттер"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Дисплей параметрлері"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Дисплей опциялары"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"қараңғы режимді қосу"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Ашық түсті мәтін қараңғы фонда көрсетілу үшін операциялық жүйе мен қолданба режимін ауыстырыңыз. Сонда көзге жеңіл болады әрі кейбір құрылғылардың батареясын барынша үнемдейді."</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="mode_notification_filter_title" msgid="443728483176031977">"Кедергілерді іріктеу"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ешқандай кедергі іріктелмейді."</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Пайдаланылмайтын санаттарды көрсету"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Пайдаланылмайтын санаттарды жасыру"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Барлығы"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Атын өзгерту"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Белгішені өзгерту"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Белгішені өзгерту"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Ескерту"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Жабу"</string>
<string name="device_feedback" msgid="5351614458411688608">"Осы құрылғы туралы пікір жіберу"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 КБ әзірлеуші опциясын пайдаланбас бұрын, құрылғының деректер бөлігін ext4 файл жүйесіне түрлендіру керек. Бұл режимде жұмыс істеген кезде, бағдарламалық құрал тұтастығына кепілдік берілмейді және жүктегіш құлпы ашылған кезде, телефоныңызда сақталған деректерге қауіп төнуі мүмкін. 16 КБ опциясын қосқаннан кейін, құрылғыны тағы бір рет өшіріп қосу керек. Осы режимге өткеннен кейін, 4 КБ және 16 КБ режимдері арасында бір рет өшіріп қосу арқылы ауыса аласыз. Осы режимдерде кейбір функциялар өшірілетіндіктен, кейбір қолданбалар жұмыс істемеуі мүмкін. Құрылғыны жұмыс күйіне қайтару үшін 4 КБ режиміне қайта ауысып, құрылғыны зауыттық параметрлерге қайтаратын жүктегішті құлыптау керек. Құрылғы Android жүйесіне жүктелген кезде, Әзірлеуші опцияларынан жүктегіш құлпын ашу параметрін өшіріңіз. Растағаннан кейін, құрылғы тазартылып, файл жүйесі ext4 түріне өзгертіледі. Болған соң, қайта оралып, 16 КБ режимін қайта қосыңыз."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Барлық деректі өшіру"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Құрылғыны қайта форматтау және деректер бөлімін ext4 жүйесіне тазарту мүмкін болмады."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 КБ режимі үшін жүктегіш құлпын ашу керек"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 КБ әзірлеуші опциясын пайдаланбас бұрын, құрылғыдағы жүктегіш құлпын ашу керек. Бұл режимде жұмыс істеген кезде, бағдарламалық құрал тұтастығына кепілдік берілмейді және жүктегіш құлпы ашылған кезде, телефоныңызда сақталған деректерге қауіп төнуі мүмкін. Пайдаланушының барлық дерегі мен параметрі 16 КБ режимі қосылған кезде тазартылады. Жүктегіш құлпын ашқан соң, 16 КБ опциясын қосу үшін құрылғыны екі рет өшіріп қосу керек. Осы режимге өткеннен кейін, 4 КБ және 16 КБ режимдері арасында бір рет өшіріп қосу арқылы ауыса аласыз. Осы режимдерде кейбір функциялар өшірілетіндіктен, кейбір қолданбалар жұмыс істемеуі мүмкін. Құрылғыны жұмыс күйіне қайтару үшін 4 КБ режиміне қайта ауысып, (құрылғыны зауыттық параметрлерге қайтаратын) жүктегішті құлыптау керек. Жүктегіш құлпын ашып, қайталап көріңіз. Осыған қатысты нұсқауларды мына сілтеме арқылы көре аласыз: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Бетке тәуелсіз 4 КБ режимін пайдалану"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Бетке тәуелсіз режимдегі 4 КБ режимінде жұмыс істеп отырсыз. Бұл режимде жұмыс істеген кезде, бағдарламалық құрал тұтастығына кепілдік берілмейді және жүктегіш құлпы ашылған кезде, телефоныңызда сақталған деректерге қауіп төнуі мүмкін. Осы режимдерде кейбір функциялар өшірілетіндіктен, кейбір қолданбалар жұмыс істемеуі мүмкін. Жұмыс режиміне қайта оралу үшін құрылғының жүктегішін құлыптау керек. Қосымша ақпарат алу үшін түртіңіз."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Бетке тәуелсіз режимдегі 4 КБ режимінде жұмыс істеп отырсыз. Бұл режимде жұмыс істеген кезде, бағдарламалық құрал тұтастығына кепілдік берілмейді және жүктегіш құлпы ашылған кезде, телефоныңызда сақталған деректерге қауіп төнуі мүмкін. Осы режимдерде кейбір функциялар өшірілетіндіктен, кейбір қолданбалар жұмыс істемеуі мүмкін. Жұмыс режиміне қайта оралу үшін құрылғының жүктегішін құлыптау керек. Мұндайда құрылғы қайтадан зауыттық параметрлерге қайтарылып, жұмыс параметрлері қалпына келтіріледі. Құрылғы Android жүйесіне жүктелген кезде, Әзірлеуші опцияларынан жүктегіш құлпын ашу параметрін өшіріңіз. Құрылғыда Android жүйесі жүктелмесе немесе дұрыс жұмыс істемесе, құрылғыны <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> немесе <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> сілтемесіндегі зауыттық образдармен қайта бағдарламалап, \"Құрылғыны тазарту\", \"Жүктегішті құлыптау\" және \"Барлық бөлікті бағдарламау\" опцияларын таңдаңыз."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Бетке тәуелсіз 16 КБ режимін пайдалану"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Бетке тәуелсіз режимдегі 16 КБ режимінде жұмыс істеп отырсыз. Бұл режимде жұмыс істеген кезде, бағдарламалық құрал тұтастығына кепілдік берілмейді және жүктегіш құлпы ашылған кезде, телефоныңызда сақталған деректерге қауіп төнуі мүмкін. Осы режимдерде кейбір функциялар өшірілетіндіктен, кейбір қолданбалар жұмыс істемеуі мүмкін. Жұмыс күйіне қайта оралу үшін 4 К режиміне қайта ауысып, құрылғының жүктегішін құлыптау керек. Қосымша ақпарат алу үшін түртіңіз."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Бетке тәуелсіз режимдегі 16 КБ режимінде жұмыс істеп отырсыз. Бұл режимде жұмыс істеген кезде, бағдарламалық құрал тұтастығына кепілдік берілмейді және жүктегіш құлпы ашылған кезде, телефоныңызда сақталған деректерге қауіп төнуі мүмкін. Осы режимдерде кейбір функциялар өшірілетіндіктен, кейбір қолданбалар жұмыс істемеуі мүмкін. Жұмыс күйіне қайта оралу үшін 4 К режиміне қайта ауысып, құрылғының жүктегішін құлыптау керек. Мұндайда құрылғы қайтадан зауыттық параметрлерге қайтарылып, жұмыс параметрлері қалпына келтіріледі. Құрылғы Android жүйесіне жүктелген кезде, Әзірлеуші опцияларынан жүктегіш құлпын ашу параметрін өшіріңіз. Құрылғыда Android жүйесі жүктелмесе немесе дұрыс жұмыс істемесе, құрылғыны <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> немесе <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> сілтемесіндегі зауыттық образдармен қайта бағдарламалап, \"Құрылғыны тазарту\", \"Жүктегішті құлыптау\" және \"Барлық бөлікті мәжбүрлеп бағдарламалау\" опцияларын таңдаңыз."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Бетке тәуелсіз 16 КБ режимі"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Толық ақпарат"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Қате туралы есеп өңдеу құралы"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Бірнеше пайдаланушыға рұқсат беру"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-km/arrays.xml b/res/values-km/arrays.xml
index 2500cdd..10fdbab 100644
--- a/res/values-km/arrays.xml
+++ b/res/values-km/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ម៉ោងគេង"</item>
+ <item msgid="4152450357280759894">"កំពុងបើកបរ"</item>
+ <item msgid="7096549258219399423">"ជក់ចិត្ត"</item>
+ <item msgid="2760716776980432977">"បានគ្រប់គ្រង"</item>
+ <item msgid="601734478369121764">"ផ្កាយ"</item>
+ <item msgid="6243809315432780521">"ប្រតិទិន"</item>
+ <item msgid="4913577903148415331">"ពេលវេលា"</item>
+ <item msgid="3653377604690057780">"រោងល្ខោន"</item>
+ <item msgid="3843711267408385410">"ផ្កា"</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 c45d27a..53670ee 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ការកំណត់ឧបករណ៍ជំនួយការស្ដាប់"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ផ្លូវកាត់ ភាពត្រូវគ្នាជាមួយនឹងឧបករណ៍ជំនួយការស្ដាប់"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"កំណត់ជាមុន"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"មិនមានការកំណត់ជាមុនដែលរៀបចំដោយអ្នកជំនាញផ្នែកសោតវិញ្ញាណរបស់អ្នកទេ"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"មិនអាចប្ដូរការកំណត់ជាមុនបានទេ"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ឧបករណ៍បញ្ចេញសំឡេង"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"អំពីឧបករណ៍បញ្ចេញសំឡេង"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ស្វែងយល់បន្ថែមអំពីការដោះសោដោយប្រើនាឡិកា"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"បញ្ចូលនាឡិកា"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ដកនាឡិកាចេញ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ការដោះសោដោយស្កេនមុខ និងស្នាមម្រាមដៃ"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ការដោះសោដោយស្កេនមុខ និងស្នាមម្រាមដៃ"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ការដោះសោដោយស្កេនស្នាមម្រាមដៃ និងមុខសម្រាប់ការងារ"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ត្រូវការរៀបចំ"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"បានបញ្ចូលស្នាមម្រាមដៃ និងមុខ"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ចាប់ផ្តើមឧបករណ៍ឡើងវិញឬ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ការកត់ត្រា NFC លម្អិតគឺសម្រាប់តែការអភិវឌ្ឍប៉ុណ្ណោះ។ ទិន្នន័យ NFC បន្ថែមត្រូវបានរួមបញ្ចូលក្នុងរបាយការណ៍អំពីបញ្ហាដែលអាចមានព័ត៌មានឯកជន។ ចាប់ផ្ដើមឧបករណ៍របស់អ្នកឡើងវិញ ដើម្បីប្ដូរការកំណត់នេះ។"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ចាប់ផ្ដើមឡើងវិញ"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ភ្ជាប់"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"កញ្ចក់"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"បើកការបង្ហាញឥតខ្សែ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"បត់បែន"</string>
<string name="brightness" msgid="6216871641021779698">"កម្រិតពន្លឺ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"ពន្លឺមានភាពបត់បែន"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"អំពីពន្លឺមានភាពបត់បែន"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"កម្រិតពន្លឺនៅលើអេក្រង់របស់អ្នកនឹងកែតម្រូវដោយស្វ័យប្រវត្តិឱ្យស្របនឹងបរិយាកាសជុំវិញ និងសកម្មភាពរបស់អ្នក។ អ្នកអាចផ្លាស់ទីរបាររំកិលដោយដៃ ដើម្បីជួយឱ្យកម្រិតពន្លឺដែលមានភាពបត់បែនស្គាល់ចំណង់ចំណូលចិត្តរបស់អ្នក។"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"បើក"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"បិទ"</string>
@@ -1260,7 +1290,7 @@
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"ការកំណត់មុខងារម៉ោងគេង"</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>
+ <string name="screen_timeout" msgid="7709947617767439410">"រយៈពេលទម្រាំអេក្រង់បិទ"</string>
<string name="screen_timeout_summary" msgid="5558778019594643427">"បន្ទាប់ពីអសកម្ម <xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g>"</string>
<string name="screen_timeout_summary_not_set" msgid="5107680774964178875">"មិនបានកំណត់"</string>
<string name="wallpaper_settings_title" msgid="5635129851136006383">"ផ្ទាំងរូបភាព"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"មិនអីទេ បន្តចុះ"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"បោះបង់"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ការកំណត់ការពង្រីក"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ការចាប់អូសដោយម្រាមដៃមួយ"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ផ្លាស់ទីផ្ទៃពង្រីកដោយអូសម្រាមដៃមួយ។"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ផ្លាស់ទីផ្ទៃពង្រីកដោយអូសម្រាមដៃពីរ។"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"មិនអាចប្រើបានទេ ពេលពង្រីកតែផ្នែកនៃអេក្រង់"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ចុចប៊ូតុងដើម្បីពង្រីក ឬបង្រួម"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ពង្រីកនៅលើអេក្រង់យ៉ាងរហ័ស ដើម្បីបង្ហាញខ្លឹមសារធំជាងមុន"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ដើម្បីពង្រីក៖</b><br/> {0,number,integer}. ប្រើផ្លូវកាត់ ដើម្បីចាប់ផ្ដើមការពង្រីក<br/> {1,number,integer}. ចុចអេក្រង់<br/> {2,number,integer}. អូសម្រាមដៃ 2 ដើម្បីផ្លាស់ទីនៅជុំវិញអេក្រង់<br/>{3,number,integer}. ច្បិចដោយប្រើម្រាមដៃ 2 ដើម្បីកែតម្រូវការពង្រីកបង្រួម<br/> {4,number,integer}. ប្រើផ្លូវកាត់ ដើម្បីបញ្ឈប់ការពង្រីក<br/><br/> <b>ដើម្បីពង្រីកជាបណ្ដោះអាសន្ន៖</b><br/> {0,number,integer}. សូមប្រាកដថា ប្រភេទនៃការពង្រីករបស់អ្នកត្រូវបានកំណត់ទៅពេញអេក្រង់<br/> {1,number,integer}. ប្រើផ្លូវកាត់ ដើម្បីចាប់ផ្ដើមការពង្រីក<br/> {2,number,integer}. ចុចកន្លែងណាមួយនៅលើអេក្រង់ឱ្យជាប់<br/> {3,number,integer}. អូសម្រាមដៃ ដើម្បីផ្លាស់ទីនៅជុំវិញអេក្រង់<br/> {4,number,integer}. ដកម្រាមដៃចេញ ដើម្បីបញ្ឈប់ការពង្រីក"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"នៅពេលបើកការពង្រីក អ្នកអាចពង្រីកនៅលើអេក្រង់របស់អ្នកបាន។\n\n"<b>"ដើម្បីពង្រីកបង្រួម"</b>" សូមចាប់ផ្ដើមការពង្រីក រួចចុចលើកន្លែងណាមួយនៅលើអេក្រង់។\n"<ul><li>"អូសដោយប្រើម្រាមដៃ 2 ឬច្រើនដើម្បីរំកិល"</li>\n<li>"ច្បិចដោយប្រើម្រាមដៃ 2 ឬច្រើន ដើម្បីកែតម្រូវការពង្រីកបង្រួម"</li></ul>\n\n<b>"ដើម្បីពង្រីកបង្រួមជាបណ្តោះអាសន្ន"</b>" ចាប់ផ្តើមការពង្រីក បន្ទាប់មកចុចសង្កត់កន្លែងណាមួយនៅលើអេក្រង់ឱ្យជាប់។\n"<ul><li>"អូសដើម្បីផ្លាស់ទីនៅលើអេក្រង់"</li>\n<li>"លើកម្រាមដៃឡើងដើម្បីបង្រួម"</li></ul>\n\n"អ្នកមិនអាចពង្រីកនៅលើក្តារចុច ឬរបាររុករកបានទេ។"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"ទំព័រទី <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">"ផ្លូវកាត់ប៊ូតុងភាពងាយស្រួល"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"ម៉ូដអាទិភាព"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ទទួលការជូនដំណឹងពីកម្មវិធី និងមនុស្សសំខាន់ៗតែប៉ុណ្ណោះ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"ជ្រើសរើសប្រភេទនៃការបើកដំណើរការ"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"ពេលវេលា"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ឧ. \"9:30 – 5:00 ល្ងាច\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ប្រតិទិន"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ឧ. \"ប្រតិទិនផ្ទាល់ខ្លួន\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"កាត់បន្ថយការរំខាន"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"លុបកាលវិភាគ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"លុប"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"បញ្ចូលប្រតិទិន"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ប្រើប្រតិទិនរបស់អ្នក"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"កាលវិភាគ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"កំណត់កាលវិភាគ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"កាលវិភាគ"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"បិទសំឡេងទូរសព្ទក្នុងពេលជាក់លាក់"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"អនុញ្ញាតការរំខានដែលបញ្ចេញសំឡេង"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"រារាំងការរំខានក្នុងការមើល"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"អនុញ្ញាតសញ្ញាដែលមើលឃើញ"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"ការជូនដំណឹងដែលអាចផ្សាយទៅដល់អ្នក"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ផ្ដោតអារម្មណ៍"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"សកម្មភាពបន្ថែម"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ការកំណត់ផ្ទាំងអេក្រង់"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ជម្រើសផ្ទាំងអេក្រង់"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"បើកទម្រង់រចនាងងឹត"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ប្ដូរប្រព័ន្ធប្រតិបត្តិការ និងកម្មវិធីទៅអក្សរពណ៌ស្រាលដែលចង់ប្រើនៅលើផ្ទៃខាងក្រោយងងឹត ដែលអាចមានភាពងាយស្រួលជាងមុនសម្រាប់ភ្នែក និងជួយសន្សំថ្មបានច្រើននៅលើឧបករណ៍មួយចំនួន"</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="mode_notification_filter_title" msgid="443728483176031977">"ត្រងការរំខាន"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"គ្មានការរំខានត្រូវបានត្រងទេ"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"បង្ហាញប្រភេទដែលមិនប្រើ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"លាក់ប្រភេទដែលមិនប្រើ"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"ទាំងអស់"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"ប្ដូរឈ្មោះ"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ប្ដូររូបតំណាង"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ប្ដូររូបតំណាង"</string>
<string name="warning_button_text" msgid="1274234338874005639">"ការព្រមាន"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"បិទ"</string>
<string name="device_feedback" msgid="5351614458411688608">"ផ្ដល់មតិកែលម្អអំពីឧបករណ៍នេះ"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"ផ្នែកទិន្នន័យរបស់ឧបករណ៍នេះត្រូវបំប្លែងទៅជា ext4 មុនពេលប្រើជម្រើសសម្រាប់អ្នកអភិវឌ្ឍន៍ 16KB។ មិនអាចធានាសុក្រឹតភាពកម្មវិធីនៅក្នុងមុខងារនេះទេ ហើយទិន្នន័យទាំងឡាយដែលបានរក្សាទុកនៅលើទូរសព្ទ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ អាចប្រឈមនឹងហានិភ័យ។ ការបើកដំណើរការជម្រើស 16KB នឹងតម្រូវឱ្យមានការចាប់ផ្ដើមឡើងវិញម្ដងទៀតបន្ទាប់ពីនេះ។ នៅពេលដែលអ្នកកំពុងប្រើមុខងារនេះ អ្នកអាចប្ដូរទៅមករវាងមុខងារ 4KB និង 16KB តាមរយៈការចាប់ផ្ដើមឡើងវិញតែម្ដងគត់។ មុខងារមួយចំនួននឹងត្រូវបានបិទនៅក្នុងមុខងារទាំងនេះ ដូច្នេះកម្មវិធីមួយចំនួនប្រហែលជាមិនដំណើរការទេ។ ដើម្បីត្រឡប់ឧបករណ៍ទៅមុខងារផលិតកម្ម អ្នកនឹងត្រូវប្ដូរត្រឡប់ទៅមុខងារ 4KB វិញ បន្ទាប់មកចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធ ដែលកំណត់ឧបករណ៍ដូចចេញពីរោងចក្រ។ បន្ទាប់ពីឧបករណ៍ចាប់ផ្ដើមចូល Android ដោយជោគជ័យ សូមបិទការដោះសោ OEM នៅក្នុងជម្រើសសម្រាប់អ្នកអភិវឌ្ឍន៍។ ឧបករណ៍នឹងត្រូវបានឈូស ហើយប្រព័ន្ធឯកសារនឹងត្រូវបានប្ដូរទៅជា ext4 បន្ទាប់ពីបញ្ជាក់រួច។ បន្ទាប់ពីដំណើរការនេះចប់ សូមត្រឡប់មកបើក 16KB ម្ដងទៀត។"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"លុបទិន្នន័យទាំងអស់"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"មិនអាចឈូស និងកំណត់ទម្រង់ផ្នែកទិន្នន័យឡើងវិញទៅជា ext4 បានទេ។"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"តម្រូវឱ្យដោះសោកម្មវិធីដំណើរការប្រព័ន្ធសម្រាប់មុខងារ 16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"ឧបករណ៍នេះត្រូវដោះសោកម្មវិធីដំណើរការប្រព័ន្ធ មុនពេលប្រើជម្រើសសម្រាប់អ្នកអភិវឌ្ឍន៍ 16KB។ មិនអាចធានាសុក្រឹតភាពកម្មវិធីនៅក្នុងមុខងារនេះទេ ហើយទិន្នន័យទាំងឡាយដែលបានរក្សាទុកនៅលើទូរសព្ទ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ អាចប្រឈមនឹងហានិភ័យ។ ទិន្នន័យ និងការកំណត់ទាំងអស់របស់អ្នកប្រើប្រាស់នឹងត្រូវបានឈូស នៅពេលបើកដំណើរការមុខងារ 16KB។ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ ការបើកដំណើរការជម្រើស 16KB នឹងតម្រូវឱ្យមានការចាប់ផ្ដើមឡើងវិញពីរដង។ នៅពេលដែលអ្នកកំពុងប្រើមុខងារនេះ អ្នកអាចប្ដូរទៅមករវាងមុខងារ 4KB និង 16KB តាមរយៈការចាប់ផ្ដើមឡើងវិញតែម្ដងគត់។ មុខងារមួយចំនួននឹងត្រូវបានបិទនៅក្នុងមុខងារទាំងនេះ ដូច្នេះកម្មវិធីមួយចំនួនប្រហែលជាមិនដំណើរការទេ។ ដើម្បីត្រឡប់ឧបករណ៍ទៅមុខងារផលិតកម្ម អ្នកត្រូវប្ដូរទៅមុខងារ 4KB វិញ បន្ទាប់មក ការចាក់សោ OEM/កម្មវិធីដំណើរការប្រព័ន្ធ (ដែលកំណត់ឧបករណ៍ដូចចេញពីរោងចក្រ)។ សូមដោះសោកម្មវិធីដំណើរការប្រព័ន្ធ រួចព្យាយាមម្ដងទៀត។ អ្នកអាចមើលការណែនាំអំពីរបៀបអនុវត្តសកម្មភាពនេះតាម <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"ការប្រើមុខងារ Page-Agnostic 4KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"អ្នកកំពុងប្រើមុខងារ 4KB នៃមុខងារ Page-Agnostic។ មិនអាចធានាសុក្រឹតភាពកម្មវិធីនៅក្នុងមុខងារនេះទេ ហើយទិន្នន័យទាំងឡាយដែលបានរក្សាទុកនៅលើទូរសព្ទ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ អាចប្រឈមនឹងហានិភ័យ។ មុខងារមួយចំនួននឹងត្រូវបានបិទនៅក្នុងមុខងារទាំងនេះ ដូច្នេះកម្មវិធីមួយចំនួនប្រហែលជាមិនដំណើរការទេ។ ដើម្បីបញ្ចូលមុខងារផលិតកម្មឡើងវិញ អ្នកត្រូវតែចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធរបស់ឧបករណ៍។ ចុចដើម្បីអានបន្ថែម។"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"អ្នកកំពុងប្រើមុខងារ 4KB នៃមុខងារ Page-Agnostic។ មិនអាចធានាសុក្រឹតភាពកម្មវិធីនៅក្នុងមុខងារនេះទេ ហើយទិន្នន័យទាំងឡាយដែលបានរក្សាទុកនៅលើទូរសព្ទ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ អាចប្រឈមនឹងហានិភ័យ។ មុខងារមួយចំនួននឹងត្រូវបានបិទនៅក្នុងមុខងារទាំងនេះ ដូច្នេះកម្មវិធីមួយចំនួនប្រហែលជាមិនដំណើរការទេ។ ដើម្បីបញ្ចូលមុខងារផលិតកម្មឡើងវិញ អ្នកត្រូវតែចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធរបស់ឧបករណ៍។ ដំណើរការនេះនឹងកំណត់ឧបករណ៍ដូចចេញពីរោងចក្រ រួចត្រឡប់ឧបករណ៍ទៅការកំណត់ផលិតកម្មវិញ។ បន្ទាប់ពីឧបករណ៍ចាប់ផ្ដើមចូល Android ដោយជោគជ័យ សូមបិទការដោះសោ OEM នៅក្នុងជម្រើសសម្រាប់អ្នកអភិវឌ្ឍន៍។ ប្រសិនបើឧបករណ៍មិនអាចចាប់ផ្ដើមប្រព័ន្ធប្រតិបត្តិការ Android ឬមិនមានស្ថិរភាព សូមជំនួសកម្មវិធីឧបករណ៍ឡើងវិញដោយប្រើរូបភាពពីរោងចក្រចុងក្រោយបំផុតពី <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ឬប្រើ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> រួចជ្រើសរើស \'ឈូសឧបករណ៍\' \'ចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធ\' និង \'បង្ខំឱ្យជំនួសផ្នែកទាំងអស់\'។"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"ដោយប្រើមុខងារ Page-Agnostic 16KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"អ្នកកំពុងប្រើមុខងារ 16KB នៃមុខងារ Page-Agnostic។ មិនអាចធានាសុក្រឹតភាពកម្មវិធីនៅក្នុងមុខងារនេះទេ ហើយទិន្នន័យទាំងឡាយដែលបានរក្សាទុកនៅលើទូរសព្ទ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ អាចប្រឈមនឹងហានិភ័យ។ មុខងារមួយចំនួននឹងត្រូវបានបិទនៅក្នុងមុខងារទាំងនេះ ដូច្នេះកម្មវិធីមួយចំនួនប្រហែលជាមិនដំណើរការទេ។ ដើម្បីចូលទៅក្នុងមុខងារផលិតកម្មឡើងវិញ អ្នកត្រូវតែប្ដូរត្រឡប់ទៅមុខងារ 4K បន្ទាប់មកចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធរបស់ឧបករណ៍។ ចុចដើម្បីអានបន្ថែម។"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"អ្នកកំពុងប្រើមុខងារ 16KB នៃមុខងារ Page-Agnostic។ មិនអាចធានាសុក្រឹតភាពកម្មវិធីនៅក្នុងមុខងារនេះទេ ហើយទិន្នន័យទាំងឡាយដែលបានរក្សាទុកនៅលើទូរសព្ទ នៅពេលកម្មវិធីដំណើរការប្រព័ន្ធត្រូវបានដោះសោ អាចប្រឈមនឹងហានិភ័យ។ មុខងារមួយចំនួននឹងត្រូវបានបិទនៅក្នុងមុខងារទាំងនេះ ដូច្នេះកម្មវិធីមួយចំនួនប្រហែលជាមិនដំណើរការទេ។ ដើម្បីចូលទៅក្នុងមុខងារផលិតកម្មឡើងវិញ អ្នកត្រូវតែប្ដូរត្រឡប់ទៅមុខងារ 4K បន្ទាប់មកចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធរបស់ឧបករណ៍។ ដំណើរការនេះនឹងកំណត់ឧបករណ៍ដូចចេញពីរោងចក្រ រួចត្រឡប់ឧបករណ៍ទៅការកំណត់ផលិតកម្មវិញ។ បន្ទាប់ពីឧបករណ៍ចាប់ផ្ដើមចូល Android ដោយជោគជ័យ សូមបិទការដោះសោ OEM នៅក្នុងជម្រើសសម្រាប់អ្នកអភិវឌ្ឍន៍។ ប្រសិនបើឧបករណ៍មិនអាចចាប់ផ្ដើមប្រព័ន្ធប្រតិបត្តិការ Android ឬមិនមានស្ថិរភាព សូមជំនួសកម្មវិធីឧបករណ៍ឡើងវិញដោយប្រើរូបភាពពីរោងចក្រចុងក្រោយបំផុតពី <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ឬប្រើ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> រួចជ្រើសរើស \'ឈូសឧបករណ៍\' \'ចាក់សោកម្មវិធីដំណើរការប្រព័ន្ធ\' និង \'បង្ខំឱ្យជំនួសផ្នែកទាំងអស់\'។"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"មុខងារ Page-Agnostic 16KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"អានបន្ថែម"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ឧបករណ៍ដោះស្រាយរបាយការណ៍អំពីបញ្ហា"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"អនុញ្ញាតអ្នកប្រើប្រាស់ច្រើន"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-kn/arrays.xml b/res/values-kn/arrays.xml
index f8f2930..50392bc 100644
--- a/res/values-kn/arrays.xml
+++ b/res/values-kn/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ಬೆಡ್ಟೈಮ್"</item>
+ <item msgid="4152450357280759894">"ಡ್ರೈವಿಂಗ್"</item>
+ <item msgid="7096549258219399423">"ತಲ್ಲೀನಗೊಳಿಸುವ"</item>
+ <item msgid="2760716776980432977">"ನಿರ್ವಹಿಸಿರುವುದು"</item>
+ <item msgid="601734478369121764">"ಸ್ಟಾರ್"</item>
+ <item msgid="6243809315432780521">"ಕ್ಯಾಲೆಂಡರ್"</item>
+ <item msgid="4913577903148415331">"ಸಮಯ"</item>
+ <item msgid="3653377604690057780">"ಥಿಯೇಟರ್"</item>
+ <item msgid="3843711267408385410">"ಹೂವು"</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 ad2353c..71c7036 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ಶ್ರವಣ ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ಶಾರ್ಟ್ಕಟ್, ಶ್ರವಣ ಸಾಧನ ಹೊಂದಾಣಿಕೆ"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ಪ್ರಿಸೆಟ್"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ನಿಮ್ಮ ಆಡಿಯಾಲಜಿಸ್ಟ್ರಿಂದ ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಲಾದ ಯಾವುದೇ ಪ್ರಿಸೆಟ್ಗಳಿಲ್ಲ"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ಪ್ರಿಸೆಟ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ಆಡಿಯೋ ಔಟ್ಪುಟ್"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ಆಡಿಯೋ ಔಟ್ಪುಟ್ ಕುರಿತು"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ವಾಚ್ ಅನ್ಲಾಕ್ ಕುರಿತು ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ವಾಚ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ವಾಚ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಮತ್ತು ಫೇಸ್ ಅನ್ಲಾಕ್"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ಫೇಸ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ಕೆಲಸಕ್ಕಾಗಿ ಫೇಸ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ಲಾಕ್"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ಸೆಟಪ್ ಅಗತ್ಯವಿದೆ"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ಫೇಸ್ ಮತ್ತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕೆ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ವಿವರವಾದ NFC ಲಾಗಿಂಗ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಮಾತ್ರ ಉದ್ದೇಶಿಸಲಾಗಿದೆ. ದೋಷ ವರದಿಗಳು ಹೆಚ್ಚುವರಿ NFC ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ, ಅದು ಖಾಸಗಿ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರಬಹುದು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸಲು, ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ಕ್ಯಾಸ್ಟ್ ಮಾಡುವಿಕೆ"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ಕನ್ನಡಿ"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ವೈರ್ಲೆಸ್ ಪ್ರದರ್ಶನ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ಅಡಾಪ್ಟಿವ್"</string>
<string name="brightness" msgid="6216871641021779698">"ಪ್ರಖರತೆಯ ಮಟ್ಟ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"ಅಡಾಪ್ಟಿವ್ ಪ್ರಖರತೆ"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"ಅಡಾಪ್ಟಿವ್ ಬ್ರೈಟ್ನೆಸ್ ಕುರಿತು"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಪ್ರಖರತೆಯು ನಿಮ್ಮ ಪರಿಸರ ಮತ್ತು ಚಟುವಟಿಕೆಗಳಿಗೆ ಅನುಗುಣವಾಗಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಡ್ಜಸ್ಟ್ ಆಗುತ್ತದೆ. ನಿಮ್ಮ ಆದ್ಯತೆಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಅಡಾಪ್ಟಿವ್ ಪ್ರಖರತೆಗೆ ಸಹಾಯ ಮಾಡಲು ನೀವು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸ್ಲೈಡರ್ ಅನ್ನು ಸರಿಸಬಹುದು."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ಆನ್"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ಆಫ್"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ಹೇಗಾದರೂ ಮುಂದುವರಿಸಿ"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ರದ್ದುಮಾಡಿ"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ಹಿಗ್ಗಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ಒಂದು ಬೆರಳಿನ ಪ್ಯಾನಿಂಗ್"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"1 ಬೆರಳಿನಿಂದ ಮ್ಯಾಗ್ನಿಫೈಯರ್ ಅನ್ನು ಸರಿಸಿ"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಸರಿಸಲು 1 ಬೆರಳನ್ನು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ಒಂದು ಬೆರಳಿನಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡುವ ಮೂಲಕ ಹಿಗ್ಗಿಸುವಿಕೆಯ ಪ್ರದೇಶವನ್ನು ಸರಿಸಿ."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ಎರಡು ಬೆರಳುಗಳಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡುವ ಮೂಲಕ ಹಿಗ್ಗಿಸುವಿಕೆಯ ಪ್ರದೇಶವನ್ನು ಸರಿಸಿ."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"ಸ್ಕ್ರೀನ್ನ ಭಾಗವನ್ನು ಹಿಗ್ಗಿಸುವಾಗ ಮಾತ್ರ ಲಭ್ಯವಿರುವುದಿಲ್ಲ"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ಝೂಮ್ ಮಾಡಲು ಒಂದು ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ವಿಷಯವು ದೊಡ್ಡದಾಗಿ ಕಾಣಿಸಲು ಸ್ಕ್ರೀನ್ ಮೇಲೆ ತ್ವರಿತವಾಗಿ ಝೂಮ್ ಇನ್ ಮಾಡಿ"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ಝೂಮ್ ಇನ್ ಮಾಡಲು:</b><br/> {0,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/> {1,number,integer}. ಸ್ಕ್ರೀನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ<br/> {2,number,integer}. ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಸರಿಸಲು 2 ಬೆರಳುಗಳಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ<br/> {3,number,integer}. ಝೂಮ್ ಹೊಂದಿಸಲು 2 ಬೆರಳುಗಳಿಂದ ಪಿಂಚ್ ಮಾಡಿ<br/> {4,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/><br/> <b>ತಾತ್ಕಾಲಿಕವಾಗಿ ಝೂಮ್ ಇನ್ ಮಾಡಲು:</b><br/> {0,number,integer}. ನಿಮ್ಮ ಹಿಗ್ಗಿಸುವಿಕೆಯ ವಿಧಾನವು ಫುಲ್ಸ್ಕ್ರೀನ್ಗೆ ಸೆಟ್ ಆಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ<br/> {1,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/> {2,number,integer}. ಸ್ಕ್ರೀನ್ನ ಯಾವುದೇ ಭಾಗದಲ್ಲಿ ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿಹಿಡಿಯಿರಿ<br/> {3,number,integer}. ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಸರಿಸಲು ಬೆರಳನ್ನು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ<br/> {4,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಲು ಬೆರಳನ್ನು ಮೇಲಕ್ಕೆತ್ತಿ"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>ಝೂಮ್ ಇನ್ ಮಾಡಲು:</b><br/> {0,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/> {1,number,integer}. ಸ್ಕ್ರೀನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ<br/> {2,number,integer}. ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಸರಿಸಲು 2 ಬೆರಳುಗಳಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ<br/> {3,number,integer}. ಝೂಮ್ ಹೊಂದಿಸಲು 2 ಬೆರಳುಗಳಿಂದ ಪಿಂಚ್ ಮಾಡಿ<br/> {4,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/><br/> ನೀವು ತಾತ್ಕಾಲಿಕವಾಗಿ ಝೂಮ್ ಇನ್ ಹಾಗೂ ಇನ್ನಷ್ಟು ಮಾಡಬಹುದು."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>ಝೂಮ್ ಇನ್ ಮಾಡಲು:</b><br/> {0,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/> {1,number,integer}. ಸ್ಕ್ರೀನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ<br/> {2,number,integer}. ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಸರಿಸಲು 1 ಅಥವಾ 2 ಬೆರಳುಗಳಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ<br/> {3,number,integer}. ಝೂಮ್ ಹೊಂದಿಸಲು 2 ಬೆರಳುಗಳಿಂದ ಪಿಂಚ್ ಮಾಡಿ<br/> {4,number,integer}. ಹಿಗ್ಗಿಸುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಲು ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ<br/><br/> ನೀವು ತಾತ್ಕಾಲಿಕವಾಗಿ ಝೂಮ್ ಇನ್ ಹಾಗೂ ಇನ್ನಷ್ಟು ಮಾಡಬಹುದು."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"ಹಿಗ್ಗಿಸುವಿಕೆ ಅನ್ನು ಆನ್ ಮಾಡಿದಾಗ, ನಿಮ್ಮ ಪರದೆಯಲ್ಲಿ ನೀವು ಝೂಮ್ ಇನ್ ಮಾಡಬಹುದು.\n\n"<b>"ಝೂಮ್ ಮಾಡಲು"</b>", ಹಿಗ್ಗಿಸುವಿಕೆ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ, ನಂತರ ಪರದೆಯ ಮೇಲೆ ಎಲ್ಲಿಯಾದರೂ ಟ್ಯಾಪ್ ಮಾಡಿ.\n"<ul><li>"ಸ್ಕ್ರಾಲ್ ಮಾಡಲು 2 ಅಥವಾ ಹೆಚ್ಚು ಬೆರಳುಗಳನ್ನು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</li>\n<li>"ಝೂಮ್ ಹೊಂದಿಸಲು, 2 ಅಥವಾ ಹೆಚ್ಚು ಬೆರಳುಗಳಿಂದ ಪಿಂಚ್ ಮಾಡಿ"</li></ul>\n\n<b>"ತಾತ್ಕಾಲಿಕವಾಗಿ ಝೂಮ್ ಮಾಡಲು"</b>", ಮ್ಯಾಗ್ನಿಫಿಕೇಶನ್ ಅನ್ನು ಪ್ರಾಂಭಿಸಿ, ನಂತರ ಪರದೆಯ ಮೇಲೆ ಎಲ್ಲಾದರೂ ಸ್ಪರ್ಶಿಸಿ, ಒತ್ತಿಹಿಡಿಯಿರಿ.\n"<ul><li>"ಪರದೆಯಲ್ಲಿ ಅತ್ತಿತ್ತ ಸರಿಸಲು, ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</li>\n<li>"ಝೂಮ್ ಔಟ್ ಮಾಡಲು ಬೆರಳನ್ನು ಎತ್ತಿ"</li></ul>\n\n"ನೀವು ಕೀಬೋರ್ಡ್ ಅಥವಾ ನ್ಯಾವಿಗೇಶನ್ ಬಾರ್ನಲ್ಲಿ ಝೂಮ್ ಇನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"ಪುಟ <xliff:g id="NUM_PAGES">%2$d</xliff:g> ರಲ್ಲಿ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ ಬಟನ್ ಶಾರ್ಟ್ಕಟ್"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{ಯಾವುದೂ ಇಲ್ಲ}=1{1 ವೇಳಾಪಟ್ಟಿಯನ್ನು ಸೆಟ್ ಮಾಡಲಾಗಿದೆ}one{# ವೇಳಾಪಟ್ಟಿಗಳನ್ನು ಸೆಟ್ ಮಾಡಲಾಗಿದೆ}other{# ವೇಳಾಪಟ್ಟಿಗಳನ್ನು ಸೆಟ್ ಮಾಡಲಾಗಿದೆ}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"ಆದ್ಯತೆಯ ಮೋಡ್ಗಳು"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ಪ್ರಮುಖ ಜನರು ಮತ್ತು ಆ್ಯಪ್ಗಳಿಂದ ಮಾತ್ರ ನೋಟಿಫಿಕೇಶನ್ ಪಡೆಯಿರಿ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"ಸಮಯ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ಉದಾ. \"9:30 – ಸಂಜೆ 5:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ಕ್ಯಾಲೆಂಡರ್"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ಉದಾ. \"ವೈಯಕ್ತಿಕ ಕ್ಯಾಲೆಂಡರ್\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"ಅಡಚಣೆಗಳನ್ನು ಮಿತಿಗೊಳಿಸಿ"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"ವೇಳಾಪಟ್ಟಿಗಳನ್ನು ಅಳಿಸಿ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ಅಳಿಸಿ"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"ಕ್ಯಾಲೆಂಡರ್ ಅನ್ನು ಸೇರಿಸಿ"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಅನ್ನು ಬಳಸಿ"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"ವೇಳಾಪಟ್ಟಿ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ವೇಳಾಪಟ್ಟಿಯನ್ನು ಸೆಟ್ ಮಾಡಿ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"ಅವಧಿ"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ಕೆಲವು ಸಮಯ ಫೋನ್ ನಿಶ್ಯಬ್ಧವಾಗಿಸಿ"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ಅಡಚಣೆಗಳ ಧ್ವನಿಯನ್ನು ಅನುಮತಿಸಿ"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ದೃಶ್ಯ ಅಡಚಣೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ದೃಶ್ಯ ಸಂಕೇತಗಳನ್ನು ಅನುಮತಿಸಿ"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"ನಿಮ್ಮನ್ನು ತಲುಪಬಹುದಾದ ನೋಟಿಫಿಕೇಶನ್ಗಳು"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ಫೋಕಸ್ ಆಗಿರಿ"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"ಹೆಚ್ಚುವರಿ ಆ್ಯಕ್ಷನ್ಗಳು"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ಡಿಸ್ಪ್ಲೇ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ಡಿಸ್ಪ್ಲೇ ಆಯ್ಕೆಗಳು"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ಡಾರ್ಕ್ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಲೈಟ್ ಟೆಕ್ಸ್ಟ್ಗೆ ಆದ್ಯತೆ ನೀಡಲು OS ಮತ್ತು ಆ್ಯಪ್ಗಳನ್ನು ಬದಲಾಯಿಸಿ, ಇದರಿಂದ ಕಣ್ಣಿಗೆ ಆಯಾಸವಾಗುವುದಿಲ್ಲ ಮತ್ತು ಇದು ಕೆಲವು ಸಾಧನಗಳಲ್ಲಿ ಗಮನಾರ್ಹವಾಗಿ ಬ್ಯಾಟರಿ ಹೆಚ್ಚುಕಾಲ ಉಳಿಯುವಂತೆ ಮಾಡುತ್ತದೆ."</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="mode_notification_filter_title" msgid="443728483176031977">"ಅಡಚಣೆಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"ಯಾವುದೇ ಅಡಚಣೆಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ಬಳಕೆಯಾಗದ ವರ್ಗಗಳನ್ನು ತೋರಿಸಿ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ಬಳಕೆಯಾಗದ ವರ್ಗಗಳನ್ನು ಮರೆಮಾಡಿ"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"ಎಲ್ಲಾ"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} ವರೆಗೆ, ಒಂದು ಗಂಟೆಯವರೆಗೆ ಮಾತ್ರ ಅಲಾರಾಂಗಳನ್ನು ಬದಲಾಯಿಸಿ}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"ಮರುಹೆಸರಿಸಿ"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ಐಕಾನ್ ಬದಲಾಯಿಸಿ"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ಐಕಾನ್ ಬದಲಾಯಿಸಿ"</string>
<string name="warning_button_text" msgid="1274234338874005639">"ಎಚ್ಚರಿಕೆ"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"ಮುಚ್ಚಿರಿ"</string>
<string name="device_feedback" msgid="5351614458411688608">"ಈ ಸಾಧನದ ಕುರಿತು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB ಡೆವಲಪರ್ ಆಯ್ಕೆಯನ್ನು ಬಳಸುವ ಮೊದಲು ಈ ಸಾಧನದ ಡೇಟಾ ಪಾರ್ಟಿಶನ್ ಅನ್ನು ext4 ಗೆ ಪರಿವರ್ತಿಸುವ ಅಗತ್ಯವಿದೆ. ಈ ಮೋಡ್ನಲ್ಲಿ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟಿಗ್ರಿಟಿಯ ಭರವಸೆ ನೀಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಆಗಿರುವಾಗ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾ ಅಪಾಯದಲ್ಲಿರಬಹುದು. 16KB ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಇದರ ನಂತರ ಮತ್ತೊಮ್ಮೆ ರೀಬೂಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಒಮ್ಮೆ ನೀವು ಈ ಮೋಡ್ನಲ್ಲಿದ್ದರೆ, ಒಂದೇ ರೀಬೂಟ್ನೊಂದಿಗೆ ನೀವು 4KB ಮತ್ತು 16KB ಮೋಡ್ಗಳ ನಡುವೆ ಹಿಂದಕ್ಕೆ ಮತ್ತು ಮುಂದಕ್ಕೆ ಬದಲಾಯಿಸಬಹುದು. ಈ ಮೋಡ್ಗಳಲ್ಲಿ ಕೆಲವು ಫೀಚರ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹಾಗಾಗಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ಸಾಧನವನ್ನು ಪ್ರೊಡಕ್ಷನ್ ಮೋಡ್ಗೆ ಹಿಂತಿರುಗಿಸಲು, ನೀವು 4KB ಮೋಡ್ಗೆ ಹಿಂತಿರುಗಿ ನಂತರ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಅದು ಸಾಧನವನ್ನು ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್ ಮಾಡುತ್ತದೆ. ಸಾಧನವು ಯಶಸ್ವಿಯಾಗಿ Android ಗೆ ಬೂಟ್ ಆದ ನಂತರ, ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳಲ್ಲಿ OEM ಅನ್ಲಾಕಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ. ಸಾಧನವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ದೃಢೀಕರಣದ ನಂತರ ಫೈಲ್ಸಿಸ್ಟಮ್ ಅನ್ನು ext4 ಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ. ಇದು ಪೂರ್ಣಗೊಂಡ ನಂತರ, ಮತ್ತೆ 16KB ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಹಿಂತಿರುಗಿ."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸಿ"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ಡೇಟಾ ವಿಭಾಗವನ್ನು ext4 ಗೆ ಮರು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು ಮತ್ತು ಅಳಿಸಲು ವಿಫಲವಾಗಿದೆ."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB ಮೋಡ್ಗೆ ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಅಗತ್ಯವಿದೆ"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16KB ಡೆವಲಪರ್ ಆಯ್ಕೆಯನ್ನು ಬಳಸುವ ಮೊದಲು ಈ ಸಾಧನದಲ್ಲಿ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಬೇಕಾಗಿದೆ. ಈ ಮೋಡ್ನಲ್ಲಿ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟಿಗ್ರಿಟಿಯ ಭರವಸೆ ನೀಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಆಗಿರುವಾಗ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾ ಅಪಾಯದಲ್ಲಿರಬಹುದು. 16KB ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವಾಗ ಎಲ್ಲಾ ಬಳಕೆದಾರರ ಡೇಟಾ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. ಒಮ್ಮೆ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲಾದ ನಂತರ, 16KB ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಎರಡು ರೀಬೂಟ್ಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ. ಒಮ್ಮೆ ನೀವು ಈ ಮೋಡ್ನಲ್ಲಿದ್ದರೆ, ಒಂದೇ ರೀಬೂಟ್ನೊಂದಿಗೆ ನೀವು 4KB ಮತ್ತು 16KB ಮೋಡ್ಗಳ ನಡುವೆ ಹಿಂದಕ್ಕೆ ಮತ್ತು ಮುಂದಕ್ಕೆ ಬದಲಾಯಿಸಬಹುದು. ಈ ಮೋಡ್ಗಳಲ್ಲಿ ಕೆಲವು ಫೀಚರ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹಾಗಾಗಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ಸಾಧನವನ್ನು ಪ್ರೊಡಕ್ಷನ್ ಮೋಡ್ಗೆ ಹಿಂತಿರುಗಿಸಲು, ನೀವು 4KB ಮೋಡ್ಗೆ ಹಿಂತಿರುಗಬೇಕು ಮತ್ತು ನಂತರ OEM/ಬೂಟ್ಲೋಡರ್ ಸಾಧನವನ್ನು ಲಾಕ್ (ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್) ಮಾಡುತ್ತದೆ. ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ. ಇದನ್ನು ಹೇಗೆ ಮಾಡುವುದು ಎಂಬುದರ ಸೂಚನೆಗಳನ್ನು ನೀವು <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> ಇಲ್ಲಿ ನೋಡಬಹುದು"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತಿದೆ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"ನೀವು ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್ನ 4KB ಮೋಡ್ನಲ್ಲಿರುವಿರಿ. ಈ ಮೋಡ್ನಲ್ಲಿ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟಿಗ್ರಿಟಿಯ ಭರವಸೆ ನೀಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಆಗಿರುವಾಗ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾ ಅಪಾಯದಲ್ಲಿರಬಹುದು. ಈ ಮೋಡ್ಗಳಲ್ಲಿ ಕೆಲವು ಫೀಚರ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹಾಗಾಗಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ಪ್ರೊಡಕ್ಷನ್ ಮೋಡ್ ಅನ್ನು ಮರು-ಪ್ರವೇಶಿಸಲು, ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ನೀವು ಲಾಕ್ ಮಾಡಬೇಕು. ಇನ್ನಷ್ಟು ಓದಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"ನೀವು ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್ನ 4KB ಮೋಡ್ನಲ್ಲಿರುವಿರಿ. ಈ ಮೋಡ್ನಲ್ಲಿ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟಿಗ್ರಿಟಿಯ ಭರವಸೆ ನೀಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಆಗಿರುವಾಗ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾ ಅಪಾಯದಲ್ಲಿರಬಹುದು. ಈ ಮೋಡ್ಗಳಲ್ಲಿ ಕೆಲವು ಫೀಚರ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹಾಗಾಗಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ಪ್ರೊಡಕ್ಷನ್ ಮೋಡ್ ಅನ್ನು ಮರು-ಪ್ರವೇಶಿಸಲು, ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ನೀವು ಲಾಕ್ ಮಾಡಬೇಕು. ಇದು ಸಾಧನವನ್ನು ಮತ್ತೆ ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಪ್ರೊಡಕ್ಷನ್ ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ. ಸಾಧನವು ಯಶಸ್ವಿಯಾಗಿ Android ಗೆ ಬೂಟ್ ಆದ ನಂತರ, ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳಲ್ಲಿ OEM ಅನ್ಲಾಕಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ. ಸಾಧನವು Android ಗೆ ಬೂಟ್ ಮಾಡಲು ವಿಫಲವಾದಲ್ಲಿ ಅಥವಾ ಅಸ್ಥಿರವಾಗಿದ್ದರೆ, <a href=\"https://developers.google.com/android/images\">https://developers ನಿಂದ ಇತ್ತೀಚಿನ ಫ್ಯಾಕ್ಟರಿ ಚಿತ್ರಗಳೊಂದಿಗೆ ಸಾಧನವನ್ನು ಮರು-ಫ್ಲಾಶ್ ಮಾಡಿ .google.com/android/images</a> ಅಥವಾ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ಮತ್ತು \'ವೈಪ್ ಡಿವೈಸ್\', \'ಲಾಕ್ ಬೂಟ್ಲೋಡರ್\' ಮತ್ತು \'ಎಲ್ಲಾ ಪಾರ್ಟಿಶನ್ಗಳನ್ನು ಫೋರ್ಸ್ ಫ್ಲ್ಯಾಶ್ ಮಾಡಿ\' ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತಿದೆ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"ನೀವು ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್ನ 16KB ಮೋಡ್ನಲ್ಲಿರುವಿರಿ. ಈ ಮೋಡ್ನಲ್ಲಿ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟಿಗ್ರಿಟಿಯ ಭರವಸೆ ನೀಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಆಗಿರುವಾಗ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾ ಅಪಾಯದಲ್ಲಿರಬಹುದು. ಈ ಮೋಡ್ಗಳಲ್ಲಿ ಕೆಲವು ಫೀಚರ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹಾಗಾಗಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ಪ್ರೊಡಕ್ಷನ್ ಮೋಡ್ ಅನ್ನು ಮರು-ಪ್ರವೇಶಿಸಲು, ನೀವು 4K ಮೋಡ್ಗೆ ಹಿಂತಿರುಗಿ ಮತ್ತು ನಂತರ ಸಾಧನದ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಬೇಕು. ಇನ್ನಷ್ಟು ಓದಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"ನೀವು ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್ನ 16KB ಮೋಡ್ನಲ್ಲಿರುವಿರಿ. ಈ ಮೋಡ್ನಲ್ಲಿ ಸಾಫ್ಟ್ವೇರ್ ಇಂಟಿಗ್ರಿಟಿಯ ಭರವಸೆ ನೀಡಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಆಗಿರುವಾಗ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಯಾವುದೇ ಡೇಟಾ ಅಪಾಯದಲ್ಲಿರಬಹುದು. ಈ ಮೋಡ್ಗಳಲ್ಲಿ ಕೆಲವು ಫೀಚರ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ, ಹಾಗಾಗಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು. ಪ್ರೊಡಕ್ಷನ್ ಮೋಡ್ ಅನ್ನು ಮರು-ಪ್ರವೇಶಿಸಲು, ನೀವು 4K ಮೋಡ್ಗೆ ಹಿಂತಿರುಗಿ ಮತ್ತು ನಂತರ ಸಾಧನದ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಬೇಕು. ಇದು ಸಾಧನವನ್ನು ಮತ್ತೆ ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಪ್ರೊಡಕ್ಷನ್ ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ. ಸಾಧನವು ಯಶಸ್ವಿಯಾಗಿ Android ಗೆ ಬೂಟ್ ಆದ ನಂತರ, ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳಲ್ಲಿ OEM ಅನ್ಲಾಕಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ. ಸಾಧನವು Android ಗೆ ಬೂಟ್ ಮಾಡಲು ವಿಫಲವಾದಲ್ಲಿ ಅಥವಾ ಅಸ್ಥಿರವಾಗಿದ್ದರೆ, <a href=\"https://developers.google.com/android/images\">https://developers ನಿಂದ ಇತ್ತೀಚಿನ ಫ್ಯಾಕ್ಟರಿ ಚಿತ್ರಗಳೊಂದಿಗೆ ಸಾಧನವನ್ನು ಮರು-ಫ್ಲಾಶ್ ಮಾಡಿ .google.com/android/images</a> ಅಥವಾ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ಮತ್ತು \'ವೈಪ್ ಡಿವೈಸ್\', \'ಲಾಕ್ ಬೂಟ್ಲೋಡರ್\' ಮತ್ತು \'ಎಲ್ಲಾ ಪಾರ್ಟಿಶನ್ಗಳನ್ನು ಫೋರ್ಸ್ ಫ್ಲ್ಯಾಶ್ ಮಾಡಿ\' ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB ಪೇಜ್-ಅಗ್ನೋಸ್ಟಿಕ್ ಮೋಡ್"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ಇನ್ನಷ್ಟು ಓದಿ"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ಬಗ್ ವರದಿ ಹ್ಯಾಂಡ್ಲರ್"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"ಬಹು ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಿ"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index 9edb91b..08db70c 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"취침 시간"</item>
+ <item msgid="4152450357280759894">"운전"</item>
+ <item msgid="7096549258219399423">"몰입형"</item>
+ <item msgid="2760716776980432977">"관리형"</item>
+ <item msgid="601734478369121764">"별표"</item>
+ <item msgid="6243809315432780521">"캘린더"</item>
+ <item msgid="4913577903148415331">"시간"</item>
+ <item msgid="3653377604690057780">"영화관"</item>
+ <item msgid="3843711267408385410">"꽃"</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 dd0e236..c4cb4fb 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"청각 보조 기기 설정"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"단축키, 보청기 호환성"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"미리 설정"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"청능사가 사전 설정한 프로그램이 없습니다."</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"사전 설정을 업데이트할 수 없음"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"오디오 출력"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"오디오 출력 정보"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"스마트시계 잠금 해제 자세히 알아보기"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"시계 추가"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"시계 삭제"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"지문 및 얼굴 인식 잠금 해제"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"얼굴 인식/지문 잠금 해제"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"직장용 얼굴 인식/지문 잠금 해제"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"설정 필요"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"얼굴 및 지문 추가됨"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"기기를 다시 시작하시겠습니까?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"세부 NFC 로깅은 개발용으로만 사용됩니다. 추가 NFC 데이터는 버그 신고에 포함되며, 여기에는 개인 정보가 포함될 수 있습니다. 이 설정을 변경하려면 기기를 다시 시작하세요."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"다시 시작"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"전송"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"미러링"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"무선 디스플레이 사용"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"색상 자동 조절"</string>
<string name="brightness" msgid="6216871641021779698">"밝기 수준"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"밝기 자동 조절"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"밝기 자동 조절 정보"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"화면 밝기가 환경 및 활동에 맞게 자동으로 조정됩니다. 슬라이더를 수동으로 이동하여 밝기 자동 조절 기능이 사용자의 환경설정을 학습하도록 할 수 있습니다."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"사용"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"사용 안함"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"무시하고 계속하기"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"취소"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"확대 설정"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"한 손가락으로 패닝"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"한 손가락으로 드래그하여 확대 영역을 이동하세요."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"두 손가락으로 드래그하여 확대 영역을 이동하세요."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"화면의 일부만 확대하는 동안에는 사용할 수 없음"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"버튼을 탭하여 확대/축소"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"화면을 빠르게 확대하여 콘텐츠를 더 크게 표시합니다."</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>확대하는 방법:</b><br/> {0,number,integer}. 바로가기를 사용하여 확대를 시작합니다.<br/> {1,number,integer}. 화면을 탭합니다.<br/> {2,number,integer}. 두 손가락으로 드래그하여 화면을 움직입니다.<br/> {3,number,integer}. 두 손가락을 모아서 배율을 조정합니다.<br/> {4,number,integer}. 바로가기를 사용하여 확대를 멈춥니다.<br/><br/> <b>일시적으로 확대하는 방법:</b><br/> {0,number,integer}. 확대 유형이 전체 화면으로 설정되어 있어야 합니다.<br/> {1,number,integer}. 바로가기를 사용하여 확대를 시작합니다.<br/> {2,number,integer}. 화면 아무 곳이나 길게 터치합니다.<br/> {3,number,integer}. 손가락으로 드래그하여 화면을 움직입니다.<br/> {4,number,integer}. 손가락을 떼어 확대를 멈춥니다."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"확대 기능을 사용 설정하면 화면을 확대할 수 있습니다.\n\n"<b>"화면을 확대하려면"</b>" 확대 기능을 시작한 다음 화면에서 아무 곳이나 탭합니다.\n"<ul><li>"스크롤하려면 2개 이상의 손가락으로 드래그합니다."</li>\n<li>"확대/축소 수준을 조정하려면 2개 이상의 손가락을 모읍니다."</li></ul>\n\n<b>"화면을 일시적으로 확대하려면"</b>" 확대를 시작한 다음 화면에서 아무 곳이나 길게 터치합니다.\n"<ul><li>"화면에서 이동하려면 드래그합니다."</li>\n<li>"축소하려면 손가락을 뗍니다."</li></ul>\n\n"키보드 또는 탐색 메뉴는 확대할 수 없습니다."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>페이지 중 <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>페이지"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"접근성 버튼 바로가기"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"우선순위 모드"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"중요한 사람과 앱의 알림만 받기"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"활동 유형 선택"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"시간"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"예: \"9시 30분부터 오후 5시까지\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"캘린더"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"예: \"개인 캘린더\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"방해 요소 제한"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"예약 삭제"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"삭제"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"캘린더 추가"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"내 캘린더 사용"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"일정"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"일정 설정"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"예약"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"특정 시간 동안 휴대전화 무음 설정"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"소리를 내는 방해 요소 허용"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"시각적 방해 차단"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"시각적 신호 허용"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"알림 허용 항목"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"집중"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"추가 작업"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"디스플레이 설정"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"디스플레이 옵션"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"어두운 테마 사용"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"어두운 배경에 밝은 텍스트를 표시하도록 OS와 앱을 전환합니다. 이렇게 하면 눈의 피로도를 낮출 수 있고, 일부 기기에서는 배터리를 크게 절약할 수 있습니다."</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="mode_notification_filter_title" msgid="443728483176031977">"방해 금지 필터링"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"방해 금지 필터링 안 함"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"사용하지 않는 카테고리 표시"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"사용하지 않는 카테고리 숨기기"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"모두"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time}까지 1시간 동안 알람만 허용으로 변경}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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"이름 변경"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"아이콘 변경"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"아이콘 변경"</string>
<string name="warning_button_text" msgid="1274234338874005639">"주의"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"닫기"</string>
<string name="device_feedback" msgid="5351614458411688608">"이 기기에 대한 의견 보내기"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB 개발자 옵션을 사용하기 전에 이 기기의 데이터 파티션을 ext4로 변환해야 합니다. 이 모드에서는 소프트웨어 무결성이 보장되지 않기 때문에 부트로더가 잠금 해제된 상태에서는 휴대전화에 저장된 모든 데이터가 위험에 노출될 수 있습니다. 16KB 옵션을 활성화하려면 이후에 한 번 더 재부팅해야 합니다. 이 모드에서는 한 번의 재부팅으로 4KB와 16KB 모드 사이를 오가며 전환할 수 있습니다. 이 모드에서는 일부 기능이 사용 중지되므로 일부 애플리케이션이 작동하지 않을 수 있습니다. 기기를 프로덕션 모드로 되돌리려면 4KB 모드로 다시 전환한 후 부트로더를 잠가야 하며, 이렇게 하면 기기가 초기화됩니다. 기기를 Android로 부팅 완료한 후에는 개발자 옵션에서 OEM 잠금 해제를 사용 중지하세요. 확인 후에는 기기가 완전 삭제되며 파일 시스템이 ext4로 변경됩니다. 이 과정을 완료한 후에는 다시 돌아와 16KB를 사용 설정하세요."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"모든 데이터 삭제"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"데이터 파티션을 ext4로 재포맷하고 완전 삭제할 수 없습니다."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB 모드에 필요한 부트로더 잠금 해제"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16KB 개발자 옵션을 사용하려면 이 기기의 부트로더가 잠금 해제되어 있어야 합니다. 이 모드에서는 소프트웨어 무결성이 보장되지 않기 때문에 부트로더가 잠금 해제된 상태에서 휴대전화에 저장된 모든 데이터가 위험에 노출될 수 있습니다. 16KB 모드를 활성화하면 모든 사용자 데이터와 설정이 완전 삭제됩니다. 부트로더가 잠금 해제되고 나서 16KB 옵션을 활성화하려면 두 번 재부팅해야 합니다. 이 모드에서는 한 번의 재부팅으로 4KB와 16KB 모드 사이를 오가며 전환할 수 있습니다. 이 모드에서는 일부 기능이 사용 중지되므로 일부 애플리케이션이 작동하지 않을 수 있습니다. 기기를 프로덕션 모드로 되돌리려면 4KB 모드로 다시 전환한 후 OEM/부트로더로 기기를 잠가 초기화해야 합니다. 부트로더를 잠금 해제한 후 다시 시도해 주세요. <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>에서 방법에 대한 안내를 참고하세요."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"페이지에 구속받지 않는 4KB 모드 사용"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"현재 페이지에 구속받지 않는 4KB 모드입니다. 이 모드에서는 소프트웨어 무결성이 보장되지 않기 때문에 부트로더가 잠금 해제된 상태에서는 휴대전화에 저장된 모든 데이터가 위험에 노출될 수 있습니다. 이 모드에서는 일부 기능이 사용 중지되므로 일부 애플리케이션이 작동하지 않을 수 있습니다. 프로덕션 모드로 다시 들어가려면 기기의 부트로더를 잠가야 합니다. 탭하여 자세히 알아보세요."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"현재 페이지에 구속받지 않는 4KB 모드입니다. 이 모드에서는 소프트웨어 무결성이 보장되지 않기 때문에 부트로더가 잠금 해제된 상태에서는 휴대전화에 저장된 모든 데이터가 위험에 노출될 수 있습니다. 이 모드에서는 일부 기능이 사용 중지되므로 일부 애플리케이션이 작동하지 않을 수 있습니다. 프로덕션 모드로 다시 들어가려면 기기의 부트로더를 잠가야 합니다. 이렇게 하면 기기가 다시 초기화되고 프로덕션 설정으로 복원됩니다. 기기를 Android로 부팅 완료한 후에는 개발자 옵션에서 OEM 잠금 해제를 사용 중지하세요. 기기가 Android로 부팅되지 않거나 불안정한 경우 <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>의 최신 공장 출고 시 이미지로 기기를 다시 플래시하거나 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>을 사용하여 \'Wipe Device\'(기기 완전 삭제), \'Lock Bootloader\'(부트로더 잠금), \'Force Flash all partitions\'(모든 파티션 강제 플래시)를 선택하세요."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"페이지에 구속받지 않는 16KB 모드 사용"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"현재 페이지에 구속받지 않는 16KB 모드입니다. 이 모드에서는 소프트웨어 무결성이 보장되지 않기 때문에 부트로더가 잠금 해제된 상태에서는 휴대전화에 저장된 모든 데이터가 위험에 노출될 수 있습니다. 이 모드에서는 일부 기능이 사용 중지되므로 일부 애플리케이션이 작동하지 않을 수 있습니다. 프로덕션 모드로 다시 들어가려면 4K 모드로 다시 전환한 후 기기의 부트로더를 잠가야 합니다. 탭하여 자세히 알아보세요."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"현재 페이지에 구속받지 않는 16KB 모드입니다. 이 모드에서는 소프트웨어 무결성이 보장되지 않기 때문에 부트로더가 잠금 해제된 상태에서 휴대전화에 저장된 모든 데이터가 위험에 노출될 수 있습니다. 이 모드에서는 일부 기능이 사용 중지되므로 일부 애플리케이션이 작동하지 않을 수 있습니다. 프로덕션 모드로 돌아가려면 4K 모드로 다시 전환한 후 기기의 부트로더를 잠가야 합니다. 이렇게 하면 기기가 다시 초기화되고 프로덕션 설정으로 복원됩니다. 기기를 Android로 부팅 완료한 후에는 개발자 옵션에서 OEM 잠금 해제를 사용 중지하세요. 기기가 Android로 부팅되지 않거나 불안정한 경우 <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>의 최신 공장 출고 시 이미지로 기기를 다시 플래시하거나 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>을 사용하여 \'Wipe Device\'(기기 완전 삭제), \'Lock Bootloader\'(부트로더 잠금), \'Force Flash all partitions\'(모든 파티션 강제 플래시)를 선택하세요."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"페이지에 구속받지 않는 16KB 모드"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"자세히 알아보기"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"버그 신고 핸들러"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"여러 사용자 허용"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ky/arrays.xml b/res/values-ky/arrays.xml
index d63a292..9a1bf85 100644
--- a/res/values-ky/arrays.xml
+++ b/res/values-ky/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Уйку режими"</item>
+ <item msgid="4152450357280759894">"Унаа айдоо"</item>
+ <item msgid="7096549258219399423">"Сүңгүтүүчү"</item>
+ <item msgid="2760716776980432977">"Башкарылган"</item>
+ <item msgid="601734478369121764">"Жылдыз"</item>
+ <item msgid="6243809315432780521">"Жылнаама"</item>
+ <item msgid="4913577903148415331">"Убакыт"</item>
+ <item msgid="3653377604690057780">"Театр"</item>
+ <item msgid="3843711267408385410">"Гүл"</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 15001ec..2f8aadf 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Угуу аппаратынын параметрлери"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Ыкчам баскыч, угуу аппаратынын шайкештиги"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Алдын ала коюлган параметрлер"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Булар аудиолог тарабынан алдын ала коюлган параметрлер эмес"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Алдын ала коюлган параметрлер жаңыртылган жок"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудио түзмөк"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Аудио түзмөк жөнүндө"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Кулпуну саат менен ачуу тууралуу кеңири маалымат"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Саат кошуу"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Саатты өчүрүү"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Манжа изи жана Жүзүнөн таанып ачуу"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Түзмөктү жүз жана манжа изи менен ачуу"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Жумуш профилинде жүз жана манжа изи менен ачуу функциясы"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Коюу керек"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Жүз жана манжа изи кошулду"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Түзмөк өчүп күйсүнбү?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC\'нин толук таржымалы иштеп чыгуу максатында гана колдонулат. NFC тууралуу кошумча маалыматта мүчүлүштүктөр тууралуу кабарлар жана купуя маалымат камтылышы мүмкүн. Бул параметрди өзгөртүү үчүн түзмөгүңүздү өчүрүп күйгүзүңүз."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Өчүрүп күйгүзүү"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Тышкы экранга чыгаруу"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"күзгү"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Зымсыз мониторду иштетүү"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Ыңгайлаштырылуучу"</string>
<string name="brightness" msgid="6216871641021779698">"Жарык деңгээли"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Ыңгайлашуучу жарык"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Ыңгайлаштырылуучу жарык жөнүндө"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Экрандын жарыктыгы жүргөн жериңизге жана аткарган ишиңизге жараша автоматтык түрдө өзгөрөт. Сыдырманы колуңуз менен сыдырып, жарыкты өзүңүз каалагандай ыңгайлаштырып алыңыз."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Күйүк"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Өчүк"</string>
@@ -1212,7 +1242,7 @@
<string name="adaptive_sleep_privacy" msgid="7664570136417980556">"\"Ыңгайлашуучу көшүү режими\" экранды кимдир-бирөө карап жатканын текшерүү үчүн маңдайкы камераны колдонот. Ал түзмөктө иштеп, сүрөттөрдү эч качан сактап калбайт жана Google\'га жөнөтпөйт."</string>
<string name="adaptive_sleep_contextual_slice_title" msgid="7467588613212629758">"Ыңгайл. көшүү режимин күйгүзүү"</string>
<string name="adaptive_sleep_contextual_slice_summary" msgid="2993867044745446094">"Экранды карап турганда, өчпөйт"</string>
- <string name="power_consumption_footer_summary" msgid="4901490700555257237">"Экран өчө турган убакыт узак болсо, батарея көбүрөөк сарпталат."</string>
+ <string name="power_consumption_footer_summary" msgid="4901490700555257237">"Экран көпкө чейин өчпөсө, батарея тез отуруп калышы мүмкүн."</string>
<string name="auto_rotate_camera_lock_title" msgid="5369003176695105872">"Камера кулпуланган"</string>
<string name="auto_rotate_camera_lock_summary" msgid="5699491516271544672">"Жүздү аныктоо үчүн камеранын кулпусун ачуу керек"</string>
<string name="adaptive_sleep_camera_lock_summary" msgid="8417541183603618098">"Ыңгайлашуучу көшүү режимин колдонуу үчүн камеранын кулпусун ачуу керек"</string>
@@ -1924,11 +1954,11 @@
<string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Дагы параметрлерди көрүү үчүн сенсордук тактанын ылдыйкы оң бурчун таптаңыз"</string>
<string name="trackpad_pointer_speed" msgid="7786579408631352625">"Көрсөткүчтүн ылдамдыгы"</string>
<string name="pointer_fill_style" msgid="8413840032931637595">"Көрсөткүчтү толтуруу стили"</string>
- <string name="pointer_fill_style_black_button" msgid="4540815366995820960">"Көрсөткүчтү толтуруу стилин карага өзгөртүү"</string>
- <string name="pointer_fill_style_green_button" msgid="3731413496528067979">"Көрсөткүчтү толтуруу стилин жашылга өзгөртүү"</string>
- <string name="pointer_fill_style_yellow_button" msgid="5025969961559379024">"Көрсөткүчтү толтуруу стилин сарыга өзгөртүү"</string>
- <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_black_button" msgid="4540815366995820960">"Толтуруу стилин карага өзгөртүү"</string>
+ <string name="pointer_fill_style_green_button" msgid="3731413496528067979">"Толтуруу стилин жашылга өзгөртүү"</string>
+ <string name="pointer_fill_style_yellow_button" msgid="5025969961559379024">"Толтуруу стилин сарыга өзгөртүү"</string>
+ <string name="pointer_fill_style_pink_button" msgid="4106218142489635673">"Толтуруу стилин күлгүнгө өзгөртүү"</string>
+ <string name="pointer_fill_style_blue_button" msgid="5594958078854032785">"Толтуруу стилин көккө өзгөртүү"</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>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Баары бир улантуу"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Жок"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Чоңойтуу параметрлери"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Бир манжа менен жылдыруу"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Чоңойтуу аймагын бир манжаңыз менен сүйрөп жылдырыңыз."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Чоңойтуу аймагын эки манжаңыз менен сүйрөп жылдырыңыз."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Экрандын бир бөлүгүн гана чоңойткондо жеткиликсиз"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Чоңойтуп/кичирейтүү үчүн баскычты басыңыз"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Экранды оңой чоңойто аласыз"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Жакындатуу үчүн:</b><br/> {0,number,integer}. Чоңойтуу режимин иштетүү үчүн ыкчам баскычты басыңыз<br/> {1,number,integer}. Экранды басыңыз<br/> {2,number,integer}. Экрандын башка бөлүгүнө 2 манжаңыз менен жылыңыз<br/> {3,number,integer}. Чоңойтуп/кичирейтүү үчүн 2 манжаңызды бириктириңиз<br/> {4,number,integer}. Чоңойтуу режиминен чыгуу үчүн ыкчам баскычты басыңыз<br/><br/> <b>Убактылуу жакындатуу үчүн:</b><br/> {0,number,integer}. Чоңойтуу режими толук экранга орнотулганын текшериңиз<br/> {1,number,integer}. Чоңойтуу режимин иштетүү үчүн ыкчам баскычты басыңыз<br/> {2,number,integer}. Экрандын бир жерин коё бербей басып туруңуз<br/> {3,number,integer}. Экрандын башка бөлүгүнө манжаңыз менен жылыңыз<br/> {4,number,integer}. Чоңойтуу режиминен чыгуу үчүн манжаңызды көтөрүп коюңуз"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Бул функциянын жардамы менен, экрандагы нерсени чоңойтуп, кичирейте аласыз.\n\n"<b>"Чоңойткуңуз келсе"</b>", кызматты иштетип туруп, экрандын бир жерин басыңыз.\n"<ul><li>"Чоңойгон жерди ары-бери жылдырып көргүңүз келсе, экранды эки же үч манжаңыз менен сүрүңүз."</li>\n<li>"Чоңойтуп/кичирейтүү үчүн эки же үч манжаңызды бириктирип/ажыратыңыз."</li></ul>\n\n<b>"Убактылуу чоңойтуп/кичирейтүү үчүн"</b>" кызматты иштетип, экрандын бир жерин коё бербей басып туруңуз.\n"<ul><li>"Экранды жылдырып көрүү үчүн аны манжаңыз менен сүрүңүз."</li>\n<li>"Кызматты өчүрүү үчүн манжаңызды көтөрүңүз."</li></ul>\n\n"Баскычтопто же чабыттоо тилкесинде көрүнүш чоңойбойт."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> ичинен <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>-барак"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Атайын мүмкүнчүлүктөр ыкчам баскычы"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Маанилүүлүк режимдери"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Маанилүү байланыштар менен колдонмолордон гана билдирмелерди алып турасыз"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Иштетүү түрүн тандоо"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Убакыт"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Мис., \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Жылнаама"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Мис., \"Жеке жылнаама\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Билдирмелерди чектөө"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Ырааттамаларды өчүрүү"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Өчүрүү"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Жылнаама кошуу"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Жылнааманы колдонуу"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"График"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"График түзүү"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ырааттама"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Телефондун үнүн өчүрүүнү жөндөө"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Үнү чыккан билдирмелерге уруксат берүү"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Визуалдык билдирмелерди бөгөттөө"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Визуалдык сигнал иштетилсин"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Сиз ала турган билдирмелер"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Алагды болбоңуз"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Кошумча аракеттер"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Көрүнүш параметрлери"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Көрүнүш параметрлери"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"караңгы теманы иштетүү"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Текстти күңүрт фондо ачык түстө көрүү үчүн OS менен колдонмолорду которуңуз. Бул көзүңүзгө доо кетирбей, айрым түзмөктөрдө батареяны олуттуу үнөмдөөгө жардам бериши мүмкүн"</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="mode_notification_filter_title" msgid="443728483176031977">"Билдирмелерди чыпкалоо"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Билдирмелер чыпкаланган жок"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Колдонулбаган категорияларды көрсөтүү"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Колдонулбаган категорияларды жашыруу"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Баары"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Аталышын өзгөртүү"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Сүрөтчөнү өзгөртүү"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Сүрөтчөнү өзгөртүү"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Эскертүү"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Жабуу"</string>
<string name="device_feedback" msgid="5351614458411688608">"Түзмөк тууралуу пикир билдирүү"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Бул түзмөктүн маалымат камтылган катуу диск бөлүгү 16Kб өлчөмүндөгү иштеп чыгуучунун параметрин колдонуудан мурун ext4 форматына өзгөртүлүшү керек. Бул режимде программанын бүтүндүгүнө кепилдик берилбейт. Операциялык тутумду жүктөгүчтүн кулпусу ачылып турганда телефондо сакталган бардык маалыматтар коркунучта болушу мүмкүн. 16Kб параметрин иштетүү үчүн дагы бир жолу өчүрүп-күйгүзүү талап кылынат. Бул режимге өткөндөн кийин, бир жолу өчүрүп-күйгүзүү менен 4Kб жана 16Kб режимдеринин арасында которула аласыз. Бул режимдерде айрым функциялар өчүрүлөт, андыктан кээ бир колдонмолор иштебей калышы мүмкүн. Түзмөктү өндүрүш режимине кайтаруу үчүн кайра 4Кб режимине которулуп, түзмөктү баштапкы абалга келтирген операциялык тутумду жүктөгүчтү кулпулашыңыз керек болот. Түзмөк Android\'ге ийгиликтүү жүктөлгөндөн кийин, иштеп чыгуучунун параметрлеринен OEM ачууну өчүрүңүз. Ырастоодон кийин түзмөк тазаланат жана файл системасы ext4 форматына өзгөртүлөт. Бул процесс аяктагандан кийин, 16Кб режимин кайра иштетүү үчүн кайтыңыз."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Бардык нерселерди өчүрүү"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Кайра форматталбай жана катуу диск бөлүгүндөгү маалымат ext4 үчүн тазаланбай калды."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16Kб режими үчүн операциялык тутумду жүктөгүчтүн кулпусун ачуу талап кылынат"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Беттин өлчөмүн 16 кБка өзгөртүп, иштеп чыгуучуларга арналган параметрди колдонуудан мурун, түзмөктөгү операциялык системаны жүктөгүчтүн кулпусун ачыңыз. Бул режимде программанын бүтүндүгүнө кепилдик бере албайбыз. Операциялык системаны жүктөгүчтүн кулпусу ачылып турганда телефондо сакталган бардык нерселер коркунучта болушу мүмкүн. Беттин өлчөмүн 16 кБ көбөйткөндө, колдонуучунун бардык нерселери жана параметрлери өчүп калат. Операциялык системаны жүктөгүчтүн кулпусу ачылгандан кийин түзмөктү эки жолу өчүрүп күйгүзүшүңүз керек. Бул режимде беттин өлчөмүн 4 кБтан 16 кБка которуу үчүн түзмөктү бир жолу өчүрүп күйгүзүшүңүз керек. Кээ бир функциялар өчүп калгандыктан, айрым колдонмолор иштебей калышы мүмкүн. Түзмөктү баштапкы абалга кайтаруу үчүн беттин өлчөмүн кайра 4 кБ режимине которуп, операциялык системаны жүктөгүчтү кулпулашыңыз керек. Операциялык системаны жүктөгүчтүн кулпусун ачып, кайталап көрүңүз. Бул жөнүндө кененирээк маалымат алгыңыз келсе, бул жерге өтүңүз: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Беттен көз карандысыз 4Кб өлчөмүндөгү режимди колдонуу"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Беттен көз карандысыз режиминин 4Кб өлчөмүндөгү режиминдесиз. Бул режимде программанын бүтүндүгүнө кепилдик берилбейт. Операциялык тутумду жүктөгүчтүн кулпусу ачылып турганда телефондо сакталган бардык маалыматтар коркунучта болушу мүмкүн. Бул режимдерде айрым функциялар өчүрүлөт, андыктан кээ бир колдонмолор иштебей калышы мүмкүн. Өндүрүш режимине кайра кирүү үчүн, түзмөктүн операциялык тутумунун жүктөгүчүн кулпулашыңыз керек. Көбүрөөк окуу үчүн таптаңыз."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Беттен көз карандысыз режиминин 4Кб өлчөмүндөгү режиминдесиз. Бул режимде программанын бүтүндүгүнө кепилдик берилбейт. Операциялык тутумду жүктөгүчтүн кулпусу ачылып турганда телефондо сакталган бардык маалыматтар коркунучта болушу мүмкүн. Бул режимдерде айрым функциялар өчүрүлөт, андыктан кээ бир колдонмолор иштебей калышы мүмкүн. Өндүрүш режимине кайра кирүү үчүн, түзмөктүн операциялык тутумунун жүктөгүчүн кулпулашыңыз керек. Бул түзмөктү кайра баштапкы абалга келтирип, өндүрүш параметрлерине кайтарат. Түзмөк Android\'ге ийгиликтүү жүктөлгөндөн кийин, иштеп чыгуучунун параметрлеринен OEM ачууну өчүрүңүз. Түзмөк Android\'ге жүктөлбөй калса же туруксуз болсо, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> дарегиндеги баштапкы сүрөттөр менен акыркы версияга кайтарып, \"Түзмөктү тазалоо\", \"Операциялык тутумду жүктөгүчтү кулпулоо\" жана \'Бардык бөлүктөрүн мажбурлап программалоо\" параметрлерин тандаңыз."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 кБ өлчөмүндөгү бетке байланышпаган режимди колдонуу"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Беттен көз карандысыз режимдин 16Кб режиминдесиз. Бул режимде программанын бүтүндүгүнө кепилдик берилбейт. Операциялык тутумду жүктөгүчтүн кулпусу ачылып турганда телефондо сакталган бардык маалыматтар коркунучта болушу мүмкүн. Бул режимдерде айрым функциялар өчүрүлөт, андыктан кээ бир колдонмолор иштебей калышы мүмкүн. Өндүрүш режимине кайра кирүү үчүн 4Кб режимине кайтып, андан кийин түзмөктүн операциялык тутумунун жүктөгүчүн кулпулашыңыз керек. Көбүрөөк окуу үчүн таптаңыз."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"16 кБ өлчөмдүү беттин эс тутумуна байланышпаган режимде иштеп жатасыз. Бул режимде программанын бүтүндүгүнө кепилдик бере албайбыз. Операциялык системаны жүктөгүчтүн кулпусу ачылып турганда, телефондо сакталган бардык нерселер коркунучта мүмкүн. Бул режимдерде айрым функциялар өчүрүлгөндүктөн, кээ бир колдонмолор иштебей калышы мүмкүн. Өндүрүш режимине кайтуу үчүн беттин өлчөмүн 4 кБ чейин азайтып, түзмөктүн операциялык системасын жүктөгүчтү кулпулап коюңуз. Натыйжада, түзмөктүн параметрлери баштапкы абалга коюлат. Android ишке киргизилгенден кийин, иштеп чыгуучунун параметрлеринен жүктөгүчтү кулпулап коюңуз. Түзмөк жакшы иштебей же Android ишке киргизилбей жатса, түзмөктү тазалап салыңыз. Ал үчүн <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> же use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> дарегиндеги баштапкы сүрөттөрдү колдонуңуз. Андан соң \"Түзмөктү тазалоо\", \"Операциялык системаны жүктөгүчтү кулпулоо\" жана \'Бардык бөлүмдөрдү мажбурлап программалоо\" параметрлерин тандаңыз."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Беттен көз карандысыз 16Кб өлчөмүндөгү режим"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Дагы окуу"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Мүчүлүштүк тууралуу кабар берүүнү иштеткич"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Бир нече колдонуучуга уруксат берүү"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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">"Мүчүлүштүктөрдү Wi-Fi аркылуу оңдоону колдонуу"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-lo/arrays.xml b/res/values-lo/arrays.xml
index 225ac31..8c5f677 100644
--- a/res/values-lo/arrays.xml
+++ b/res/values-lo/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ເວລານອນ"</item>
+ <item msgid="4152450357280759894">"ການຂັບຂີ່"</item>
+ <item msgid="7096549258219399423">"ສົມຈິງ"</item>
+ <item msgid="2760716776980432977">"ທີ່ມີການຈັດການ"</item>
+ <item msgid="601734478369121764">"ດາວ"</item>
+ <item msgid="6243809315432780521">"ປະຕິທິນ"</item>
+ <item msgid="4913577903148415331">"ເວລາ"</item>
+ <item msgid="3653377604690057780">"ໂຮງລະຄອນ"</item>
+ <item msgid="3843711267408385410">"ດອກໄມ້"</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 eabf159..8664b2b 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ການຕັ້ງຄ່າອຸປະກອນຊ່ວຍຟັງ"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ທາງລັດ, ການໃຊ້ຮ່ວມກັນໄດ້ຂອງເຄື່ອງຊ່ວຍຟັງ"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ຄ່າທີ່ກຳນົດລ່ວງໜ້າ"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ບໍ່ມີພຣີເຊັດທີ່ນັກສຳຜັດວິທະຍາຂອງທ່ານຕັ້ງໂປຣແກຣມໄວ້"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ບໍ່ສາມາດອັບເດດການຕັ້ງຄ່າລ່ວງໜ້າໄດ້"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ເອົ້າພຸດສຽງ"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ກ່ຽວກັບເອົ້າພຸດສຽງ"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ສຶກສາເພີ່ມເຕີມກ່ຽວກັບການປົດລັອກດ້ວຍໂມງ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ເພີ່ມໂມງ"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ລຶບໂມງອອກ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ປົດລັອກດ້ວຍລາຍນິ້ວມື ແລະ ໜ້າ"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ປົດລັອກດ້ວຍໜ້າ ແລະ ລາຍນິ້ວມື"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ການປົດລັອກດ້ວຍໜ້າ ແລະ ລາຍນິ້ວມືສຳລັບການເຮັດວຽກ"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ຕ້ອງຕັ້ງຄ່າ"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ເພີ່ມໜ້າ ແລະ ລາຍນິ້ວມືແລ້ວ"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ຣີສະຕາດອຸປະກອນບໍ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ການບັນທຶກລາຍລະອຽດຂອງ NFC ແມ່ນສຳລັບຈຸດປະສົງການພັດທະນາເທົ່ານັ້ນ. ຂໍ້ມູນເພີ່ມເຕີມຂອງ NFC ຈະຮວມຢູ່ໃນລາຍງານຂໍ້ຜິດພາດ, ເຊິ່ງອາດມີຂໍ້ມູນສ່ວນຕົວ. ຣີສະຕາດອປະກອນເພື່ອປ່ຽນການຕັ້ງຄ່ານີ້."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ຣີສະຕາດ"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ການສົ່ງສັນຍານ"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ແວ່ນສະທ້ອນ"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ເປີດໃຊ້ງານການສະແດງພາບໄຮ້ສາຍ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ປັບປ່ຽນໄດ້"</string>
<string name="brightness" msgid="6216871641021779698">"ລະດັບຄວາມແຈ້ງ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"ປັບຄວາມແຈ້ງອັດຕະໂນມັດ"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"ກ່ຽວກັບຄຸນສົມບັດປັບຄວາມແຈ້ງອັດຕະໂນມັດ"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"ຄວາມແຈ້ງໜ້າຈໍຂອງທ່ານຈະຖືກປັບໂດຍອັດຕະໂນມັດໂດຍອ້າງອີງຈາກສະພາບແວດລ້ອມ ແລະ ກິດຈະກຳທີ່ທ່ານເຮັດ. ທ່ານສາມາດຍ້າຍຕົວເລື່ອນດ້ວຍຕົນເອງເພື່ອຊ່ວຍໃຫ້ລະບົບຮຽນຮູ້ການຕັ້ງຄ່າຂອງທ່ານໄດ້."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ເປີດ"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ປິດ"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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">"Send vibration to game controller when connected"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ຢືນຢັນດຳເນີນການຕໍ່"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ຍົກເລີກ"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ການຕັ້ງຄ່າການຂະຫຍາຍ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ການເລື່ອນດ້ວຍນິ້ວດຽວ"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ຍ້າຍພື້ນທີ່ການຂະຫຍາຍໂດຍການລາກໜຶ່ງນິ້ວ."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ຍ້າຍພື້ນທີ່ການຂະຫຍາຍໂດຍການລາກສອງນິ້ວ."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"ບໍ່ສາມາດໃຊ້ໄດ້ໃນລະຫວ່າງທີ່ກຳລັງຂະຫຍາຍພາກສ່ວນຂອງໜ້າຈໍ"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ແຕະປຸ່ມເພື່ອຊູມ"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ຊູມເຂົ້າໄວໆຢູ່ໜ້າຈໍເພື່ອເຮັດໃຫ້ເນື້ອຫາໃຫຍ່ຂຶ້ນ"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ເພື່ອຊູມເຂົ້າ:</b><br/> {0,number,integer}. ໃຊ້ທາງລັດເພື່ອເລີ່ມການຂະຫຍາຍ<br/> {1,number,integer}. ແຕະໃສ່ໜ້າຈໍ<br/> {2,number,integer}. ລາກ 2 ນິ້ວເພື່ອເລື່ອນໄປມາຢູ່ໜ້າຈໍ<br/> {3,number,integer}. ບີບດ້ວຍ 2 ນິ້ວເພື່ອປັບແກ້ການຊູມ<br/> {4,number,integer}. ໃຊ້ທາງລັດເພື່ອຢຸດການຂະຫຍາຍ<br/><br/><b>ເພື່ອຊູມເຂົ້າຊົ່ວຄາວ:</b><br/> {0,number,integer}. ກວດສອບວ່າປະເພດການຂະຫຍາຍຂອງທ່ານແມ່ນຕັ້ງເປັນເຕັມຈໍແລ້ວ<br/> {1,number,integer}. ໃຊ້ທາງລັດເພື່ອເລີ່ມການຂະຫຍາຍ<br/> {2,number,integer}. ແຕະຢູ່ບ່ອນໃດກໍໄດ້ຢູ່ໜ້າຈໍຄ້າງໄວ້<br/> {3,number,integer}. ລາກນິ້ວເພື່ອເລື່ອນໄປມາຢູ່ໜ້າຈໍ<br/> {4,number,integer}. ຍົກນິ້ວຂຶ້ນເພື່ອຢຸດການຂະຫຍາຍ"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"ເມື່ອເປີດໃຊ້ການຂະຫຍາຍແລ້ວ, ທ່ານສາມາດຊູມເຂົ້າຢູ່ໜ້າຈໍຂອງທ່ານໄດ້.\n\n"<b>"ເພື່ອຊູມ"</b>", ໃຫ້ເລີ່ມການຂະຫຍາຍ, ຈາກນັ້ນແຕະໃສ່ບ່ອນໃດກໍໄດ້ຢູ່ໜ້າຈໍ.\n"<ul><li>"ລາກ 2 ນິ້ວ ຫຼື ຫຼາຍກວ່ານັ້ນເພື່ອເລື່ອນ"</li>\n<li>"ຖ່າງ 2 ນິ້ວ ຫຼື ຫຼາຍກວ່ານັ້ນເພື່ອປັບແຕ່ງການຊູມ"</li></ul>\n\n<b>"ເພື່ອຊູມຊົ່ວຄາວ"</b>", ໃຫ້ເລີ່ມການຂະຫຍາຍ, ຈາກນັ້ນແຕະໃສ່ບ່ອນໃດກໍໄດ້ຢູ່ໜ້າຈໍຄ້າງໄວ້.\n"<ul><li>"ລາກເພື່ອຍ້າຍໄປມາຢູ່ໜ້າຈໍ"</li>\n<li>"ຍົກນິ້ວຂຶ້ນເພື່ອຊູມອອກ"</li></ul>\n\n"ທ່ານບໍ່ສາມາດຊູມໃສ່ແປ້ນພິມ ຫຼື ແຖບການນຳທາງໄດ້."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"ໜ້າທີ <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">"ທາງລັດຂອງປຸ່ມການຊ່ວຍເຂົ້າເຖິງ"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"ໂໝດຄວາມສຳຄັນ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ຮັບການແຈ້ງເຕືອນສະເພາະຄົນ ແລະ ແອັບສຳຄັນເທົ່ານັ້ນ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"ເລືອກປະເພດການເປີດການນຳໃຊ້"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"ເວລາ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ເຊັ່ນ: \"9:30 – 17:00 ໂມງ\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ປະຕິທິນ"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ເຊັ່ນ: \"ປະຕິທິນສ່ວນຕົວ\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"ຈຳກັດການລົບກວນ"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"ລຶບກຳນົດເວລາ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ລຶບ"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"ເພີ່ມປະຕິທິນ"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ໃຊ້ປະຕິທິນຂອງທ່ານ"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"ກຳນົດເວລາ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ຕັ້ງກຳນົດເວລາ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"ກຳນົດເວລາ"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ປິດສຽງໂທລະສັບໃນບາງເວລາ"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ອະນຸຍາດການລົບກວນທີ່ມີສຽງ"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ບລັອກການລົບກວນທາງພາບ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ອະນຸຍາດສັນຍານພາບ"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"ການແຈ້ງເຕືອນທີ່ທ່ານອາດໄດ້ຮັບ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ມີສະມາທິຢູ່ສະເໝີ"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"ຄຳສັ່ງເພີ່ມເຕີມ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ການຕັ້ງຄ່າການສະແດງຜົນ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ຕົວເລືອກການສະແດງຜົນ"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ເປີດການນຳໃຊ້ຮູບແບບສີສັນມືດ"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ສະຫຼັບລະບົບປະຕິບັດການ ແລະ ແອັບເພື່ອໃຊ້ຂໍ້ຄວາມສີອ່ອນເທິງພື້ນຫຼັງສີເຂັ້ມ, ເຊິ່ງອາດສະບາຍຕາຫຼາຍຂຶ້ນ ແລະ ຊ່ວຍປະຢັດແບັດເຕີຣີໄດ້ຫຼາຍໃນອຸປະກອນບາງປະເພດ"</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="mode_notification_filter_title" msgid="443728483176031977">"ກັ່ນຕອງການຂັດຈັງຫວະ"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"ບໍ່ໄດ້ກັ່ນຕອງການຂັດຈັງຫວະ"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ສະແດງໝວດໝູ່ທີ່ບໍ່ໄດ້ໃຊ້"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ເຊື່ອງໝວດໝູ່ທີ່ບໍ່ໄດ້ໃຊ້"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"ທັງໝົດ"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"ປ່ຽນຊື່"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ປ່ຽນໄອຄອນ"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ປ່ຽນໄອຄອນ"</string>
<string name="warning_button_text" msgid="1274234338874005639">"ຄໍາເຕືອນ"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"ປິດ"</string>
<string name="device_feedback" msgid="5351614458411688608">"ສົ່ງຄຳຕິຊົມກ່ຽວກັບອຸປະກອນນີ້"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"ພາທິຊັນຂໍ້ມູນຂອງອຸປະກອນນີ້ຈະຕ້ອງປ່ຽນແປງເປັນ ext4 ກ່ອນທີ່ຈະໃຊ້ຕົວເລືອກນັກພັດທະນາແບບ 16KB. ບໍ່ຮັບປະກັນຄວາມສົມບູນຂອງຊອບແວໃນໂໝດນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ຈັດເກັບໃນໂທລະສັບໃນລະຫວ່າງທີ່ bootloader ປົດລັອກຢູ່ອາດມີຄວາມສ່ຽງ. ການເປີດນຳໃຊ້ຕົວເລືອກ 16KB ຈະຕ້ອງມີການປິດເປີດໃໝ່ອີກເທື່ອໜຶ່ງຫຼັງຈາກນີ້. ເມື່ອທ່ານຢູ່ໃນໂໝດນີ້ແລ້ວ, ທ່ານສາມາດປ່ຽນໄປມາລະຫວ່າງໂໝດ 4KB ແລະ 16KB ໄດ້ໂດຍການປິດເປີດໃໝ່ເທື່ອດຽວ. ຄຸນສົມບັດບາງຢ່າງອາດຖືກປິດການນຳໃຊ້ໃນໂໝດເຫຼົ່ານີ້, ດັ່ງນັ້ນບາງແອັບພລິເຄຊັນຈຶ່ງອາດບໍ່ເຮັດວຽກ. ເພື່ອໃຫ້ອຸປະກອນກັບຄືນເປັນໂໝດໂປຣດັກຊັນ, ທ່ານຈະຕ້ອງປ່ຽນກັບໄປໃຊ້ໂໝດ 4KB ຈາກນັ້ນລັອກ bootloader, ເຊິ່ງຈະຣີເຊັດອຸປະກອນເປັນຄ່າຈາກໂຮງງານ. ຫຼັງຈາກທີ່ອຸປະກອນເປີດເຂົ້າເປັນ Android ໄດ້ສຳເລັດ, ໃຫ້ປິດການນຳໃຊ້ການປົດລັອກ OEM ໃນຕົວເລືອກນັກພັດທະນາ. ອຸປະກອນຈະຖືກລ້າງຂໍ້ມູນ ແລະ ລະບົບໄຟລ໌ຈະປ່ຽນເປັນ ext4 ຫຼັງຈາກການຢືນຢັນ. ຫຼັງຈາກການດຳເນີນການນີ້ສຳເລັດ, ກະລຸນາກັບຄືນມາເປີດການນຳໃຊ້ໂໝດ 16KB ອີກເທື່ອໜຶ່ງ."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ລຶບຂໍ້ມູນທັງໝົດ"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ຟໍແມັດໃໝ່ ແລະ ລ້າງພາທິຊັນຂໍ້ມູນເປັນ ext4 ບໍ່ສຳເລັດ."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"ຕ້ອງປົດລັອກ Bootloader ສຳລັບໂໝດ 16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"ອຸປະກອນນີ້ຕ້ອງມີການປົດລັອກ bootloader ກ່ອນທີ່ຈະໃຊ້ຕົວເລືອກນັກພັດທະນາແບບ 16KB. ບໍ່ຮັບປະກັນຄວາມສົມບູນຂອງຊອບແວໃນໂໝດນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ຈັດເກັບໃນໂທລະສັບໃນລະຫວ່າງທີ່ bootloader ປົດລັອກຢູ່ອາດມີຄວາມສ່ຽງ. ຂໍ້ມູນຜູ້ໃຊ້ ແລະ ການຕັ້ງຄ່າທັງໝົດຈະຖືກລ້າງເມື່ອເປີດນຳໃຊ້ໂໝດ 16KB. ເມື່ອປົດລັອກ bootloader ແລ້ວ, ການເປີດນຳໃຊ້ຕົວເລືອກ 16KB ຈະຕ້ອງມີການປິດເປີດໃໝ່ສອງເທື່ອ. ເມື່ອທ່ານຢູ່ໃນໂໝດນີ້ແລ້ວ, ທ່ານສາມາດປ່ຽນໄປມາລະຫວ່າງໂໝດ 4KB ແລະ 16KB ໄດ້ໂດຍການປິດເປີດໃໝ່ເທື່ອດຽວ. ຄຸນສົມບັດບາງຢ່າງອາດຖືກປິດການນຳໃຊ້ໃນໂໝດເຫຼົ່ານີ້, ດັ່ງນັ້ນບາງແອັບພລິເຄຊັນຈຶ່ງອາດບໍ່ເຮັດວຽກ. ເພື່ອໃຫ້ອຸປະກອນກັບຄືນເປັນໂໝດໂປຣດັກຊັນ, ທ່ານຈະຕ້ອງປ່ຽນກັບໄປໃຊ້ໂໝດ 4KB ຈາກນັ້ນລັອກ OEM/bootloader (ເຊິ່ງຈະຣີເຊັດອຸປະກອນເປັນຄ່າຈາກໂຮງງານ). ກະລຸນາປົດລັອກ bootloader ແລ້ວລອງໃໝ່. ທ່ານສາມາດເບິ່ງຄຳແນະນຳສຳລັບວິທີການນີ້ໄດ້ຢູ່ <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"ກຳລັງໃຊ້ໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ ໂດຍໃຊ້ຂະໜາດ 4KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"ທ່ານຢູ່ໃນໂໝດ 4KB ຂອງໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ. ບໍ່ຮັບປະກັນຄວາມສົມບູນຂອງຊອບແວໃນໂໝດນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ຈັດເກັບໃນໂທລະສັບໃນລະຫວ່າງທີ່ bootloader ປົດລັອກຢູ່ອາດມີຄວາມສ່ຽງ. ຄຸນສົມບັດບາງຢ່າງອາດຖືກປິດການນຳໃຊ້ໃນໂໝດເຫຼົ່ານີ້, ດັ່ງນັ້ນບາງແອັບພລິເຄຊັນຈຶ່ງອາດບໍ່ເຮັດວຽກ. ເພື່ອກັບຄືນເປັນໂໝດໂປຣດັກຊັນອີກເທື່ອໜຶ່ງ, ທ່ານຕ້ອງລັອກ bootloader ຂອງອຸປະກອນ. ແຕະເພື່ອອ່ານເພີ່ມເຕີມ."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"ທ່ານຢູ່ໃນໂໝດ 4KB ຂອງໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ. ບໍ່ຮັບປະກັນຄວາມສົມບູນຂອງຊອບແວໃນໂໝດນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ຈັດເກັບໃນໂທລະສັບໃນລະຫວ່າງທີ່ bootloader ປົດລັອກຢູ່ອາດມີຄວາມສ່ຽງ. ຄຸນສົມບັດບາງຢ່າງອາດຖືກປິດການນຳໃຊ້ໃນໂໝດເຫຼົ່ານີ້, ດັ່ງນັ້ນບາງແອັບພລິເຄຊັນຈຶ່ງອາດບໍ່ເຮັດວຽກ. ເພື່ອກັບຄືນເປັນໂໝດໂປຣດັກຊັນອີກເທື່ອໜຶ່ງ, ທ່ານຕ້ອງລັອກ bootloader ຂອງອຸປະກອນ. ການດຳເນີນການນີ້ຈະຣີເຊັດອຸປະກອນເປັນຄ່າຈາກໂຮງງານອີກເທື່ອໜຶ່ງ ແລະ ກູ້ຄືນເປັນການຕັ້ງຄ່າໂປຣດັກຊັນ. ຫຼັງຈາກທີ່ອຸປະກອນເປີດເຂົ້າເປັນ Android ໄດ້ສຳເລັດ, ໃຫ້ປິດການນຳໃຊ້ການປົດລັອກ OEM ໃນຕົວເລືອກນັກພັດທະນາ. ຫາກອຸປະກອນບໍ່ສາມາດເປີດເຂົ້າເປັນ Android ຫຼື ບໍ່ສະຖຽນ, ໃຫ້ແຟລຊອຸປະກອນອີກເທື່ອໜຶ່ງໂດຍໃຊ້ຮູບພາບໂຮງງານຫຼ້າສຸດຈາກ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ຫຼື ໃຊ້ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ແລະ ເລືອກ \'ລ້າງຂໍ້ມູນອຸປະກອນ\', \'ລັອກ Bootloader\' ແລະ \'ບັງຄັບໃຫ້ແຟລຊທຸກພາທິຊັນ\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"ກຳລັງໃຊ້ໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ ໂດຍໃຊ້ຂະໜາດ 16KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"ທ່ານຢູ່ໃນໂໝດ 16KB ຂອງໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ. ບໍ່ຮັບປະກັນຄວາມສົມບູນຂອງຊອບແວໃນໂໝດນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ຈັດເກັບໃນໂທລະສັບໃນລະຫວ່າງທີ່ bootloader ປົດລັອກຢູ່ອາດມີຄວາມສ່ຽງ. ຄຸນສົມບັດບາງຢ່າງອາດຖືກປິດການນຳໃຊ້ໃນໂໝດເຫຼົ່ານີ້, ດັ່ງນັ້ນບາງແອັບພລິເຄຊັນຈຶ່ງອາດບໍ່ເຮັດວຽກ. ເພື່ອກັບຄືນເປັນໂໝດໂປຣດັກຊັນອີກເທື່ອໜຶ່ງ, ທ່ານຕ້ອງປ່ຽນກັບໄປໃຊ້ໂໝດ 4K ຈາກນັ້ນລັອກ bootloader ຂອງອຸປະກອນ. ແຕະເພື່ອອ່ານເພີ່ມເຕີມ."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"ທ່ານຢູ່ໃນໂໝດ 16KB ຂອງໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ. ບໍ່ຮັບປະກັນຄວາມສົມບູນຂອງຊອບແວໃນໂໝດນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ຈັດເກັບໃນໂທລະສັບໃນລະຫວ່າງທີ່ bootloader ປົດລັອກຢູ່ອາດມີຄວາມສ່ຽງ. ຄຸນສົມບັດບາງຢ່າງອາດຖືກປິດການນຳໃຊ້ໃນໂໝດເຫຼົ່ານີ້, ດັ່ງນັ້ນບາງແອັບພລິເຄຊັນຈຶ່ງອາດບໍ່ເຮັດວຽກ. ເພື່ອກັບຄືນເປັນໂໝດໂປຣດັກຊັນອີກເທື່ອໜຶ່ງ, ທ່ານຕ້ອງປ່ຽນກັບໄປໃຊ້ໂໝດ 4K ຈາກນັ້ນລັອກ bootloader ຂອງອຸປະກອນ. ການດຳເນີນການນີ້ຈະຣີເຊັດອຸປະກອນເປັນຄ່າຈາກໂຮງງານອີກເທື່ອໜຶ່ງ ແລະ ກູ້ຄືນເປັນການຕັ້ງຄ່າໂປຣດັກຊັນ. ຫຼັງຈາກທີ່ອຸປະກອນເປີດເຂົ້າເປັນ Android ໄດ້ສຳເລັດ, ໃຫ້ປິດການນຳໃຊ້ການປົດລັອກ OEM ໃນຕົວເລືອກນັກພັດທະນາ. ຫາກອຸປະກອນບໍ່ສາມາດເປີດເຂົ້າເປັນ Android ຫຼື ບໍ່ສະຖຽນ, ໃຫ້ແຟລຊອຸປະກອນອີກເທື່ອໜຶ່ງໂດຍໃຊ້ຮູບພາບໂຮງງານຫຼ້າສຸດຈາກ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ຫຼື ໃຊ້ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ແລະ ເລືອກ \'ລ້າງຂໍ້ມູນອຸປະກອນ\', \'ລັອກ Bootloader\' ແລະ \'ບັງຄັບໃຫ້ແຟລຊທຸກພາທິຊັນ\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"ໂໝດບໍ່ເນັ້ນການໃຊ້ໜ້າ ໂດຍໃຊ້ຂະໜາດ 16KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ອ່ານເພີ່ມເຕີມ"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ເຄື່ອງຈັດການລາຍງານຂໍ້ຜິດພາດ"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"ອະນຸຍາດຜູ້ໃຊ້ຫຼາຍຄົນ"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index 4560705..004822f 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Laikas miegoti"</item>
+ <item msgid="4152450357280759894">"Vairavimas"</item>
+ <item msgid="7096549258219399423">"Įtraukiantis"</item>
+ <item msgid="2760716776980432977">"Tvarkoma"</item>
+ <item msgid="601734478369121764">"Žvaigždė"</item>
+ <item msgid="6243809315432780521">"Kalendorius"</item>
+ <item msgid="4913577903148415331">"Laikas"</item>
+ <item msgid="3653377604690057780">"Teatras"</item>
+ <item msgid="3843711267408385410">"Gėlė"</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 bd1bdaf..65e53ee 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Klausos įrenginio nustatymai"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Spartusis klavišas, klausos aparato suderinamumas"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Išankstiniai nustatymai"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Nėra jūsų audiologo suprogramuotų išankstinių nustatymų"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Išankstinių nustatymų atnaujinti nepavyko"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Garso išvestis"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Apie garso išvestį"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Sužinokite daugiau apie funkciją „Laikrodžio atrakinimas“"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Pridėti laikrodį"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Pašalinti laikrodį"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Atrakinimas piršto atspaudu ir pagal veidą"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Atrakinimas pagal veidą ir piršto atspaudu"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Atrakinimas pagal veidą ir piršto atspaudu darbe"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Reikia nustatyti"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Pridėtas veidas ir kontroliniai kodai"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Įdiekite programų"</b>\n"Įdiekite programų, kurias norite laikyti privačiai savo erdvėje"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Ką verta atminti"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Programos sustabdomos, kai užrakinate erdvę"</b>\n"Kai užrakinate erdvę, erdvėje esančios programos sustabdomos ir negaunate iš jų pranešimų"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privačios erdvės netinkamos programoms, kurios turi veikti fone ar siųsti svarbius pranešimus, pvz., medicinos programoms. Taip yra todėl, kad pranešimai ir veikla fone sustabdomi, užrakinus erdvę.\n\nProgramos privačioje erdvėje nebus rodomos leidimų tvarkytuvėje, privatumo informacijos suvestinėje ir kituose nustatymuose, kai privati erdvė bus užrakinta.\n\nPrivačios erdvės negalima perkelti į naują įrenginį. Turėsite nustatyti kitą privačią erdvę, jei norėsite ją naudoti kitame įrenginyje.\n\nBet kuris naudotojas, prijungęs jūsų įrenginį prie kompiuterio ar įdiegęs žalingų programų įrenginyje, galės pasiekti jūsų privačią erdvę."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privačios erdvės netinkamos programoms, kurios turi veikti fone ar siųsti svarbius pranešimus, pvz., medicinos programoms. Taip yra todėl, kad pranešimai ir veikla fone sustabdomi, užrakinus erdvę.\n\nProgramos privačioje erdvėje nebus rodomos leidimų tvarkytuvėje, privatumo informacijos suvestinėje ir kituose nustatymuose, kai privati erdvė bus užrakinta.\n\nPrivačios erdvės negalima atkurti naujame įrenginyje. Jei norite ją naudoti kitame įrenginyje, reikės sukurti kitą erdvę.\n\nAsmenys, prijungę jūsų įrenginį prie kompiuterio ar įrenginyje įdiegę kenkėjiškų programų, gali pasiekti jūsų privačią erdvę."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Sužinokite daugiau apie privačią erdvę"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Tai užtruks kelias akimirkas"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Nustatoma privati erdvė…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Paleisti įrenginį iš naujo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Išsamių NFC duomenų įrašymas gali būti naudojamas tik kuriant produktą. Į pranešimus apie riktus įtraukiama papildomų NFC duomenų, kuriuose gali būti privačios informacijos. Jei norite pakeisti šį nustatymą, paleiskite įrenginį iš naujo."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Paleisti iš naujo"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Perdavimas"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ekrano vaizdo bendrinimas"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Įgalinti belaidį rodymą"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Prisitaikanti"</string>
<string name="brightness" msgid="6216871641021779698">"Šviesumo lygis"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Prisitaikantis šviesumas"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Apie prisitaikantį šviesumą"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Ekrano šviesumas automatiškai prisitaikys prie jūsų aplinkos ir veiklos. Galite šliaužiklį perkelti patys, kad prisitaikantis šviesumas įsimintų jūsų nuostatas."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Įjungta"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Išjungta"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Pasirinktas naudotojo: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Kalba"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Žymiklio greitis"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Žaidimų valdiklis"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Nukreipti vibravimą"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Siųsti vibraciją į žaidimų valdiklį, kai jis prijungtas"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Vis tiek tęsti"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Atšaukti"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Didinimo nustatymai"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Stumdymas vienu pirštu"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Perkelkite didinimo sritį vilkdami vienu pirštu."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Perkelkite didinimo sritį vilkdami dviem pirštais."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nepasiekiama, kol didinama tik dalis ekrano"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Palieskite mygtuką, kad keistumėte mastelį"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Sparčiai artinkite ekrane, kad turinys būtų didesnis"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Kad priartintumėte, atlikite toliau nurodytus veiksmus.</b><br/> {0,number,integer}. Paleiskite didinimo funkciją sparčiuoju klavišu.<br/> {1,number,integer}. Palieskite ekraną.<br/> {2,number,integer}. Pereikite nuo vieno ekrano elemento prie kito vilkdami dviem pirštais.<br/> {3,number,integer}. Koreguokite mastelį suėmę dviem pirštais.<br/> {4,number,integer}. Sustabdykite didinimo funkciją sparčiuoju klavišu.<br/><br/> <b>Kad laikinai priartintumėte, atlikite toliau nurodytus veiksmus.</b><br/> {0,number,integer}. Įsitikinkite, kad didinimo tipas nustatytas į viso ekrano.<br/> {1,number,integer}. Paleiskite didinimo funkciją sparčiuoju klavišu.<br/> {2,number,integer}. Palieskite ir palaikykite bet kurią ekrano vietą.<br/> {3,number,integer}. Pereikite nuo vieno ekrano elemento prie kito vilkdami pirštu.<br/> {4,number,integer}. Sustabdykite didinimo funkciją pakeldami pirštą."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kai didinimas įjungtas, galite artinti ekraną.\n\n"<b>"Jei norite keisti mastelį,"</b>", įjunkite didinimą, tada palieskite bet kurioje ekrano vietoje.\n"<ul><li>"Slinkite vilkdami dviem ar daugiau pirštų"</li>\n<li>"Koreguokite mastelį suimdami dviem ar daugiau pirštų"</li></ul>\n\n<b>"Jei norite laikinai pakeisti mastelį"</b>", įjunkite didinimą, tada palieskite ir palaikykite bet kurioje ekrano vietoje.\n"<ul><li>"Naršykite ekraną vilkdami pirštu"</li>\n<li>"Pakelkite pirštą, kad tolintumėte"</li></ul>\n\n"Negalite artinti naudodami klaviatūrą ar naršymo juostą."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> psl. iš <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Pritaikomumo mygtuko spartusis klavišas"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nė vieno}=1{Nustatytas 1 tvarkaraštis}one{Nustatytas # tvarkaraštis}few{Nustatyti # tvarkaraščiai}many{Nustatyta # tvarkaraščio}other{Nustatyta # tvarkaraščių}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Netrukdymo režimas"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioriteto režimai"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Gauti pranešimus tik iš svarbių žmonių ar programų"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Pasirinkti suaktyvinimo tipą"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Laikas"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Pvz.: „9.30–17.00 val.“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendorius"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Pvz.: „Asmeninis kalendorius“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Pertraukčių apribojimas"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Netrukdymo režimo įjungimas"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Signalai ir medijos garsai gali trikdyti"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Tvarkaraščiai"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Tvarkaraščių trynimas"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Ištrinti"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Redaguoti"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Tvarkaraščiai"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Tvarkaraštis"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Pridėti kalendorių"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Naudoti kalendorių"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Tvarkaraštis"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Nustatykite tvarkaraštį"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Tvarkaraštis"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> val. <xliff:g id="MINUTES">%2$d</xliff:g> min."</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Tvarkaraštis"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Nutildykite telefoną tam tikru metu"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Leisti pertrauktis, skleidžiančias garsą"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokuoti vaizdinius trikdžius"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Leisti vaizdinius signalus"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Leidžiami pranešimai"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Susikaupkite"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Papildomi veiksmai"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Vaizdo nustatymai"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Pateikties parinktys"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"įgalinti tamsiąją temą"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Perjunkite, kad OS ir programos teiktų pirmenybę šviesiam tekstui tamsiame fone, nes taip mažiau pavargsta akys ir labai tausojamas akumuliatorius kai kuriuose įrenginiuose"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nėra vaizdo pakeitimų}=1{{effect_1}}=2{{effect_1} ir {effect_2}}=3{{effect_1}, {effect_2} ir {effect_3}}one{{effect_1}, {effect_2} ir dar #}few{{effect_1}, {effect_2} ir dar #}many{{effect_1}, {effect_2} ir dar #}other{{effect_1}, {effect_2} ir dar #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtruoti trukdžius"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nefiltruojami jokie trukdžiai"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Išfiltruotų pranešimų rodymo parinktys"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kai įjungtas netrukdymo režimas"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Neskambėti gavus pranešimų"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorijos"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Kita"</string>
<string name="no_channels" msgid="4716199078612071915">"Ši programa nepaskelbė jokių pranešimų"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Rodyti nenaudojamas kategorijas"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Papildomi programos nustatymai"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Rodyti nenaudojamas kategorijas"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Slėpti nenaudojamas kategorijas"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Pasirinktos programos"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Netaikoma"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Viskas"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Leisti programoms nepaisyti"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Programos, kurios gali trikdyti"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Pasirinkti daugiau programų"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Pakeisti į signalus tik vienai valandai iki {time}}one{Pakeisti į signalus tik # valandai iki {time}}few{Pakeisti į signalus tik # valandoms iki {time}}many{Pakeisti į signalus tik # valandos iki {time}}other{Pakeisti į signalus tik # valandų iki {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Pakeisti tik į signalus iki <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Pakeisti į pertraukimo nustatymą visam laikui"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Pervardyti"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Keisti piktogramą"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Piktogramos keitimas"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Perspėjimas"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Uždaryti"</string>
<string name="device_feedback" msgid="5351614458411688608">"Siųsti atsiliepimą apie šį įrenginį"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Šio įrenginio duomenų skaidinį reikia konvertuoti į „ext4“ prieš naudojant 16 KB kūrėjo parinktį. Šiuo režimu negalima garantuoti programinės įrangos vientisumo ir visiems telefone saugomiems duomenims, kai panaikintas paleidyklės operatoriaus pasirinkimo ribojimas, gali kilti pavojus. Suaktyvinus 16 KB parinktį, po to reikės dar vieno paleidimo iš naujo. Dirbdami šiuo režimu galėsite perjungti 4 KB ir 16 KB režimus paleidę iš naujo vieną kartą. Kai kurios funkcijos gali būti išjungtos šiais režimais, todėl kai kurios programos gali neveikti. Jei norite vėl įjungti įrenginio generavimo režimą, turite vėl perjungti į 4 KB režimą ir užrakinti paleidyklę, tada bus atkurti įrenginio gamykliniai nustatymai. Kai įrenginys bus sėkmingai paleistas sistemoje „Android“, išjunkite OĮG operatoriaus pasirinkimo ribojimo panaikinimą „Kūrėjo parinkčių“ skiltyje. Įrenginio duomenys bus panaikinti ir patvirtinus failų sistema bus pakeista į „ext4“. Kai tai bus baigta, grįžkite ir vėl įgalinkite 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Ištrinti visus duomenis"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Nepavyko performatuoti į „ext4“ ir panaikinti duomenų skaidinio."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Norint naudoti 16 KB režimą, reikia panaikinti paleidyklės operatoriaus pasirinkimo ribojimą"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Kad būtų galima naudoti 16 KB kūrėjo parinktį, turi būti panaikintas šio įrenginio paleidyklės operatoriaus pasirinkimo ribojimas. Šiuo režimu negalima garantuoti programinės įrangos vientisumo ir visiems telefone saugomiems duomenims, kai panaikintas paleidyklės operatoriaus pasirinkimo ribojimas, gali kilti pavojus. Suaktyvinus 16 KB režimą, visi naudotojo duomenys ir nustatymai bus panaikinti. Panaikinus paleidyklės operatoriaus pasirinkimo ribojimą, norint suaktyvinti 16 KB parinktį, reikės du kartus paleisti iš naujo. Dirbdami šiuo režimu galėsite perjungti 4 KB ir 16 KB režimus paleidę iš naujo vieną kartą. Kai kurios funkcijos gali būti išjungtos šiais režimais, todėl kai kurios programos gali neveikti. Jei norite vėl įjungti įrenginio generavimo režimą, turite vėl perjungti į 4 KB režimą ir taikyti įrenginio OĮG ir (arba) paleidyklės užrakinimą (tada bus atkurti gamykliniai nustatymai). Panaikinkite paleidyklės operatoriaus pasirinkimo ribojimą ir bandykite dar kartą. Instrukcijas, kaip tai atlikti, rasite adresu <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 KB nepriklausomo puslapio dydžio režimo naudojimas"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Dirbate 4 KB nepriklausomo puslapio dydžio režimu. Šiuo režimu negalima garantuoti programinės įrangos vientisumo ir visiems telefone saugomiems duomenims, kai panaikintas paleidyklės operatoriaus pasirinkimo ribojimas, gali kilti pavojus. Kai kurios funkcijos gali būti išjungtos šiais režimais, todėl kai kurios programos gali neveikti. Jei norite vėl įjungti generavimo režimą, turite užrakinti įrenginio paleidyklę. Palieskite, jei norite skaityti daugiau."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Dirbate 4 KB nepriklausomo puslapio dydžio režimu. Šiuo režimu negalima garantuoti programinės įrangos vientisumo ir visiems telefone saugomiems duomenims, kai panaikintas paleidyklės operatoriaus pasirinkimo ribojimas, gali kilti pavojus. Kai kurios funkcijos gali būti išjungtos šiais režimais, todėl kai kurios programos gali neveikti. Jei norite vėl įjungti generavimo režimą, turite užrakinti įrenginio paleidyklę. Tada vėl bus atkurti įrenginio gamykliniai nustatymai. Kai įrenginys bus sėkmingai paleistas sistemoje „Android“, išjunkite OĮG operatoriaus pasirinkimo ribojimo panaikinimą „Kūrėjo parinkčių“ skiltyje. Jei nepavyksta paleisti įrenginio sistemoje „Android“ arba jis nestabilus, iš naujo įdiekite įrenginį „Android“ ROM vidinėje atmintyje su naujausiais gamykliniais disko atvaizdžiais iš <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> arba naudokite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ir pasirinkite „Naikinti įrenginio duomenis“, „Užrakinti paleidyklę“ ir „Priverstinai įdiegti visus skaidinius „Android“ ROM vidinėje atmintyje“."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 KB nepriklausomo puslapio dydžio režimo naudojimas"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Dirbate 16 KB nepriklausomo puslapio dydžio režimu. Šiuo režimu negalima garantuoti programinės įrangos vientisumo ir visiems telefone saugomiems duomenims, kai panaikintas paleidyklės operatoriaus pasirinkimo ribojimas, gali kilti pavojus. Kai kurios funkcijos gali būti išjungtos šiais režimais, todėl kai kurios programos gali neveikti. Jei norite vėl įjungti generavimo režimą, turite vėl perjungti į 4 KB režimą ir užrakinti įrenginio paleidyklę. Palieskite, jei norite skaityti daugiau."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Dirbate 16 KB nepriklausomo puslapio dydžio režimu. Šiuo režimu negalima garantuoti programinės įrangos vientisumo ir visiems telefone saugomiems duomenims, kai panaikintas paleidyklės operatoriaus pasirinkimo ribojimas, gali kilti pavojus. Kai kurios funkcijos gali būti išjungtos šiais režimais, todėl kai kurios programos gali neveikti. Jei norite vėl įjungti generavimo režimą, turite vėl perjungti į 4 KB režimą ir užrakinti įrenginio paleidyklę. Tada vėl bus atkurti įrenginio gamykliniai nustatymai. Kai įrenginys bus sėkmingai paleistas sistemoje „Android“, išjunkite OĮG operatoriaus pasirinkimo ribojimo panaikinimą „Kūrėjo parinkčių“ skiltyje. Jei nepavyksta paleisti įrenginio sistemoje „Android“ arba jis nestabilus, iš naujo įdiekite įrenginį „Android“ ROM vidinėje atmintyje su naujausiais gamykliniais disko atvaizdžiais iš <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> arba naudokite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ir pasirinkite „Naikinti įrenginio duomenis“, „Užrakinti paleidyklę“ ir „Priverstinai įdiegti visus skaidinius „Android“ ROM vidinėje atmintyje“."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB nepriklausomo puslapio dydžio režimas"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Skaityti daugiau"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Pranešimų apie riktus doroklė"</string>
@@ -5011,7 +5075,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Programos prisegimo naudojimas"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Kūrėjo parinkčių naudojimas"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Naudoti spausdinimo paslaugą"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Kelių naudotojų leidimas"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"leisti, keli, naudotojas, leidimas, daug"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"keli, naudotojai, profiliai, žmonės, paskyros, perjungti, daug"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Belaidžio ryšio derinimo naudojimas"</string>
@@ -5355,4 +5420,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
index 43d21e9..b537f09 100644
--- a/res/values-lv/arrays.xml
+++ b/res/values-lv/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Naktsmiers"</item>
+ <item msgid="4152450357280759894">"Braukšana pie stūres"</item>
+ <item msgid="7096549258219399423">"Iekļaujošs"</item>
+ <item msgid="2760716776980432977">"Pārvaldīts"</item>
+ <item msgid="601734478369121764">"Zvaigzne"</item>
+ <item msgid="6243809315432780521">"Kalendārs"</item>
+ <item msgid="4913577903148415331">"Laiks"</item>
+ <item msgid="3653377604690057780">"Kinoteātris"</item>
+ <item msgid="3843711267408385410">"Zieds"</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 84ae9db..73f98fe 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Dzirdes aparāta iestatījumi"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Saīsne, saderība ar dzirdes aparātiem."</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Pirmsiestatījums"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Jūsu audiologs nav ieprogrammējis nekādus pirmsiestatījumus."</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Nebija iespējams atjaunināt pirmsiestatījumu."</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio izeja"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Par audio izvadi"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Uzzināt vairāk par funkciju “Atbloķēšana ar pulksteni”"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Pievienot pulksteni"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Noņemt pulksteni"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Autorizācija ar pirksta nospiedumu un pēc sejas"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Autorizācija pēc sejas un pirksta nospieduma"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Autorizācija pēc sejas un pirksta nospieduma darba profilam"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Nepieciešama iestatīšana"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Seja un pirksta nospiedumi ir pievienoti"</string>
@@ -496,7 +497,7 @@
<string name="security_settings_sfps_animation_a11y_label" msgid="8808819903730940446">"Reģistrēšanas progresa procenti: <xliff:g id="PERCENTAGE">%d</xliff:g>"</string>
<string name="security_settings_udfps_enroll_progress_a11y_message" msgid="6183535114682369699">"Pirksta nospieduma reģistrēšana: <xliff:g id="PERCENTAGE">%d</xliff:g> procenti"</string>
<string name="security_settings_fingerprint_enroll_finish_title" msgid="3606325177406951457">"Pirksta nospiedums pievienots"</string>
- <string name="security_settings_require_screen_on_to_auth_title" msgid="1641621458536715518">"Pieskarties un atbloķēt jebkurā laikā"</string>
+ <string name="security_settings_require_screen_on_to_auth_title" msgid="1641621458536715518">"Pieskarieties, lai atbloķētu jebkurā laikā"</string>
<string name="security_settings_require_screen_on_to_auth_description" msgid="4158414711168345398">"Pieskarieties sensoram, lai atbloķētu ierīci, pat ja ekrāns ir izslēgts. Tādējādi tiek palielināta nejaušas atbloķēšanas iespējamība."</string>
<string name="security_settings_require_screen_on_to_auth_keywords" msgid="5557869560397089603">"Ekrāns, atbloķēšana"</string>
<string name="security_settings_fingerprint_enroll_enrolling_skip" msgid="3004786457919122854">"Vēlāk"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Lietotņu instalēšana"</b>\n"Instalējiet lietotnes, ko vēlaties privāti glabāt savā telpā."</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Svarīga informācija"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Lietotnes pārstāj darboties, kad bloķējat privāto telpu"</b>\n"Kad bloķējat privāto telpu, lietotnes šajā telpā pārstāj darboties un jūs turpmāk nesaņemat šo lietotņu paziņojumus."</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privātās telpas nav piemērotas lietotnēm, kam nepieciešams darboties fonā vai sūtīt kritiskus paziņojumus, piemēram, medicīnas lietotnēm. Iemesls ir tas, ka paziņojumi un darbība fonā tiek apturēta, kad telpa tiek bloķēta.\n\nLietotnes, kas atrodas jūsu privātajā telpā, nebūs redzamas atļauju pārvaldniekā, konfidencialitātes informācijas panelī un citos iestatījumos, kad privātā telpa būs bloķēta.\n\nPrivāto telpu nevar pārvietot uz jaunu ierīci. Ja vēlēsieties izmantot privāto telpu citā ierīcē, jums būs jāiestata jauna telpa.\n\nJebkura persona, kas izveidos savienojumu starp jūsu ierīci un datoru vai instalēs kaitīgas lietotnes jūsu ierīcē, iespējams, varēs piekļūt jūsu privātajai telpai."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privātās telpas nav piemērotas lietotnēm, kam nepieciešams darboties fonā vai sūtīt kritiskus paziņojumus, piemēram, medicīnas lietotnēm. Iemesls ir tas, ka paziņojumi un darbība fonā tiek apturēta, kad telpa tiek bloķēta.\n\nLietotnes, kas atrodas jūsu privātajā telpā, nebūs redzamas atļauju pārvaldniekā, konfidencialitātes informācijas panelī un citos iestatījumos, kad privātā telpa būs bloķēta.\n\nPrivāto telpu nevar atjaunot jaunā ierīcē. Ja vēlēsieties izmantot privāto telpu citā ierīcē, jums būs jāiestata jauna telpa.\n\nJebkura persona, kas izveidos savienojumu starp jūsu ierīci un datoru vai instalēs ļaunprātīgas lietotnes jūsu ierīcē, iespējams, varēs piekļūt jūsu privātajai telpai."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Uzzināt vairāk par privāto telpu"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Tas ilgs kādu brīdi."</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Notiek privātās telpas iestatīšana…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vai restartēt ierīci?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detalizētu NFC datu reģistrēšana ir paredzēta tikai ar izstrādi saistītiem nolūkiem. Papildu NFC dati tiek iekļauti kļūdu pārskatos, un tajos var būt ietverta privāta informācija. Lai mainītu šo iestatījumu, restartējiet ierīci."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Restartēt"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Apraide"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"spogulis"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Bezvadu attēlošanas iespējošana"</string>
@@ -1173,7 +1202,7 @@
<string name="accessibility_work_account_title" msgid="7622485151217943839">"Darba konts — <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
<string name="accessibility_personal_account_title" msgid="8535265881509557013">"Personīgais konts — <xliff:g id="MANAGED_BY">%s</xliff:g>"</string>
<string name="search_settings" msgid="7573686516434589771">"Meklēt"</string>
- <string name="display_settings" msgid="7197750639709493852">"Attēls"</string>
+ <string name="display_settings" msgid="7197750639709493852">"Displejs"</string>
<string name="accelerometer_title" msgid="7745991950833748909">"Automātiska ekrāna pagriešana"</string>
<string name="auto_rotate_option_off" msgid="2788096269396290731">"Izslēgta"</string>
<string name="auto_rotate_option_on" msgid="5776678230808498171">"Ieslēgta"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptīva krāsa"</string>
<string name="brightness" msgid="6216871641021779698">"Spilgtuma līmenis"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptīvs spilgtums"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Par adaptīvo spilgtumu"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Ekrāna spilgtums automātiski tiks pielāgots apkārtējai videi un veiktajām darbībām. Lai adaptīvajam spilgtumam iestatītu savas preferences, pārvietojiet slīdni."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Ieslēgt"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Izslēgts"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Lietotāja atlasītais izkārtojums: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Runa"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Rādītāja ātrums"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Spēļu vadība"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Vibrācijas novirzīšana"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Novirzīt vibrāciju uz spēles vadāmierīci, kad ir izveidots savienojums"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Tomēr turpināt"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Atcelt"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Palielināšanas iestatījumi"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Pārvietošana ar vienu pirkstu"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Palielinājuma apgabala pārvietošanai velciet vienu pirkstu."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Palielinājuma apgabala pārvietošanai velciet divus pirkstus."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nav pieejama, kad tiek palielināta tikai daļa ekrāna"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Pieskarieties pogai, lai palielinātu"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Ātri tuviniet ekrānu, lai palielinātu saturu"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Tuvināšana</b><br/> {0,number,integer}. Izmantojiet īsinājumtaustiņu, lai sāktu palielināšanu.<br/> {1,number,integer}. Pieskarieties ekrānam.<br/> {2,number,integer}. Lai pārvietotos ekrānā, velciet ar diviem pirkstiem.<br/> {3,number,integer}. Lai regulētu tālummaiņu, savelciet ar diviem pirkstiem.<br/> {4,number,integer}. Izmantojiet īsinājumtaustiņu, lai pārtrauktu palielināšanu.<br/><br/> <b>Īslaicīga tuvināšana</b><br/> {0,number,integer}. Pārliecinieties, vai iestatītais palielinājuma veids ir “Pilnekrāna režīms”.<br/> {1,number,integer}. Izmantojiet īsinājumtaustiņu, lai sāktu palielināšanu.<br/> {2,number,integer}. Pieskarieties un turiet jebkurā ekrāna vietā.<br/> {3,number,integer}. Lai pārvietotos ekrānā, velciet ar pirkstu.<br/> {4,number,integer}. Paceliet pirkstu, lai pārtrauktu palielināšanu."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kad ir ieslēgts palielinājums, ekrānā varat izmantot tuvināšanu.\n\n"<b>"Lai izmantotu tālummaiņu"</b>", aktivizējiet palielinājumu un pēc tam pieskarieties jebkur ekrānā.\n"<ul><li>"Velciet ar vismaz 2 pirkstiem, lai ritinātu."</li>\n<li>"Savelciet kopā vismaz 2 pirkstus, lai pielāgotu tālummaiņu."</li></ul>\n\n<b>"Lai veiktu īslaicīgu tālummaiņu"</b>", aktivizējiet palielinājumu un pēc tam pieskarieties jebkurai vietai ekrānā un turiet to.\n"<ul><li>"Velciet ar pirkstu, lai pārvietotos pa ekrānu."</li>\n<li>"Paceliet pirkstu, lai veiktu tālināšanu."</li></ul>\n\n"Tastatūrā vai navigācijas joslā nevarat veikt tuvināšanu."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. lapa no <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Saīsne: pieejamības poga"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nav}=1{Iestatīts viens grafiks}zero{Iestatīti # grafiki}one{Iestatīts # grafiks}other{Iestatīti # grafiki}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Netraucēt"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioritātes režīmi"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Saņemiet paziņojumus tikai no svarīgām personām un lietotnēm."</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Atlasiet aktivizācijas veidu"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Laiks"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Piemērs. “9:30–17:00”."</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendārs"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Piemērs. “Personīgais kalendārs”."</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Traucējumu ierobežošana"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Režīma “Netraucēt” ieslēgšana"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Modinātāji un multivides skaņas, kam atļauts pārtraukt"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Grafiki"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Grafiku dzēšana"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Dzēst"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Rediģēt"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Grafiki"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Grafiks"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Pievienot kalendāru"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Izmantot kalendāru"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Grafiks"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Iestatiet grafiku"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Grafiks"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Grafiks"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Skaņas izslēgšana noteiktā laikā"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Atļaut pārtraukumus ar skaņas signālu"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloķēt vizuālos traucējumus"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Vizuālu signālu atļaušana"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Paziņojumi, kas var jūs sasniegt"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Ilglaicīga koncentrēšanās"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Papildu darbības"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Attēlojuma iestatījumi"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Attēlojuma iespējas"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"iespējot tumšo motīvu"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Iestatiet, lai operētājsistēmā un lietotnēs priekšroka tiktu dota gaišam tekstam uz tumša fona. Tas var mazāk nogurdināt acis un ievērojami ietaupīt akumulatora jaudu dažās ierīcēs."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nav attēlojuma izmaiņu}=1{{effect_1}}=2{{effect_1} un {effect_2}}=3{{effect_1}, {effect_2} un {effect_3}}zero{{effect_1}, {effect_2} un vēl #}one{{effect_1}, {effect_2} un vēl #}other{{effect_1}, {effect_2} un vēl #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrēt traucēkļus"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Netiek filtrēts neviens traucēklis"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Filtrētu paziņojumu attēlojuma iespējas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kad ir ieslēgts režīms “Netraucēt”"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Nav skaņas signālu no paziņojumiem"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorijas"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Cits"</string>
<string name="no_channels" msgid="4716199078612071915">"Šai lietotnei nav neviena paziņojuma."</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Rādīt neizmantotās kategorijas"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Lietotnes papildu iestatījumi"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Rādīt neizmantotās kategorijas"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Paslēpt neizmantotās kategorijas"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Atlasītās lietotnes"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Neviena"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Visas"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Atļaut lietotnēm ignorēt režīmu “Netraucēt”"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Lietotnes, kas var pārtraukt"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Citu lietotņu atlase"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Vienu stundu pāriet uz režīmu “Tikai signāli” (līdz: {time})}zero{# stundas pāriet uz režīmu “Tikai signāli” (līdz: {time})}one{# stundu pāriet uz režīmu “Tikai signāli” (līdz: {time})}other{# stundas pāriet uz režīmu “Tikai signāli” (līdz: {time})}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Pāriet uz režīmu “Tikai signāli” līdz plkst. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Pāriet uz “Vienmēr pārtraukt”"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Pārdēvēt"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Mainīt ikonu"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Mainīt ikonu"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Brīdinājums"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Aizvērt"</string>
<string name="device_feedback" msgid="5351614458411688608">"Sūtīt atsauksmes par šo ierīci"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Ierīces datu nodalījuma failu sistēma jākonvertē uz ext4, lai varētu izmantot izstrādātāju opciju “16 KB”. Šajā režīmā nevar garantēt programmatūras integritāti, un tālrunī glabātie dati var būt apdraudēti, kamēr operētājsistēmu ielādes rīks ir atbloķēts. Lai varētu aktivizēt opciju “16 KB”, ierīce būs vēl vienu reizi atkārtoti jāpalaiž. Kad būs ieslēgts šis režīms, varēsiet pārslēgt 4 KB vai 16 KB režīmu, vienreiz atkārtoti palaižot ierīci. Šajos režīmos dažas funkcijas tiks atspējotas, tādēļ dažas lietojumprogrammas var nedarboties. Lai ierīcē atjaunotu produkcijas režīmu, jums būs jāpārslēdz 4 KB režīms un jābloķē operētājsistēmu ielādes rīks. Tādējādi ierīcē tiks atjaunoti rūpnīcas dati. Kad ierīcē būs sekmīgi palaista operētājsistēma Android, izstrādātāju opcijās atspējojiet OAR atbloķēšanu. Apstiprinot šo darbību, ierīcē tiks notīrīti dati un failu sistēma tiks mainīta uz ext4. Kad tas būs paveikts, lūdzu, atgriezieties, lai iespējotu 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Dzēst visus datus"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Neizdevās notīrīt datu nodalījumu un to pārformatēt uz failu sistēmu ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Lai varētu izmantot 16 KB režīmu, jāatbloķē operētājsistēmu ielādes rīks"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Lai varētu izmantot izstrādātāju opciju “16 KB”, ierīcē ir jāatbloķē operētājsistēmu ielādes rīks. Šajā režīmā nevar garantēt programmatūras integritāti, un tālrunī glabātie dati var būt apdraudēti, kamēr operētājsistēmu ielādes rīks ir atbloķēts. Aktivizējot 16 KB režīmu, tiks notīrīti visi lietotāja dati un iestatījumi. Kad operētājsistēmu ielādes rīks būs atbloķēts, ierīce būs atkārtoti jāpalaiž divas reizes, lai aktivizētu opciju “16 KB”. Kad būs ieslēgts šis režīms, varēsiet pārslēgt 4 KB vai 16 KB režīmu, vienreiz atkārtoti palaižot ierīci. Šajos režīmos dažas funkcijas tiks atspējotas, tādēļ dažas lietojumprogrammas var nedarboties. Lai ierīcē atjaunotu produkcijas režīmu, jums būs jāpārslēdz 4 KB režīms un jābloķē OAR/operētājsistēmu ielādes rīks. Tādējādi ierīcē tiks atjaunoti rūpnīcas dati. Lūdzu, atbloķējiet operētājsistēmu ielādes rīku un mēģiniet vēlreiz. Norādījumi ir sniegti šeit: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Tiek izmantots 4 KB režīms, kas nav atkarīgs no lappušatmiņas lieluma"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Pašlaik izmantojat 4 KB režīmu, kas nav atkarīgs no lappušatmiņas lieluma. Šajā režīmā nevar garantēt programmatūras integritāti, un tālrunī glabātie dati var būt apdraudēti, kamēr operētājsistēmu ielādes rīks ir atbloķēts. Šajos režīmos dažas funkcijas tiks atspējotas, tādēļ dažas lietojumprogrammas var nedarboties. Lai ierīcē atjaunotu produkcijas režīmu, jums ir jābloķē operētājsistēmu ielādes rīks. Pieskarieties, lai lasītu vairāk."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Pašlaik izmantojat 4 KB režīmu, kas nav atkarīgs no lappušatmiņas lieluma. Šajā režīmā nevar garantēt programmatūras integritāti, un tālrunī glabātie dati var būt apdraudēti, kamēr operētājsistēmu ielādes rīks ir atbloķēts. Šajos režīmos dažas funkcijas tiks atspējotas, tādēļ dažas lietojumprogrammas var nedarboties. Lai ierīcē atjaunotu produkcijas režīmu, jums ir jābloķē operētājsistēmu ielādes rīks. Tādējādi ierīcē atkal tiks atjaunoti rūpnīcas dati un produkcijas iestatījumi. Kad ierīcē būs sekmīgi palaista operētājsistēma Android, izstrādātāju opcijās atspējojiet OAR atbloķēšanu. Ja ierīcē neizdodas palaist operētājsistēmu Android vai tā nav stabila, ierīcē instalējiet jaunākos rūpnīcas attēlus no vietnes <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> vai apmeklējiet vietni <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> un atlasiet “Wipe Device” (Notīrīt ierīci), “Lock Bootloader” (Bloķēt operētājsistēmu ielādes rīku) un “Force Flash all partitions” (Veikt piespiedu instalēšanu visos nodalījumos)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Tiek izmantots 16 KB režīms, kas nav atkarīgs no lappušatmiņas lieluma"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Pašlaik izmantojat 16 KB režīmu, kas nav atkarīgs no lappušatmiņas lieluma. Šajā režīmā nevar garantēt programmatūras integritāti, un tālrunī glabātie dati var būt apdraudēti, kamēr operētājsistēmu ielādes rīks ir atbloķēts. Šajos režīmos dažas funkcijas tiks atspējotas, tādēļ dažas lietojumprogrammas var nedarboties. Lai ierīcē atjaunotu produkcijas režīmu, jums būs jāpārslēdz 4 KB režīms un jābloķē operētājsistēmu ielādes rīks. Pieskarieties, lai lasītu vairāk."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Pašlaik izmantojat 16 KB režīmu, kas nav atkarīgs no lappušatmiņas lieluma. Šajā režīmā nevar garantēt programmatūras integritāti, un tālrunī glabātie dati var būt apdraudēti, kamēr operētājsistēmu ielādes rīks ir atbloķēts. Šajos režīmos dažas funkcijas tiks atspējotas, tādēļ dažas lietojumprogrammas var nedarboties. Lai ierīcē atjaunotu produkcijas režīmu, jums būs jāpārslēdz 4 KB režīms un jābloķē operētājsistēmu ielādes rīks. Tādējādi ierīcē atkal tiks atjaunoti rūpnīcas dati un produkcijas iestatījumi. Kad ierīcē būs sekmīgi palaista operētājsistēma Android, izstrādātāju opcijās atspējojiet OAR atbloķēšanu. Ja ierīcē neizdodas palaist operētājsistēmu Android vai tā nav stabila, ierīcē instalējiet jaunākos rūpnīcas attēlus no vietnes <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> vai apmeklējiet vietni <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> un atlasiet “Wipe Device” (Notīrīt ierīci), “Lock Bootloader” (Bloķēt operētājsistēmu ielādes rīku) un “Force Flash all partitions” (Veikt piespiedu instalēšanu visos nodalījumos)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB režīms, kas nav atkarīgs no lappušatmiņas lieluma"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Uzzināt vairāk"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Kļūdu pārskatu apstrādātājs"</string>
@@ -5010,7 +5074,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Izmantot lietotņu piespraušanu"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Izmantot izstrādātāju opcijas"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Izmantot drukāšanas pakalpojumu"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Atļaut vairākus lietotājus"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"ļaut, vairāki, lietotājs, atļaut, daudz"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"vairāki, lietotāji, profili, personas, konti, pārslēgties, daudzi"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Izmantot bezvadu atkļūdošanu"</string>
@@ -5354,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-mk/arrays.xml b/res/values-mk/arrays.xml
index b7e7e75..2daa309 100644
--- a/res/values-mk/arrays.xml
+++ b/res/values-mk/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Време за спиење"</item>
+ <item msgid="4152450357280759894">"Возење"</item>
+ <item msgid="7096549258219399423">"Реалистично"</item>
+ <item msgid="2760716776980432977">"Управувано"</item>
+ <item msgid="601734478369121764">"Ѕвезда"</item>
+ <item msgid="6243809315432780521">"Календар"</item>
+ <item msgid="4913577903148415331">"Време"</item>
+ <item msgid="3653377604690057780">"Театар"</item>
+ <item msgid="3843711267408385410">"Цвет"</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 e35733e..fda0a61 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Поставки за слушни апарати"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Кратенка, компатибилност со слушни помагала"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Зададена вредност"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Нема зададени вредности што ги програмирал вашиот аудиолог"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Не можеше да се ажурира зададената вредност"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудиоизлез"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"За аудио-излезот"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Дознајте повеќе за „Отклучување со часовник“"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Додај часовник"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Отстрани часовник"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Отклучување со отпечаток и лик"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Отклучување со лик и отпечаток"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Отклучување со лик и отпечаток за работа"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Потребно е поставување"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Ликот и отпечатоците се додадени"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -828,8 +827,8 @@
<string name="bluetooth_device_context_pair_connect" msgid="2406032703622371826">"Спари и поврзи"</string>
<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 во близина. Функциите како „Брзо споделување“ и „Најди го мојот уред“ користат 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 во близина. Функциите како „Брзо споделување“ и „Најди го мојот уред“ користат Bluetooth.\n\nАпликациите и услугите може да скенираат за уреди во близина во секое време, дури и кога е исклучен 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 во близина. Функциите како „Брзо споделување“ и „Најди го мојот уред“ користат Bluetooth.\n\nАпликациите и услугите може да скенираат за уреди во близина во секое време, дури и кога е исклучен Bluetooth. Ова може да се користи, на пример, за да се подобрат функциите и локациските услуги. Ова може да го промените во поставките за скенирање за Bluetooth."</string>
<string name="bluetooth_scan_change" msgid="1744636222637390367">"Промени"</string>
<string name="device_details_title" msgid="1155622417516195481">"Детали за уредот"</string>
<string name="bluetooth_device_keyboard_settings_preference_title" msgid="3411693160917620519">"Поставки за тастатурата"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Да се рестартира уредот?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Деталното евидентирање на NFC е наменето само за развојни цели. Дополнителни податоци од NFC се вклучени во извештаите за грешки, коишто може да содржат приватни податоци. Рестартирајте го уредов за да ја промените оваа поставка."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Рестартирај"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Емитување"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"огледало"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Овозможи приказ на безжични мрежи"</string>
@@ -920,7 +949,7 @@
<string name="wifi_empty_list_user_restricted" msgid="454861411536708709">"Немате дозвола за промена на Wi-Fi мрежата."</string>
<string name="wifi_settings_scanning_required_title" msgid="1088663325396007484">"Да се вклучи скенирање за Wi-Fi?"</string>
<string name="wifi_settings_scanning_required_summary" msgid="4770243653675416569">"За да може автоматски да се вклучува Wi-Fi, прво треба да вклучите скенирање за Wi-Fi."</string>
- <string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"Скенирањето за Wi-Fi дозволува апликациите и услугите да скенираат за Wi-Fi мрежи во секое време, дури и кога Wi-Fi е исклучено. Ова може да се користи, на пример, за да се подобрат функциите и услугите според локација."</string>
+ <string name="wifi_settings_scanning_required_info" msgid="1473411566072565789">"Скенирањето за Wi-Fi дозволува апликациите и услугите да скенираат за Wi-Fi мрежи во секое време, дури и кога Wi-Fi е исклучено. Ова може да се користи, на пример, за да се подобрат функциите и локациските услуги."</string>
<string name="wifi_settings_scanning_required_turn_on" msgid="1112223196123955447">"Вклучи"</string>
<string name="wifi_settings_scanning_required_enabled" msgid="4721729158927146365">"Скенирањето за Wi‑Fi е вклучено"</string>
<string name="wifi_settings_warning_wep_network" msgid="7032462362300663466">"Мрежава користи постар безбедносен протокол наречен WEP, којшто не е толку безбеден"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Адаптивни"</string>
<string name="brightness" msgid="6216871641021779698">"Ниво на осветленост"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Адаптивна осветленост"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Осветленоста на екранот ќе се приспособува автоматски на вашата околина и активностите. Може да го поместите лизгачот рачно за да ѝ помогнете на адаптивната осветленост да научи што ви одговара."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"За „Адаптивна осветленост“"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Осветленоста на екранот ќе се приспособува автоматски на вашата околина и активности. Може да го поместите лизгачот рачно за да ѝ помогнете на адаптивната осветленост да научи што ви одговара."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Вклучено"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Исклучена"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Баланс на бела боја на екранот"</string>
@@ -1577,15 +1607,15 @@
<string name="location_high_battery_use" msgid="4277318891200626524">"Голема искористеност на бат."</string>
<string name="location_low_battery_use" msgid="5218950289737996431">"Мала искористеност на бат."</string>
<string name="location_scanning_wifi_always_scanning_title" msgid="5004781272733434794">"Скенирање за Wi‑Fi"</string>
- <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Дозволете апликациите и услугите да скенираат за Wi-Fi мрежи во секое време, дури и кога Wi-Fi е исклучено. Ова може да се користи, на пример, за да се подобрат функциите и услугите според локација."</string>
+ <string name="location_scanning_wifi_always_scanning_description" msgid="6236055656376931306">"Дозволете апликациите и услугите да скенираат за Wi-Fi мрежи во секое време, дури и кога Wi-Fi е исклучено. Ова може да се користи, на пример, за да се подобрат функциите и локациските услуги."</string>
<string name="location_scanning_bluetooth_always_scanning_title" msgid="1809309545730215891">"Скенирање за Bluetooth"</string>
- <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_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="6478751613645015287">"Користи ја локацијата"</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>
+ <string name="location_time_zone_detection_status_summary_blocked_by_settings" msgid="5276280770344278768">"„Локацијата“ или „Локациските услуги“ се исклучени"</string>
<string name="location_time_zone_detection_status_summary_blocked_by_environment" msgid="2279833212923765802"></string>
<string name="location_time_zone_detection_status_summary_temporarily_unavailable" msgid="6586801403644278967"></string>
<string name="location_time_zone_detection_location_is_off_dialog_title" msgid="231698690198001146">"Потребна е локацијата на уредот"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Сепак продолжи"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Откажи"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Поставки за зголемување"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Повлекување со еден прст"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Преместете го зголемување со повлекување со еден прст."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Преместете го зголемување со повлекување со два прста."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Недостапно кога се зголемува само дел од екранот"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Допрете копче за зумирање"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Брзо зумирајте на екранот за да ги направите содржините поголеми"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>За да зумирате:</b><br/> {0,number,integer}. Употребете кратенка за почеток на зголемувањето<br/> {1,number,integer}. Допрете го екранот<br/> {2,number,integer}. Повлечете со два прста за да се движите низ екранот<br/> {3,number,integer}. Штипнете со два прста за да го приспособите зумот<br/> {4,number,integer}. Употребете кратенка за крај на зголемувањето<br/><br/><b>За да зумирате привремено:</b><br/> {0,number,integer}. Погрижете се типот на зголемувањето да биде поставен на цел екран<br/> {1,number,integer}. Употребете кратенка за почеток на зголемувањето<br/> {2,number,integer}. Допрете и задржете каде било на екранот<br/> {3,number,integer}. Повлечете со прст за да се движите низ екранот<br/> {4,number,integer}. Подигнете го прстот за крај на зголемувањето"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Кога е вклучено зумирањето, може да зумирате на екранот.\n\n"<b>"За да зумирате"</b>", стартувајте го зголемувањето, па допрете каде било на екранот.\n"<ul><li>"Повлечете со два или повеќе прсти за да лизгате"</li>\n<li>"Штипнете со два или повеќе прсти за да го приспособите зумот"</li></ul>\n\n<b>"За да зумирате привремено"</b>", стартувајте го зголемувањето, а потоа допрете и задржете каде било на екранот.\n"<ul><li>"Повлечете за да се движите околу екранот"</li>\n<li>"Подигнете го прстот за да одзумирате"</li></ul>\n\n"Не може да зумирате на тастатурата или на лентата за навигација."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Страница <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">"Кратенка за копчето за пристапност"</string>
@@ -2882,8 +2925,8 @@
<string name="data_usage_warning_editor_title" msgid="5252748452973120016">"Поставете предупредување за потрошен интернет"</string>
<string name="data_usage_limit_editor_title" msgid="8826855902435008518">"Поставете ограничување за потрошен интернет"</string>
<string name="data_usage_limit_dialog_title" msgid="2053134451707801439">"Ограничување за потрошен интернет"</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">"предупредување"</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">"граница"</font></string>
+ <string name="data_usage_sweep_warning" msgid="2072854703184614828"><font size="12">"Предупр."</font>\n<font size="18">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font></string>
+ <string name="data_usage_sweep_limit" msgid="6947019190890086284"><font size="12">"Oгранич."</font>\n<font size="18">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font></string>
<string name="data_usage_uninstalled_apps" msgid="9065885396147675694">"Отстранети апликации"</string>
<string name="data_usage_uninstalled_apps_users" msgid="1262228664057122983">"Отстранети апликации и корисници"</string>
<string name="wifi_metered_title" msgid="6623732965268033931">"Користење на мрежата"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ниеден}=1{Поставен е 1 распоред}one{Поставен е # распоред}other{Поставени се # распореди}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Не вознемирувај"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Приоритетни режими"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Добивајте известувања само од важни луѓе и апликации"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Изберете тип активација"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Време"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"На пр. „9:30 – 17:00“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Календар"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"На пр. „Личен календар“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ограничете ги прекините"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Избришете ги распоредите"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Избриши"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Додајте календар"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Користете го календарот"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Распоред"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Поставете распоред"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Распоред"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Не вознемирувај во одредено време"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Дозволете прекинувања што произведуваат звук"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Блокирајте визуелни нарушувања"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Дозволи визуелни сигнали"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Известувања што може да стигнат до вас"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Останете фокусирани"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Дополнителни дејства"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Поставки за екранот"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Опции за екранот"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"овозможете темна тема"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Префрлете ги OS и апликациите за да претпочитаат светол текст на темна заднина, што може да биде полесно за очите и овозможува значителна заштеда на батеријата на некои уреди"</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="mode_notification_filter_title" msgid="443728483176031977">"Филтрирај ги прекините"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Не се филтрираат прекините"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Прикажи ги некористените категории"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Скриј ги некористените категории"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Сите"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Смени само на аларми во траење од еден час до {time}}one{Смени само на аларми во траење од # час до {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Преименувајте"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Променете ја иконата"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Променете ја иконата"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Опомена"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Затвори"</string>
<string name="device_feedback" msgid="5351614458411688608">"Повратни информации за уредов"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Пред да се користи програмерската опција од 16 kB, партицијата со податоци на уредов треба да се конвертира во ext4. Во овој режим не може да се гарантира интегритетот на софтверот, а податоците складирани на телефонот додека е отклучен вчитувачот на систем може да бидат изложени на ризик. За да се активира опцијата од 16 kB, ќе биде потребно уште едно рестартирање по ова. Штом ќе влезете во овој режим, може да се префрлате меѓу режимите од 4 kB и 16 kB со едно рестартирање. Некои функции ќе бидат оневозможени во овие режими, па некои апликации можеби нема да функционираат. За да го вратите уредот во работен режим, ќе треба да се вратите во режимот од 4 kB, па да го заклучите вчитувачот на систем, којшто го ресетира уредот на фабрички поставки. Откако уредот успешно ќе се подигне во Android, оневозможете го отклучувањето OEM во „Програмерски опции“. По потврдувањето, уредот ќе се избрише трајно, а системот на датотеки ќе се промени во ext4. Кога ќе заврши ова, вратете се за да овозможите режим од 16 kB повторно."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Избриши ги сите податоци"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Неуспешно повторно форматирање и трајно бришење на партицијата со податоци во ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Вчитувачот на систем треба да се отклучи за режим од 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Пред да може да се користи програмерската опција од 16 kB, треба да се отклучи вчитувачот на систем на уредов. Во овој режим не може да се гарантира интегритетот на софтверот, а податоците складирани на телефонот додека е отклучен вчитувачот на систем може да бидат изложени на ризик. При активирањето режим од 16 kB, ќе се избришат трајно сите кориснички податоци и поставки. Откако ќе се отклучи вчитувачот на систем, ќе бидат потребни две рестартирања за да се активира опцијата од 16 kB. Штом ќе влезете во овој режим, може да се префрлате меѓу режимите од 4 kB и 16 kB со едно рестартирање. Некои функции ќе бидат оневозможени во овие режими, па некои апликации можеби нема да функционираат. За да го вратите уредот во работен режим, ќе треба да се вратите во режимот од 4 kB, па да го заклучите OEM/вчитувачот на систем, којшто го ресетира уредот на фабрички поставки. Отклучете го вчитувачот на систем, па обидете се повторно. Инструкции како да го направите ова може да најдете на <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Се користи режимот за компатибилност со мемориски страници од 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Вие сте во режимот од 4 kB на режимот за компатибилност со мемориски страници. Во овој режим не може да се гарантира интегритетот на софтверот, а податоците складирани на телефонот додека е отклучен вчитувачот на систем може да бидат изложени на ризик. Некои функции ќе бидат оневозможени во овие режими, па некои апликации можеби нема да функционираат. За да влезете во работен режим повторно, мора да го заклучите вчитувачот на систем на уредот. Допрете за да прочитате повеќе."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Вие сте во режимот од 4 kB на режимот за компатибилност со мемориски страници. Во овој режим не може да се гарантира интегритетот на софтверот, а податоците складирани на телефонот додека е отклучен вчитувачот на систем може да бидат изложени на ризик. Некои функции ќе бидат оневозможени во овие режими, па некои апликации можеби нема да функционираат. За да влезете во работен режим повторно, мора да го заклучите вчитувачот на систем на уредот. Ова ќе го ресетира уредот на фабрички поставки повторно и ќе го врати на поставките за работен режим. Откако уредот успешно ќе се подигне во Android, оневозможете го отклучувањето OEM во „Програмерски опции“. Ако уредот не може да се подигне во Android или е нестабилен, преинсталирајте ги најновите фабрички слики на уредот од <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> или користете <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> и изберете „Трајно избриши ги податоците на уредот“, „Заклучи го вчитувачот на системот“ и „Force Flash all partitions“ (Наметни инсталирање на сите партиции)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Се користи режимот за компатибилност со мемориски страници од 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Вие сте во режимот од 16 kB на режимот за компатибилност со мемориски страници. Во овој режим не може да се гарантира интегритетот на софтверот, а податоците складирани на телефонот додека е отклучен вчитувачот на систем може да бидат изложени на ризик. Некои функции ќе бидат оневозможени во овие режими, па некои апликации можеби нема да функционираат. За да влезете во работен режим повторно, мора да се вратите во режим од 4 kB, па да го заклучите вчитувачот на систем на уредот. Допрете за да прочитате повеќе."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Вие сте во режимот од 16 kB на режимот за компатибилност со мемориски страници. Во овој режим не може да се гарантира интегритетот на софтверот, а податоците складирани на телефонот додека е отклучен вчитувачот на систем може да бидат изложени на ризик. Некои функции ќе бидат оневозможени во овие режими, па некои апликации можеби нема да функционираат. За да влезете во работен режим повторно, мора да се вратите во режим од 4 kB, па да го заклучите вчитувачот на систем на уредот. Ова ќе го ресетира уредот на фабрички поставки повторно и ќе го врати на поставките за работен режим. Откако уредот успешно ќе се подигне во Android, оневозможете го отклучувањето OEM во „Програмерски опции“. Ако уредот не може да се подигне во Android или е нестабилен, преинсталирајте ги најновите фабрички слики на уредот од <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> или користете <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> и изберете „Трајно избриши ги податоците на уредот“, „Заклучи го вчитувачот на системот“ и „Force Flash all partitions“ (Наметни инсталирање на сите партиции)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Режим за компатибилност со мемориски страници од 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Прочитајте повеќе"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Ракувач со извештајот за грешки"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Дозволи повеќе корисници"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ml/arrays.xml b/res/values-ml/arrays.xml
index 2f1d67b..a9cfcb7 100644
--- a/res/values-ml/arrays.xml
+++ b/res/values-ml/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ബെഡ്ടൈം"</item>
+ <item msgid="4152450357280759894">"ഡ്രൈവിംഗ്"</item>
+ <item msgid="7096549258219399423">"ഇമേഴ്സീവ്"</item>
+ <item msgid="2760716776980432977">"മാനേജ് ചെയ്യുന്നത്"</item>
+ <item msgid="601734478369121764">"നക്ഷത്രം"</item>
+ <item msgid="6243809315432780521">"കലണ്ടർ"</item>
+ <item msgid="4913577903148415331">"സമയം"</item>
+ <item msgid="3653377604690057780">"തിയേറ്റർ"</item>
+ <item msgid="3843711267408385410">"പൂവ്"</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 dd82a9d..641ea6e1 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ശ്രവണ സഹായിയുടെ ക്രമീകരണം"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"കുറുക്കുവഴി, ശ്രവണ സഹായ അനുയോജ്യത"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"പ്രീസെറ്റ്"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ഓഡിയോളജിസ്റ്റ് പ്രോഗ്രാം ചെയ്ത പ്രീസെറ്റുകളൊന്നുമില്ല"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"പ്രീസെറ്റ് അപ്ഡേറ്റ് ചെയ്യാനായില്ല"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ഓഡിയോ ഔട്ട്പുട്ട്"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ഓഡിയോ ഔട്ട്പുട്ടിനെ കുറിച്ച്"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"വാച്ച് അൺലോക്കിനെ കുറിച്ച് കൂടുതലറിയുക"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"വാച്ച് ചേർക്കുക"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"വാച്ച് നീക്കം ചെയ്യുക"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ഫിംഗർപ്രിന്റ് & ഫേസ് അൺലോക്ക്"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ഫെയ്സ്, ഫിംഗർപ്രിന്റ് അൺലോക്ക്"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ഔദ്യോഗികാവശ്യത്തിനുള്ള ഫെയ്സ്, ഫിംഗർപ്രിന്റ് അൺലോക്ക്"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"സജ്ജീകരിക്കേണ്ടതുണ്ട്"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"മുഖവും ഫിംഗർപ്രിന്റുകളും ചേർത്തു"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ഉപകരണം റീസ്റ്റാർട്ട് ചെയ്യണോ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ഡെവലപ്പ്മെന്റ് ആവശ്യങ്ങൾക്ക് മാത്രം ഉദ്ദേശിച്ചുള്ളതാണ് വിശദമായ NFC ലോഗ് ചെയ്യൽ. ബഗ് റിപ്പോർട്ടുകളിൽ അധിക NFC ഡാറ്റ ഉൾപ്പെടുത്തിയിരിക്കുന്നു, അവയിൽ സ്വകാര്യ വിവരങ്ങൾ അടങ്ങിയിരിക്കാം. ഈ ക്രമീകരണം മാറ്റാൻ നിങ്ങളുടെ ഉപകരണം റീസ്റ്റാർട്ട് ചെയ്യുക."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"റീസ്റ്റാർട്ട് ചെയ്യൂ"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"കാസ്റ്റ് ചെയ്യുക"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"മിറർ"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"വയർലസ്ഡിസ്പ്ലേ സജീവമാക്കൂ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"അനുയോജ്യമായത്"</string>
<string name="brightness" msgid="6216871641021779698">"തെളിച്ചനില"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"അനുയോജ്യമായ തെളിച്ചം"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"അനുയോജ്യമായ തെളിച്ചത്തെ കുറിച്ച്"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"നിങ്ങളുടെ ചുറ്റുപാട്, പ്രവർത്തനം എന്നിവ അനുസരിച്ച് സ്ക്രീൻ തെളിച്ചം സ്വയമേവ ക്രമീകരിക്കും. നിങ്ങളുടെ താൽപര്യം മനസ്സിലാക്കാൻ അനുയോജ്യമായ തെളിച്ചത്തിനെ സഹായിക്കുന്നതിന് സ്ലൈഡർ നേരിട്ട് നീക്കാം."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ഓണാണ്"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ഓഫ്"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"എന്തായാലും തുടരുക"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"റദ്ദാക്കുക"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"മാഗ്നിഫിക്കേഷൻ ക്രമീകരണം"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ഒരു വിരൽ കൊണ്ടുള്ള പാനിംഗ്"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ഒരു വിരൽ കൊണ്ട് വലിച്ച് മാഗ്നിഫിക്കേഷൻ ഏരിയ നീക്കുക."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"രണ്ട് വിരലുകൾ കൊണ്ട് വലിച്ച് മാഗ്നിഫിക്കേഷൻ ഏരിയ നീക്കുക."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"സ്ക്രീനിന്റെ ഒരു ഭാഗം മാത്രം വലുതാക്കിയിരിക്കുമ്പോൾ ലഭ്യമല്ല"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"സൂം ചെയ്യുന്നതിന് ബട്ടണിൽ ടാപ്പ് ചെയ്യുക"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ഉള്ളടക്കം വലുതാക്കാൻ സ്ക്രീനിൽ വേഗത്തിൽ സൂം ഇൻ ചെയ്യുക"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>സൂം ഇൻ ചെയ്യാൻ:</b><br/> {0,number,integer}. മാഗ്നിഫിക്കേഷൻ ആരംഭിക്കാൻ കുറുക്കുവഴി ഉപയോഗിക്കുക<br/> {1,number,integer}. സ്ക്രീനിൽ ടാപ്പ് ചെയ്യുക<br/> {2,number,integer}. സ്ക്രീനിലുടനീളം നീക്കാൻ 2 വിരലുകൾ ഉപയോഗിച്ച് വലിച്ചിടുക<br/> {3,number,integer}. സൂം ക്രമീകരിക്കാൻ 2 വിരലുകൾ ഉപയോഗിച്ച് പിഞ്ച് ചെയ്യുക<br/> {4,number,integer}. മാഗ്നിഫിക്കേഷൻ നിർത്താൻ കുറുക്കുവഴി ഉപയോഗിക്കുക<br/><br/> <b>താൽക്കാലികമായി സൂം ഇൻ ചെയ്യാൻ:</b><br/> {0,number,integer}. നിങ്ങളുടെ മാഗ്നിഫിക്കേഷൻ തരം പൂർണ്ണ സ്ക്രീനിലേക്ക് സജ്ജീകരിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക<br/> {1,number,integer}. മാഗ്നിഫിക്കേഷൻ ആരംഭിക്കാൻ കുറുക്കുവഴി ഉപയോഗിക്കുക<br/> {2,number,integer}. സ്ക്രീനിൽ എവിടെയെങ്കിലും സ്പർശിച്ച് പിടിക്കുക<br/> {3,number,integer}. സ്ക്രീനിലുടനീളം നീക്കാൻ വിരൽ ഉപയോഗിച്ച് വലിച്ചിടുക<br/> {4,number,integer}. മാഗ്നിഫിക്കേഷൻ നിർത്താൻ വിരൽ സ്ക്രീനിൽ നിന്ന് എടുക്കുക"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"മാഗ്നിഫിക്കേഷൻ ഓണാക്കിയിരിക്കുമ്പോൾ, നിങ്ങളുടെ സ്ക്രീനിൽ സൂം ഇൻ ചെയ്യാവുന്നതാണ്.\n\n"<b>"സൂം ചെയ്യാൻ"</b>", മാഗ്നിഫിക്കേഷൻ ആരംഭിച്ച ശേഷം നിങ്ങളുടെ സ്ക്രീനിൽ എവിടെയെങ്കിലും ടാപ്പ് ചെയ്യുക.\n"<ul><li>"സ്ക്രോൾ ചെയ്യാൻ രണ്ടോ അതിലധികമോ വിരലുകൾ ഇഴയ്ക്കുക"</li>\n<li>"സൂം ക്രമീകരിക്കാൻ രണ്ടോ അതിലധികമോ വിരലുകൾ പിഞ്ച് ചെയ്യുക"</li></ul>\n\n<b>"താൽക്കാലികമായി സൂം ചെയ്യാൻ"</b>", മാഗ്നിഫിക്കേഷൻ ആരംഭിച്ച ശേഷം സ്ക്രീനിൽ എവിടെയെങ്കിലും സ്പർശിച്ചുപിടിക്കുക.\n"<ul><li>"സ്ക്രീനിന് ചുറ്റും നീക്കാൻ വലിച്ചിടുക"</li>\n<li>"സൂം ഔട്ട് ചെയ്യാൻ വിരൽ എടുക്കുക"</li></ul>\n\n"കീബോർഡിലും നാവിഗേഷൻ ബാറിലും നിങ്ങൾക്ക് സൂം ഇൻ ചെയ്യാനാവില്ല."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> പേജുകളിൽ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>-ാമത്തെ പേജ്"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"ഉപയോഗസഹായി ബട്ടണിന്റെ കുറുക്കുവഴി"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"മുൻഗണനാ മോഡുകൾ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"പ്രധാനപ്പെട്ട ആളുകളിൽ നിന്നും ആപ്പുകളിൽ നിന്നുമുള്ള അറിയിപ്പ് മാത്രം നേടുക"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"സജീവമാക്കൽ തരം തിരഞ്ഞെടുക്കുക"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"സമയം"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ഉദാ. \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"കലണ്ടർ"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ഉദാ. \"സ്വകാര്യ കലണ്ടർ\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"തടസ്സങ്ങൾ പരിമിതപ്പെടുത്തുക"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"ഷെഡ്യൂളുകൾ ഇല്ലാതാക്കുക"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ഇല്ലാതാക്കുക"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"കലണ്ടർ ചേർക്കുക"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"നിങ്ങളുടെ കലണ്ടർ ഉപയോഗിക്കുക"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"ഷെഡ്യൂൾ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ഷെഡ്യൂൾ സജ്ജീകരിക്കുക"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"ഷെഡ്യൂള് ചെയ്യുക"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ചില സമയങ്ങളിൽ ഫോൺ നിശബ്ദമാക്കുക"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ശബ്ദമുണ്ടാക്കുന്ന തടസ്സങ്ങൾ അനുവദിക്കുക"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ദൃശ്യതടസങ്ങൾ ബ്ലോക്കുചെയ്യൂ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ദൃശ്യ സിഗ്നലുകൾ അനുവദിക്കുക"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"നിങ്ങൾക്ക് ലഭിക്കുന്ന അറിയിപ്പുകൾ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ശ്രദ്ധയോടെ തുടരുക"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"കൂടുതൽ പ്രവർത്തനങ്ങൾ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ഡിസ്പ്ലേ ക്രമീകരണം"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ഡിസ്പ്ലേ ഓപ്ഷനുകൾ"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ഡാർക്ക് തീം പ്രവർത്തനക്ഷമമാക്കുക"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ഇരുണ്ട പശ്ചാത്തലത്തിലെ ലൈറ്റ് ടെക്സ്റ്റിന് മുൻഗണന നൽകാൻ OS-ഉം ആപ്പുകളും തമ്മിൽ മാറുക, ഇത് കണ്ണുകൾക്ക് അനുയോജ്യമായേക്കാം, ചില ഉപകരണങ്ങളിൽ കാര്യമായ തോതിൽ ബാറ്ററി ലാഭിക്കാനും സഹായിച്ചേക്കാം"</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="mode_notification_filter_title" msgid="443728483176031977">"തടസ്സങ്ങൾ ഫിൽട്ടർ ചെയ്യുക"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"തടസ്സങ്ങളൊന്നും ഫിൽട്ടർ ചെയ്തിട്ടില്ല"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ഉപയോഗിക്കാത്ത വിഭാഗങ്ങൾ കാണിക്കൂ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ഉപയോഗിക്കാത്ത വിഭാഗങ്ങൾ മറയ്ക്കൂ"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"എല്ലാം"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"പേര് മാറ്റുക"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ഐക്കൺ മാറ്റുക"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ഐക്കൺ മാറ്റുക"</string>
<string name="warning_button_text" msgid="1274234338874005639">"മുന്നറിയിപ്പ്"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"അടയ്ക്കുക"</string>
<string name="device_feedback" msgid="5351614458411688608">"ഇതേക്കുറിച്ചുള്ള ഫീഡ്ബാക്ക് അയയ്ക്കൂ"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB ഡെവലപ്പർ ഓപ്ഷൻ ഉപയോഗിക്കുന്നതിന് മുമ്പ് ഈ ഉപകരണത്തിന്റെ ഡാറ്റ പാർട്ടീഷൻ ext4 എന്നതിലേക്ക് പരിവർത്തനം ചെയ്യേണ്ടതുണ്ട്. ഈ മോഡിൽ സോഫ്റ്റ്വെയർ സമഗ്രത സംബന്ധിച്ച് ഉറപ്പ് നൽകാനാകില്ല, കൂടാതെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡാറ്റ അപകടത്തിലായേക്കാം. 16KB ഓപ്ഷൻ സജീവമാക്കുന്നതിന് ഇതിന് ശേഷം ഒരു റീബൂട്ട് കൂടി വേണ്ടി വരും. നിങ്ങൾ ഈ മോഡിൽ ആയിക്കഴിഞ്ഞ്, ഒരു സിംഗിൾ റീബൂട്ടിലൂടെ 4KB, 16KB മോഡുകൾക്കിടയിൽ പരസ്പരം മാറാം. ഈ മോഡുകളിൽ ചില ഫീച്ചറുകൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനാൽ, ചില ആപ്പുകൾ പ്രവർത്തിച്ചേക്കില്ല. ഉപകരണത്തെ തിരികെ പ്രൊഡക്ഷൻ മോഡിലേക്ക് മാറ്റുന്നതിന്, നിങ്ങൾ 4KB മോഡിലേക്ക് തിരികെ മാറുകയും ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യുകയും വേണം, ഇത് ഉപകരണത്തെ ഫാക്ടറി റീസെറ്റ് ചെയ്യും. ഉപകരണം വിജയകരമായി Android-ലേക്ക് ബൂട്ട് ചെയ്ത് കഴിഞ്ഞ്, ഡെവലപ്പർ ഓപ്ഷനുകളിൽ OEM അൺലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കുക. സ്ഥിരീകരണത്തിന് ശേഷം ഉപകരണം തുടച്ചുനീക്കുകയും ഫയൽസിസ്റ്റം ext4 എന്നതിലേക്ക് മാറ്റുകയും ചെയ്യും. ഇത് പൂർത്തിയായി കഴിഞ്ഞ്, 16KB വീണ്ടും പ്രവർത്തനക്ഷമമാക്കാൻ തിരികെ വരിക."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"എല്ലാ ഡാറ്റയും മായ്ക്കുക"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ഡാറ്റ പാർട്ടീഷൻ ext4 എന്നതിലേക്ക് വീണ്ടും ഫോർമാറ്റ് ചെയ്യാനും തുടച്ചുനീക്കാനും കഴിഞ്ഞില്ല."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB മോഡിന് ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്യണം"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16KB ഡെവലപ്പർ ഓപ്ഷൻ ഉപയോഗിക്കുന്നതിന് മുമ്പ് ഈ ഉപകരണത്തിന്റെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്യണം. ഈ മോഡിൽ സോഫ്റ്റ്വെയർ സമഗ്രത സംബന്ധിച്ച് ഉറപ്പ് നൽകാനാകില്ല, കൂടാതെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡാറ്റ അപകടത്തിലായേക്കാം. 16KB മോഡ് സജീവമാക്കുമ്പോൾ എല്ലാ ഉപയോക്തൃ ഡാറ്റയും ക്രമീകരണവും തുടച്ചുനീക്കും. ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്ത് കഴിഞ്ഞ്, 16KB ഓപ്ഷൻ സജീവമാക്കുന്നതിന് രണ്ട് റീബൂട്ടുകൾ വേണ്ടി വരും. നിങ്ങൾ ഈ മോഡിൽ ആയിക്കഴിഞ്ഞ്, ഒരു സിംഗിൾ റീബൂട്ടിലൂടെ 4KB, 16KB മോഡുകൾക്കിടയിൽ പരസ്പരം മാറാം. ഈ മോഡുകളിൽ ചില ഫീച്ചറുകൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനാൽ, ചില ആപ്പുകൾ പ്രവർത്തിച്ചേക്കില്ല. ഉപകരണത്തെ തിരികെ പ്രൊഡക്ഷൻ മോഡിലേക്ക് മാറ്റുന്നതിന്, നിങ്ങൾ 4KB മോഡിലേക്ക് തിരികെ മാറുകയും OEM/ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യുകയും വേണം (ഇത് ഉപകരണത്തെ ഫാക്ടറി റീസെറ്റ് ചെയ്യും). ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്യുക അമർത്തിയ ശേഷം വീണ്ടും ശ്രമിക്കുക. ഇത് എങ്ങനെ ചെയ്യണമെന്നത് സംബന്ധിച്ച നിർദ്ദേശങ്ങൾ at <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> എന്നതിൽ കാണാനാകും"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB പേജ്-ആഗ്നോസ്റ്റിക് മോഡ് ഉപയോഗിക്കുന്നു"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"നിങ്ങൾ പേജ്-ആഗ്നോസ്റ്റിക് മോഡിന്റെ 4KB മോഡിലാണ്. ഈ മോഡിൽ സോഫ്റ്റ്വെയർ സമഗ്രത സംബന്ധിച്ച് ഉറപ്പ് നൽകാനാകില്ല, കൂടാതെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡാറ്റ അപകടത്തിലായേക്കാം. ഈ മോഡുകളിൽ ചില ഫീച്ചറുകൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനാൽ, ചില ആപ്പുകൾ പ്രവർത്തിച്ചേക്കില്ല. പ്രൊഡക്ഷൻ മോഡിൽ തിരികെ പ്രവേശിക്കുന്നതിന്, നിങ്ങൾ ഉപകരണത്തിന്റെ ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യണം. കൂടുതൽ വായിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"നിങ്ങൾ പേജ്-ആഗ്നോസ്റ്റിക് മോഡിന്റെ 4KB മോഡിലാണ്. ഈ മോഡിൽ സോഫ്റ്റ്വെയർ സമഗ്രത സംബന്ധിച്ച് ഉറപ്പ് നൽകാനാകില്ല, കൂടാതെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡാറ്റ അപകടത്തിലായേക്കാം. ഈ മോഡുകളിൽ ചില ഫീച്ചറുകൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനാൽ, ചില ആപ്പുകൾ പ്രവർത്തിച്ചേക്കില്ല. പ്രൊഡക്ഷൻ മോഡിൽ തിരികെ പ്രവേശിക്കുന്നതിന്, നിങ്ങൾ ഉപകരണത്തിന്റെ ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യണം. ഇത് ഉപകരണത്തെ വീണ്ടും ഫാക്ടറി റീസെറ്റ് ചെയ്യുകയും പ്രൊഡക്ഷൻ ക്രമീകരണത്തിലേക്ക് പുനഃസ്ഥാപിക്കുകയും ചെയ്യും. ഉപകരണം വിജയകരമായി Android-ലേക്ക് ബൂട്ട് ചെയ്ത് കഴിഞ്ഞ്, ഡെവലപ്പർ ഓപ്ഷനുകളിൽ OEM അൺലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കുക. ഉപകരണം Android-ലേക്ക് ബൂട്ട് ചെയ്യാനായില്ലെങ്കിലോ അസ്ഥിരമാണെങ്കിലോ, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> എന്നതിൽ നിന്നുള്ള ഏറ്റവും പുതിയ ഫാക്ടറി ചിത്രങ്ങൾ ഉപയോഗിച്ച് ഉപകരണം അപ്ഡേറ്റ് ചെയ്ത ശേഷം \'ഉപകരണം തുടച്ചുനീക്കുക\', \'ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യുക\', \'എല്ലാ പാർട്ടീഷനുകളും ഫോഴ്സ് ഫ്ലാഷ് ചെയ്യുക\' എന്നതിലേക്ക് പോകുക."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB പേജ്-ആഗ്നോസ്റ്റിക് മോഡ് ഉപയോഗിക്കുന്നു"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"നിങ്ങൾ പേജ്-ആഗ്നോസ്റ്റിക് മോഡിന്റെ 16KB മോഡിലാണ്. ഈ മോഡിൽ സോഫ്റ്റ്വെയർ സമഗ്രത സംബന്ധിച്ച് ഉറപ്പ് നൽകാനാകില്ല, കൂടാതെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡാറ്റ അപകടത്തിലായേക്കാം. ഈ മോഡുകളിൽ ചില ഫീച്ചറുകൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനാൽ, ചില ആപ്പുകൾ പ്രവർത്തിച്ചേക്കില്ല. പ്രൊഡക്ഷൻ മോഡിൽ തിരികെ പ്രവേശിക്കുന്നതിന്, നിങ്ങൾ 4K മോഡിലേക്ക് തിരികെ മാറുകയും ഉപകരണത്തിന്റെ ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യുകയും വേണം. കൂടുതൽ വായിക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"നിങ്ങൾ പേജ്-ആഗ്നോസ്റ്റിക് മോഡിന്റെ 16KB മോഡിലാണ്. ഈ മോഡിൽ സോഫ്റ്റ്വെയർ സമഗ്രത സംബന്ധിച്ച് ഉറപ്പ് നൽകാനാകില്ല, കൂടാതെ ബൂട്ട് ലോഡർ അൺലോക്ക് ചെയ്തിരിക്കുമ്പോൾ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡാറ്റ അപകടത്തിലായേക്കാം. ഈ മോഡുകളിൽ ചില ഫീച്ചറുകൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനാൽ, ചില ആപ്പുകൾ പ്രവർത്തിച്ചേക്കില്ല. പ്രൊഡക്ഷൻ മോഡിൽ തിരികെ പ്രവേശിക്കുന്നതിന്, നിങ്ങൾ 4K മോഡിലേക്ക് തിരികെ മാറുകയും ഉപകരണത്തിന്റെ ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യുകയും വേണം. ഇത് ഉപകരണത്തെ വീണ്ടും ഫാക്ടറി റീസെറ്റ് ചെയ്യുകയും പ്രൊഡക്ഷൻ ക്രമീകരണത്തിലേക്ക് പുനഃസ്ഥാപിക്കുകയും ചെയ്യും. ഉപകരണം വിജയകരമായി Android-ലേക്ക് ബൂട്ട് ചെയ്ത് കഴിഞ്ഞ്, ഡെവലപ്പർ ഓപ്ഷനുകളിൽ OEM അൺലോക്ക് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കുക. ഉപകരണം Android-ലേക്ക് ബൂട്ട് ചെയ്യാനായില്ലെങ്കിലോ അസ്ഥിരമാണെങ്കിലോ, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> എന്നതിൽ നിന്നുള്ള ഏറ്റവും പുതിയ ഫാക്ടറി ചിത്രങ്ങൾ ഉപയോഗിച്ച് ഉപകരണം അപ്ഡേറ്റ് ചെയ്ത ശേഷം \'ഉപകരണം തുടച്ചുനീക്കുക\', \'ബൂട്ട് ലോഡർ ലോക്ക് ചെയ്യുക\', \'എല്ലാ പാർട്ടീഷനുകളും ഫോഴ്സ് ഫ്ലാഷ് ചെയ്യുക\' എന്നതിലേക്ക് പോകുക."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB പേജ്-ആഗ്നോസ്റ്റിക് മോഡ്"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"കൂടുതൽ വായിക്കുക"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ബഗ് റിപ്പോർട്ട് ഹാൻഡ്ലർ"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"ഒന്നിലധികം ഉപയോക്താക്കളെ അനുവദിക്കുക"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5137,7 +5202,7 @@
<string name="bluetooth_details_audio_device_type_unknown" msgid="5299284975435974206">"സജ്ജീകരിച്ചിട്ടില്ല"</string>
<string name="bluetooth_details_audio_device_type_speaker" msgid="3706227767994792124">"സ്പീക്കർ"</string>
<string name="bluetooth_details_audio_device_type_headphones" msgid="7644588291215033798">"ഹെഡ്ഫോണുകൾ"</string>
- <string name="bluetooth_details_audio_device_type_hearing_aid" msgid="6311786545025321187">"കേൾവിക്കുള്ള ഉപകരണം"</string>
+ <string name="bluetooth_details_audio_device_type_hearing_aid" msgid="6311786545025321187">"ഹിയറിംഗ് ഡിവൈസ്"</string>
<string name="bluetooth_details_audio_device_type_carkit" msgid="1866236563013629394">"കാർ"</string>
<string name="bluetooth_details_audio_device_type_other" msgid="7019481234617207563">"മറ്റുള്ളവ"</string>
<string name="ingress_rate_limit_title" msgid="2106694002836274350">"നെറ്റ്വർക്ക് ഡൗൺലോഡ് നിരക്ക് പരിധി"</string>
@@ -5259,7 +5324,7 @@
<string name="fingerprint_acquired_imager_dirty_udfps" msgid="7005042288289506776">"സെൻസറിന് സമീപമുള്ള സ്ക്രീൻ വൃത്തിയാക്കി വീണ്ടും ശ്രമിക്കുക"</string>
<string name="sim_category_converted_sim" msgid="8575548015816988908">"ഇ-സിമ്മിലേക്ക് മാറ്റി. നീക്കം ചെയ്യൂ, ഉപേക്ഷിക്കൂ."</string>
<string name="sync_across_devices_title" msgid="3447757705383089345">"ഉപകരണങ്ങളിലുടനീളം സമന്വയിപ്പിക്കുക"</string>
- <string name="device_diagnostics_title" msgid="2914523189695727897">"Device diagnostics"</string>
+ <string name="device_diagnostics_title" msgid="2914523189695727897">"ഉപകരണ ഡയഗ്നോസ്റ്റിക്സ്"</string>
<string name="audio_sharing_title" msgid="4144157137502923821">"ഓഡിയോ പങ്കിടൽ"</string>
<string name="audio_sharing_switch_title" msgid="7052827328670825701">"ഓഡിയോ പങ്കിടൂ"</string>
<string name="calls_and_alarms_device_title" msgid="6993559028175454198">"കോളുകളും അലാറങ്ങളും"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-mn/arrays.xml b/res/values-mn/arrays.xml
index c9e210c..c436c5a 100644
--- a/res/values-mn/arrays.xml
+++ b/res/values-mn/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Унтлагын цаг"</item>
+ <item msgid="4152450357280759894">"Жолоо барих"</item>
+ <item msgid="7096549258219399423">"Бодит мэт"</item>
+ <item msgid="2760716776980432977">"Удирддаг"</item>
+ <item msgid="601734478369121764">"Од"</item>
+ <item msgid="6243809315432780521">"Календарь"</item>
+ <item msgid="4913577903148415331">"Хугацаа"</item>
+ <item msgid="3653377604690057780">"Театр"</item>
+ <item msgid="3843711267408385410">"Цэцэг"</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 1ff8750..5d19131 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Сонсголын төхөөрөмжийн тохиргоо"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Товчлол, сонсголын төхөөрөмжийн зохицол"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Урьдчилсан тохируулга"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Сонсгол судлаачийн программчилсан урьдчилсан тохируулга алга"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Урьдчилсан тохируулгыг шинэчилж чадсангүй"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудио гаралт"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Аудио оролтын тухай"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Утасны түгжээг цагаараа тайлах онцлогийн талаар нэмэлт мэдээлэл авах"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Цаг нэмэх"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Цагийг хасах"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Хурууны хээ болон Царайгаар түгжээ тайлах"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Царай, хурууны хээгээр түгжээ тайлах"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ажилд зориулсан Царай, хурууны хээгээр түгжээ тайлах"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Тохируулга шаардлагатай"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Царай болон хурууны хээнүүд нэмсэн"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Төхөөрөмжийг дахин эхлүүлэх үү?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Нарийвчилсан NFC лог нь зөвхөн хөгжүүлэлтийн зориулалттай. Нэмэлт NFC өгөгдлийг алдааны мэдээнд багтаасан бөгөөд энэ нь хувийн мэдээлэл агуулж байж магадгүй. Энэ тохиргоог өөрчлөхийн тулд төхөөрөмжөө дахин эхлүүлнэ үү."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Дахин эхлүүлэх"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Дамжуулах"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"тусгал"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Утасгүй дэлгэцийг идэвхжүүлэх"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Дасан зохицох"</string>
<string name="brightness" msgid="6216871641021779698">"Гэрэлтүүлгийн түвшин"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Орчинтой зохицох гэрэлтүүлэг"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Дэлгэцийн гэрэлтүүлэг таны хүрээлэн буй орчин болон үйл ажиллагаанд автоматаар тохирно. Орчинтой зохицох гэрэлтүүлгийн таны тохиргоог мэдэхэд нь туслахын тулд гулсуулагчийг гараараа зөөх боломжтой."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Орчинтой зохицох гэрэлтүүлгийн тухай"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Дэлгэцийн гэрэлтүүлэг таны хүрээлэн буй орчин болон үйл ажиллагаанд автоматаар тохирно. Орчинтой зохицох гэрэлтүүлэгт таны тохиргоог мэдэхэд нь туслахын тулд гулсуулагчийг гараараа хөдөлгөх боломжтой."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Асаасан"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Идэвхгүй"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Дэлгэцийн цайралтын тэнцвэр"</string>
@@ -1260,7 +1290,7 @@
<string name="dark_ui_bedtime_footer_action" msgid="1493095487994054339">"Унтлагын цагийн горимын тохиргоо"</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>
+ <string name="screen_timeout" msgid="7709947617767439410">"Дэлгэц автоматаар амрах"</string>
<string name="screen_timeout_summary" msgid="5558778019594643427">"Идэвхгүй <xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g> болсны дараа"</string>
<string name="screen_timeout_summary_not_set" msgid="5107680774964178875">"Тохируулаагүй"</string>
<string name="wallpaper_settings_title" msgid="5635129851136006383">"Дэлгэцийн зураг"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Ямартай ч үргэлжлүүлэх"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Цуцлах"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Томруулах тохиргоо"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Нэг хуруугаар чиглүүлэх"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Нэг хуруугаар чирч, томруулах хэсгийг зөөнө үү."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Хоёр хуруугаар чирч, томруулах хэсгийг зөөнө үү."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Дэлгэцийн зөвхөн нэг хэсгийг томруулж байхад боломжгүй"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Томруулахын тулд товчлуурыг товшино уу"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Контентыг илүү том болгохын тулд дэлгэц дээр шуурхай томруулна уу"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Томруулахын тулд:</b><br/> {0,number,integer}. Томруулах онцлогийг эхлүүлэхийн тулд товчлол ашиглана уу<br/> {1,number,integer}. Дэлгэцийг товшино уу<br/> {2,number,integer}. Дэлгэцийн эргэн тойронд шилжихийн тулд 2 хуруугаа чирнэ үү<br/> {3,number,integer}. Томруулалтыг тохируулахын тулд 2 хуруугаараа чимхэнэ үү<br/> {4,number,integer}. Томруулах онцлогийг зогсоохын тулд товчлол ашиглана уу<br/><br/> <b>Түр хугацаанд томруулахын тулд:</b><br/> {0,number,integer}. Таны томруулах төрлийг бүтэн дэлгэц болгож тохируулсан эсэхийг шалгана уу<br/> {1,number,integer}. Томруулах онцлогийг эхлүүлэхийн тулд товчлол ашиглана уу<br/> {2,number,integer}. Дэлгэцийн аль нэг хэсгийг удаан дарна уу<br/> {3,number,integer}. Дэлгэцийн эргэн тойронд шилжихийн тулд хуруугаа чирнэ үү<br/> {4,number,integer}. Томруулах онцлогийг зогсоохын тулд хуруугаа хөндийрүүлнэ үү"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Томруулах сонголт асаалттай үед та дэлгэцээ томруулж болно.\n\n"<b>"Томруулахын тулд "</b>" томруулах сонголтыг эхлүүлж, дэлгэцийн аль нэг хэсгийг товшино уу.\n"<ul><li>"Гүйлгэхийн тулд 2 эсвэл түүнээс дээш хуруугаараа чирнэ үү"</li>\n<li>"Томруулах хэмжээг тохируулахын тулд 2 эсвэл түүнээс дээш хуруугаараа чимхэнэ үү"</li></ul>\n\n<b>"Түр хугацаанд томруулахын тулд "</b>" томруулах сонголтыг эхлүүлээд, дэлгэцийн аль нэг хэсэг дээр удаан дарна уу.\n"<ul><li>"Дэлгэцийн эргэн тойронд очихын тулд чирнэ үү"</li>\n<li>"Жижигрүүлэхийн тулд хуруугаа авна уу"</li></ul>\n\n"Та гар эсвэл навигацын самбарт томруулах боломжгүй."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>-н <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>-р хуудас"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Хандалтын товчлуурын товчлол"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Чухал байдлаар нь ангилах горим"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Зөвхөн чухал хүмүүс болон аппуудаас мэдэгдэл авах"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Идэвхжүүлэлтийн төрлийг сонгох"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Хугацаа"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Ж.нь \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Календарь"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Ж.нь \"Хувийн календарь\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Саад болох зүйлсийг хязгаарлах"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Хуваарийг устгах"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Устгах"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Календарь нэмээрэй"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Календариа ашиглаарай"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Хуваарь"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Хуваарь тохируулах"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Хуваарь"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Утасны дууг тодорхой цагт хаах"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Дуу гаргадаг саад болох зүйлсийг зөвшөөрөх"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Харааны саадыг блоклох"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Харагдаж буй дохиог зөвшөөрөх"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Танд хүрэх боломжтой мэдэгдэл"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Төвлөрсөөр байгаарай"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Нэмэлт үйлдлүүд"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Дэлгэцийн тохиргоо"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Дэлгэцийн сонголтууд"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"бараан загварыг идэвхжүүлэх"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"OS, аппуудыг бараан дэвсгэр дээрх цайвар текстийг илүүд үзэх болгож сэлгэнэ үү. Энэ нь нүдэнд амар байж болох бөгөөд зарим төхөөрөмж дээр батарей ихээр хэмнэдэг"</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="mode_notification_filter_title" msgid="443728483176031977">"Тасалдлуудыг шүүх"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ямар ч тасалдлыг шүүгээгүй"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Ашиглаагүй ангиллуудыг харуулах"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ашиглаагүй ангиллуудыг нуух"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Бүгд"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Нэр өөрчлөх"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Дүрс тэмдэг өөрчлөх"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Дүрс тэмдэг өөрчлөх"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Сануулга"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Хаах"</string>
<string name="device_feedback" msgid="5351614458411688608">"Энэ төхөөрөмжийн талаар санал илгээх"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 КБ-ын хөгжүүлэгчийн тохиргоог ашиглаж эхлэхийн өмнө энэ төхөөрөмжийн өгөгдлийн хуваалтыг ext4 рүү хөрвүүлэх шаардлагатай. Энэ горимд программ хангамжийн халдашгүй байдалд баталгаа өгөх боломжгүй бөгөөд эхэлж ачаалагчийн түгжээг тайлсан байхад утсан дээр хадгалсан аливаа өгөгдөл эрсдэлд орж магадгүй. 16 КБ-ын тохиргоог идэвхжүүлэхэд үүний дараа ахин нэг удаа дахин асаах шаардлагатай болно. Та энэ горимд орсны дараа нэг удаа дахин асааснаар 4 КБ, 16 КБ-ын хооронд нааш, цааш сэлгэх боломжтой. Зарим онцлогийг эдгээр горимд идэвхгүй болгох тул зарим аппликэйшн ажиллахгүй байж магадгүй. Төхөөрөмжийг үйлдвэрлэлийн горим руу буцаахын тулд та 4 КБ горим руу буцаж сэлгэж, дараа нь эхэлж ачаалагчийг түгжих шаардлагатай бөгөөд энэ нь төхөөрөмжийг үйлдвэрийн тохиргоонд шинэчилнэ. Тухайн төхөөрөмжийг Android руу амжилттай ачаалсны дараа Хөгжүүлэгчийн тохиргоонд OEM түгжээг тайлахыг идэвхгүй болгоно уу. Баталгаажуулсны дараа тухайн төхөөрөмжийг арчих бөгөөд файлын системийг ext4 болгож өөрчилнө. Үүнийг дууссаны дараа 16 КБ-ыг дахин идэвхжүүлэхийн тулд буцаж ирнэ үү."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Бүх өгөгдлийг устгах"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Өгөгдлийн хуваалтыг ext4 болгож дахин форматалж, арчиж чадсангүй."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 КБ-ын горимд эхэлж ачаалагчийн түгжээг тайлахыг шаарддаг"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 КБ-ын хөгжүүлэгчийн тохиргоог ашиглахын өмнө энэ төхөөрөмжид эхэлж ачаалагчийн түгжээг тайлсан байх шаардлагатай. Энэ горимд программ хангамжийн халдашгүй байдалд баталгаа өгөх боломжгүй бөгөөд эхэлж ачаалагчийн түгжээг тайлсан байхад утсан дээр хадгалсан аливаа өгөгдөл эрсдэлд орж магадгүй. 16 КБ-ын горимыг идэвхжүүлэх үед хэрэглэгчийн бүх өгөгдөл, тохиргоог арчина. Эхэлж ачаалагчийн түгжээг тайлсны дараа 16 КБ-ын тохиргоог идэвхжүүлэхэд хоёр удаа дахин асаахыг шаардана. Та энэ горимд орсны дараа нэг удаа дахин асааснаар 4 КБ, 16 КБ-ын хооронд нааш, цааш сэлгэх боломжтой. Зарим онцлогийг эдгээр горимд идэвхгүй болгох тул зарим аппликэйшн ажиллахгүй байж магадгүй. Төхөөрөмжийг үйлдвэрлэлийн горим руу буцаахын тулд та 4 КБ горим руу буцаж сэлгэж, дараа нь төхөөрөмжийн OEM/эхэлж ачаалагчийг түгжинэ (энэ нь төхөөрөмжийг үйлдвэрийн тохиргоонд шинэчилнэ). Эхэлж ачаалагчийн түгжээг тайлаад, дахин оролдоно уу. Та үүнийг хэрхэн хийх зааварчилгааг <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> дээрээс харах боломжтой"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 КБ дурын хэмжээтэй хуудасны (page-agnostic) горимыг ашиглаж байна"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Та хуудасны хэмжээгээ сэлгэж болох (page-agnostic) горимын 4 КБ горимд байна. Энэ горимд программ хангамжийн халдашгүй байдалд баталгаа өгөх боломжгүй бөгөөд эхэлж ачаалагчийн түгжээг тайлсан байхад утсан дээр хадгалсан аливаа өгөгдөл эрсдэлд орж магадгүй. Зарим онцлогийг эдгээр горимд идэвхгүй болгох тул зарим аппликэйшн ажиллахгүй байж магадгүй. Үйлдвэрлэлийн горимд дахин орохын тулд та төхөөрөмжийн эхэлж ачаалагчийг түгжих ёстой. Илүү ихийг уншихын тулд товшино уу."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Та хуудасны хэмжээгээ сэлгэж болох (page-agnostic) горимын 4 КБ горимд байна. Энэ горимд программ хангамжийн халдашгүй байдалд баталгаа өгөх боломжгүй бөгөөд эхэлж ачаалагчийн түгжээг тайлсан байхад утсан дээр хадгалсан аливаа өгөгдөл эрсдэлд орж магадгүй. Зарим онцлогийг эдгээр горимд идэвхгүй болгох тул зарим аппликэйшн ажиллахгүй байж магадгүй. Үйлдвэрлэлийн горимд дахин орохын тулд та төхөөрөмжийн эхэлж ачаалагчийг түгжих ёстой. Энэ нь төхөөрөмжийг үйлдвэрийн тохиргоонд дахин шинэчилж, үйлдвэрлэлийн тохиргоо руу сэргээнэ. Тухайн төхөөрөмжийг Android руу амжилттай ачаалсны дараа Хөгжүүлэгчийн тохиргоонд OEM түгжээг тайлахыг идэвхгүй болгоно уу. Хэрэв төхөөрөмжийг Android руу ачаалж чадаагүй эсвэл энэ нь тогтворгүй байвал <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> дээрээс төхөөрөмжийг хамгийн сүүлийн үеийн үйлдвэрийн зургаар солих эсвэл <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>-г ашиглаад, \'Төхөөрөмжийг арчих\', \'Эхэлж ачаалагчийг түгжих\' болон \'Бүх хуваалтыг хүчээр солих\'-ыг сонгоно уу."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 КБ хуудасны хэмжээгээ сэлгэж болох (page-agnostic) горимыг ашиглаж байна"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Та хуудасны хэмжээгээ сэлгэж болох (page-agnostic) горимын 16 КБ горимд байна. Энэ горимд программ хангамжийн халдашгүй байдалд баталгаа өгөх боломжгүй бөгөөд эхэлж ачаалагчийн түгжээг тайлсан байхад утсан дээр хадгалсан аливаа өгөгдөл эрсдэлд орж магадгүй. Зарим онцлогийг эдгээр горимд идэвхгүй болгох тул зарим аппликэйшн ажиллахгүй байж магадгүй. Үйлдвэрлэлийн горимд дахин орохын тулд та 4 КБ горим руу буцаж сэлгэж, дараа нь төхөөрөмжийн эхэлж ачаалагчийг түгжих ёстой. Илүү ихийг уншихын тулд товшино уу."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Та хуудасны хэмжээгээ сэлгэж болох (page-agnostic) горимын 16 КБ горимд байна. Энэ горимд программ хангамжийн халдашгүй байдалд баталгаа өгөх боломжгүй бөгөөд эхэлж ачаалагчийн түгжээг тайлсан байхад утсан дээр хадгалсан аливаа өгөгдөл эрсдэлд орж магадгүй. Зарим онцлогийг эдгээр горимд идэвхгүй болгох тул зарим аппликэйшн ажиллахгүй байж магадгүй. Үйлдвэрлэлийн горимд дахин орохын тулд та 4 КБ горим руу буцаж сэлгэж, дараа нь төхөөрөмжийн эхэлж ачаалагчийг түгжих ёстой. Энэ нь төхөөрөмжийг үйлдвэрийн тохиргоонд дахин шинэчилж, үйлдвэрлэлийн тохиргоо руу сэргээнэ. Тухайн төхөөрөмжийг Android руу амжилттай ачаалсны дараа Хөгжүүлэгчийн тохиргоонд OEM түгжээг тайлахыг идэвхгүй болгоно уу. Хэрэв төхөөрөмжийг Android руу ачаалж чадаагүй эсвэл энэ нь тогтворгүй байвал <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> дээрээс төхөөрөмжийг хамгийн сүүлийн үеийн үйлдвэрийн зургаар солих эсвэл <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>-г ашиглаад, \'Төхөөрөмжийг арчих\', \'Эхэлж ачаалагчийг түгжих\' болон \'Бүх хуваалтыг хүчээр солих\'-ыг сонгоно уу."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 КБ дурын хэмжээтэй хуудасны (page-agnostic) горим"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Цааш унших"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Алдааны мэдээний удирдагч"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"Олон хэрэглэгчийг зөвшөөрөх"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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">"Wireless debugging-г ашиглах"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-mr/arrays.xml b/res/values-mr/arrays.xml
index 29f7ccc..a31ec8f 100644
--- a/res/values-mr/arrays.xml
+++ b/res/values-mr/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"बेडटाइम"</item>
+ <item msgid="4152450357280759894">"ड्रायव्हिंग"</item>
+ <item msgid="7096549258219399423">"इमर्सिव्ह"</item>
+ <item msgid="2760716776980432977">"व्यवस्थापित"</item>
+ <item msgid="601734478369121764">"तारा"</item>
+ <item msgid="6243809315432780521">"कॅलेंडर"</item>
+ <item msgid="4913577903148415331">"वेळ"</item>
+ <item msgid="3653377604690057780">"थिएटर"</item>
+ <item msgid="3843711267408385410">"फूल"</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 b08bf0c..95cd6b4 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"श्रवणयंत्राची सेटिंग्ज"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"शॉर्टकट, श्रवणयंत्राची कंपॅटिबिलिटी"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"प्रीसेट"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"तुमच्या ऑडिओलॉजिस्टने प्रोग्राम केलेले प्रीसेट नाहीत"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"प्रीसेट अपडेट करता आले नाही"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ऑडिओ आउटपुट"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ऑडिओ आउटपुटबद्दल"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"वॉच अनलॉक बद्दल अधिक जाणून घ्या"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"वॉच जोडा"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"वॉच काढून टाका"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"फिंगरप्रिंट आणि फेस अनलॉक"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"फेस आणि फिंगरप्रिंट अनलॉक"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"कार्य प्रोफाइलसाठी फेस आणि फिंगरप्रिंट अनलॉक"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"सेटअप आवश्यक आहे"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"चेहरा आणि फिंगरप्रिंट जोडल्या"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"डिव्हाइस रीस्टार्ट करायचे आहे का?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"तपशीलवार NFC लॉगिंग हे फक्त विकासाच्या उद्देशाने आहे. बग रिपोर्टमध्ये अतिरिक्त NFC डेटाचा समावेश केला आहे, ज्यामध्ये खाजगी माहितीचा समावेश असू शकतो. हे सेटिंग बदलण्यासाठी तुमचे डिव्हाइस रीस्टार्ट करा."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"रीस्टार्ट करा"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"कास्ट करा"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"मिरर करा"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"वायरलेस डिस्प्ले सुरू करा"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"अडॅप्टिव्ह"</string>
<string name="brightness" msgid="6216871641021779698">"ब्राइटनेस पातळी"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"अडॅप्टिव्ह ब्राइटनेस"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"अडॅप्टिव्ह ब्राइटनेसबद्दल"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"तुमच्या स्क्रीनचा ब्राइटनेस तुमच्या वातावरण आणि अॅक्टिव्हिटीशी आपोआप अॅडजस्ट होईल. अडॅप्टिव्ह ब्राइटनेसला तुमची प्राधान्ये जाणून घेण्यात मदत करण्यासाठी तुम्ही स्लाइडर मॅन्युअली हलवू शकता."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"सुरू"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"बंद"</string>
@@ -1261,7 +1291,7 @@
<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>
- <string name="screen_timeout_summary" msgid="5558778019594643427">"निष्क्रियतेच्या <xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g> नंतर"</string>
+ <string name="screen_timeout_summary" msgid="5558778019594643427">"इनॅक्टिव्हिटीच्या <xliff:g id="TIMEOUT_DESCRIPTION">%1$s</xliff:g> नंतर"</string>
<string name="screen_timeout_summary_not_set" msgid="5107680774964178875">"सेट केलेले नाही"</string>
<string name="wallpaper_settings_title" msgid="5635129851136006383">"वॉलपेपर"</string>
<string name="style_and_wallpaper_settings_title" msgid="2232042809407308946">"वॉलपेपर आणि शैली"</string>
@@ -1548,7 +1578,7 @@
<string name="tether_settings_summary_usb_and_bluetooth_and_ethernet" msgid="5880591133984166550">"USB, ब्लूटूथ, इथरनेट"</string>
<string name="tether_settings_summary_all" msgid="7565193614882005775">"हॉटस्पॉट, USB, ब्लूटूथ, इथरनेट"</string>
<string name="tether_settings_summary_off" msgid="2526164899130351968">"इतर डिव्हाइससह इंटरनेट शेअर करत नाही"</string>
- <string name="tether_preference_summary_off" msgid="6266799346319794630">"बंद आहे"</string>
+ <string name="tether_preference_summary_off" msgid="6266799346319794630">"बंद"</string>
<string name="usb_tethering_button_text" msgid="7364633823180913777">"USB टेदरिंग"</string>
<string name="bluetooth_tether_checkbox_text" msgid="6108398414967813545">"ब्लूटूथ टेदरिंग"</string>
<string name="ethernet_tether_checkbox_text" msgid="959743110824197356">"इथरनेट टेदरिंग"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"तरीही पुढे सुरू ठेवा"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"रद्द करा"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"मॅग्निफिकेशन सेटिंग्ज"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"एका बोटाने पॅन करणे"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"मॅग्निफायर एका बोटाने हलवा"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"स्क्रीनभोवती हलवण्यासाठी १ बोट ड्रॅग करा"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"एका बोटाने ड्रॅग करून मॅग्निफिकेशनचा भाग हलवा."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"दोन बोटांनी ड्रॅग करून मॅग्निफिकेशनचा भाग हलवा."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"फक्त स्क्रीनचा भाग मॅग्निफाय करताना उपलब्ध नसेल"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"झूम करण्यासाठी बटणावर टॅप करा"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"आशय आणखी मोठा करून पाहण्यासाठी स्क्रीनवर झटपट झूम इन करा"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>झूम इन करण्यासाठी:</b><br/> {0,number,integer}. मॅग्निफिकेशन सुरू करण्यासाठी शॉर्टकट वापरा<br/> {1,number,integer}. स्क्रीनवर टॅप करा<br/> {2,number,integer}. स्क्रीनवर हलवण्यासाठी दोन बोटांनी ड्रॅग करा<br/> {3,number,integer}. झूम अॅडजस्ट करण्यासाठी दोन बोटांनी पिंच करा<br/> {4,number,integer}. मॅग्निफिकेशन थांबवण्यासाठी शॉर्टकट वापरा<br/><br/> <b>तात्पुरते झूम इन करण्यासाठी:</b><br/> {0,number,integer}. तुमचा मॅग्निफिकेशनचा प्रकार फुल स्क्रीनवर सेट केला असल्याची खात्री करा<br/> {1,number,integer}. मॅग्निफिकेशन सुरू करण्यासाठी शॉर्टकट वापरा<br/> {2,number,integer}. स्क्रीनवर कुठेही स्पर्श करा आणि धरून ठेवा<br/> {3,number,integer}. स्क्रीनवर हलवण्यासाठी बोटाने ड्रॅग करा<br/> {4,number,integer}. मॅग्निफिकेशन थांबवण्यासाठी बोट उचला"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>झूम इन करण्यासाठी:</b><br/> {0,number,integer}. मॅग्निफिकेशन सुरू करण्यासाठी शॉर्टकट वापरा<br/> {1,number,integer}. स्क्रीनवर टॅप करा<br/> {2,number,integer}. स्क्रीनवर हलवण्यासाठी २ बोटे ड्रॅग करा<br/> {3,number,integer}. झूम अॅडजस्ट करण्यासाठी २ बोटांनी पिंच करा<br/> {4,number,integer}. मॅग्निफिकेशन थांबवण्यासाठी शॉर्टकट वापरा<br/><br/> तुम्ही तात्पुरते झूम इन करू शकता आणि आणखी बरेच काही करू शकता."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>झूम इन करण्यासाठी:</b><br/> {0,number,integer}. मॅग्निफिकेशन सुरू करण्यासाठी शॉर्टकट वापरा<br/> {1,number,integer}. स्क्रीनवर टॅप करा<br/> {2,number,integer}. स्क्रीनवर हलवण्यासाठी १ किंवा २ बोटे ड्रॅग करा<br/> {3,number,integer}. झूम अॅडजस्ट करण्यासाठी २ बोटांनी पिंच करा<br/> {4,number,integer}. मॅग्निफिकेशन थांबवण्यासाठी शॉर्टकट वापरा<br/><br/> तुम्ही तात्पुरते झूम इन करू शकता आणि आणखी बरेच काही करू शकता."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"मॅग्निफिकेशन सुरू असल्यास, तुम्ही तुमची स्क्रीन झूम इन करू शकता.\n\n"<b>"झूम करण्यासाठी"</b>", मॅग्निफिकेशन सुरू करा आणि त्यानंतर स्क्रीनवर कुठेही टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी दोन किंवा अधिक बोटांनी ड्रॅग करा."</li>\n<li>"झूम अॅडजस्ट करण्यासाठी दोन किंवा अधिक बोटांनी पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी "</b>", मॅग्निफिकेशन सुरू करा आणि स्क्रीनवर कुठेही धरून ठेवा.\n"<ul><li>"स्क्रीनवर कुठेही जाण्यासाठी ड्रॅग करा "</li>\n<li>"झूम आउट करण्यासाठी बोट उचला"</li></ul>\n\n"तुम्ही कीबोर्ड किंवा नेव्हिगेशन बार वर झूम इन करू शकत नाही."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> पैकी <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> पेज"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"अॅक्सेसिबिलिटी बटणासाठी शॉर्टकट"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{None}=1{एक शेड्युल सेट केले}other{# शेड्युल सेट केली}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"व्यत्यय आणू नका"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"प्राधान्य मोड"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"फक्त महत्त्वाच्या लोकांच्या आणि अॅप्सच्या सूचना मिळवा"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"अॅक्टिव्हेशनचे प्रकार निवडा"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"वेळ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"उदा. \"संध्याकाळी ९.३० – ५.००\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"कॅलेंडर"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"उदा. \"वैयक्तिक कॅलेंडर\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"व्यत्यय मर्यादित करा"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"शेड्युल हटवा"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"हटवा"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"कॅलेंडर जोडा"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"तुमचे कॅलेंडर वापरा"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"शेड्यूल"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"शेड्यूल सेट करा"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"शेड्युल"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"काही वेळेला फोन शांत करा"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"आवाज करतात त्या सर्व व्यत्ययांना अनुमती द्या"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"दृश्य व्यत्यय ब्लॉक करा"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"व्हिज्युअल सिग्नलना अनुमती द्या"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"तुमच्यापर्यंत पोहोचू शकणारी नोटिफिकेशन"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"लक्ष केंद्रित करा"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"अतिरिक्त कृती"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"डिस्प्ले सेटिंग्ज"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"डिस्प्ले पर्याय"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"गडद थीम सुरू करा"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"गडद बॅकग्राउंडवर फिकट मजकुराला प्राधान्य देण्यासाठी OS आणि ॲप्स स्विच करा, ज्यामुळे डोळ्यांवर ताण येत नाही व काही डिव्हाइसवर लक्षणीय प्रमाणात बॅटरीची बचत होते"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{No display changes}=1{{effect_1}}=2{{effect_1} आणि {effect_2}}=3{{effect_1}, {effect_2} आणि {effect_3}}other{{effect_1}, {effect_2} आणि आणखी #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"व्यत्ययांना फिल्टर करा"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"कोणतेही व्यत्यय फिल्टर केलेले नाहीत"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"न वापरलेल्या वर्गवाऱ्या दाखवा"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"न वापरलेल्या वर्गवाऱ्या लपवा"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"सर्व"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"नाव बदला"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"आयकन बदला"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"आयकन बदला"</string>
<string name="warning_button_text" msgid="1274234338874005639">"चेतावणी"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"बंद करा"</string>
<string name="device_feedback" msgid="5351614458411688608">"या डिव्हाइसबद्दल फीडबॅक पाठवा"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"१६KB डेव्हलपर पर्याय वापरण्यापूर्वी या डिव्हाइसच्या डेटा पार्टिशनचे ext4 मध्ये रूपांतर करणे आवश्यक आहे. या मोडमध्ये सॉफ्टवेअर इंटेग्रिटीची हमी देता येणार नाही आणि बूटलोडर अनलॉक केलेला असताना फोनवर स्टोअर केलेल्या कोणत्याही डेटाला धोका असू शकतो. १६KB पर्याय अॅक्टिव्हेट करण्यासाठी यानंतर आणखी एकदा रीबूट करावे लागेल. तुम्ही या मोडमध्ये असाल, तेव्हा तुम्ही एकदाच रीबूट करून ४KB आणि १६KB मोडमध्ये मागे व पुढे स्विच करू शकता. या मोडमध्ये काही वैशिष्ट्ये बंद केली जातील, त्यामुळे काही अॅप्लिकेशन कदाचित काम करणार नाहीत. डिव्हाइसला उत्पादन मोडवर परत आणण्यासाठी, तुम्हाला ४kB मोडवर परत स्विच करावे लागेल आणि त्यानंतर डिव्हाइसला फॅक्टरी रीसेट करणारा बूटलोडर लॉक करावा लागेल. Android मध्ये डिव्हाइस यशस्वीरीत्या बूट झाल्यानंतर, डेव्हलपर पर्यायांमध्ये OEM अनलॉक करणे हे बंद करा. डिव्हाइस पुसून टाकले जाईल आणि कन्फर्मेशननंतर फाइलसिस्टीम ext4 वर बदलली जाईल. हे पूर्ण झाल्यानंतर, कृपया १६KB पुन्हा सुरू करण्यासाठी परत या."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"सर्व डेटा मिटवा"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"डेटाचे पार्टिशन ext4 वर पुन्हा फॉरमॅट करून पुसून टाकता आले नाही."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"१६KB मोडसाठी बूटलोडर अनलॉक करणे आवश्यक आहे"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"१६KB डेव्हलपर पर्याय वापरण्यापूर्वी या डिव्हाइसचा बूटलोडर अनलॉक करावा लागेल. या मोडमध्ये सॉफ्टवेअर इंटेग्रिटीची हमी देता येणार नाही आणि बूटलोडर अनलॉक केलेला असताना फोनवर स्टोअर केलेल्या कोणत्याही डेटाला धोका असू शकतो. १६KB मोड अॅक्टिव्हेट केल्यावर सर्व वापरकर्ता डेटा आणि सेटिंग्ज पुसून टाकली जातील. बूटलोडर अनलॉक केल्यावर, १६KB पर्याय अॅक्टिव्हेट करण्यासाठी दोन वेळा रीबूट करावे लागेल. तुम्ही या मोडमध्ये असाल, तेव्हा तुम्ही एकदाच रीबूट करून ४KB आणि १६KB मोडमध्ये मागे व पुढे स्विच करू शकता. या मोडमध्ये काही वैशिष्ट्ये बंद केली जातील, त्यामुळे काही अॅप्लिकेशन कदाचित काम करणार नाहीत. डिव्हाइसला उत्पादन मोडवर परत आणण्यासाठी, तुम्हाला ४KB मोडवर परत स्विच करावे लागेल आणि त्यानंतर डिव्हाइस (फॅक्टरी रीसेट करणारा) OEM/बूटलोडर लॉक करावा लागेल. कृपया बूटलोडर अनलॉक करा आणि पुन्हा प्रयत्न करा. हे कसे करावे यासाठीच्या सूचना तुम्ही <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> येथे पाहू शकता"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"४KB पेज अज्ञात मोड वापरत आहे"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"तुम्ही पेज अज्ञात मोडच्या ४KB मोडमध्ये आहात. या मोडमध्ये सॉफ्टवेअर इंटेग्रिटीची हमी देता येणार नाही आणि बूटलोडर अनलॉक केलेला असताना फोनवर स्टोअर केलेल्या कोणत्याही डेटाला धोका असू शकतो. या मोडमध्ये काही वैशिष्ट्ये बंद केली जातील, त्यामुळे काही अॅप्लिकेशन कदाचित काम करणार नाहीत. उत्पादन मोडमध्ये पुन्हा एंटर करण्यासाठी, तुम्हाला डिव्हाइसचा बूटलोडर लॉक करावा लागेल. आणखी वाचण्यासाठी टॅप करा."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"तुम्ही पेज अज्ञात मोडच्या ४KB मोडमध्ये आहात. या मोडमध्ये सॉफ्टवेअर इंटेग्रिटीची हमी देता येणार नाही आणि बूटलोडर अनलॉक केलेला असताना फोनवर स्टोअर केलेल्या कोणत्याही डेटाला धोका असू शकतो. या मोडमध्ये काही वैशिष्ट्ये बंद केली जातील, त्यामुळे काही अॅप्लिकेशन कदाचित काम करणार नाहीत. उत्पादन मोडमध्ये पुन्हा एंटर करण्यासाठी, तुम्हाला डिव्हाइसचा बूटलोडर लॉक करावा लागेल. यामुळे डिव्हाइस पुन्हा फॅक्टरी रीसेट होईल आणि उत्पादन सेटिंग्जवर रिस्टोअर केले जाईल. Android मध्ये डिव्हाइस यशस्वीरीत्या बूट झाल्यानंतर, डेव्हलपर पर्यायांमध्ये OEM अनलॉक करणे हे बंद करा. डिव्हाइस Android मध्ये बूट होत नसल्यास किंवा ते अस्थिर असल्यास, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> येथील नवीनतम फॅक्टरी इमेजच्या मदतीने डिव्हाइस पुन्हा फ्लॅश करा किंवा <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> वापरा आणि \'डिव्हाइस पुसून टाका\', \'बूटलोडर लॉक करा\' व \'सर्व पार्टिशन सक्तीने फ्लॅश करा\' हे निवडा."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"१६KB पेज अज्ञात मोड वापरत आहे"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"तुम्ही पेज अज्ञात मोडच्या १६KB मोडमध्ये आहात. या मोडमध्ये सॉफ्टवेअर इंटेग्रिटीची हमी देता येणार नाही आणि बूटलोडर अनलॉक केलेला असताना फोनवर स्टोअर केलेल्या कोणत्याही डेटाला धोका असू शकतो. या मोडमध्ये काही वैशिष्ट्ये बंद केली जातील, त्यामुळे काही अॅप्लिकेशन कदाचित काम करणार नाहीत. उत्पादन मोडमध्ये पुन्हा एंटर करण्यासाठी, तुम्हाला ४K मोडवर परत स्विच करावे लागेल आणि त्यानंतर डिव्हाइसचा बूटलोडर लॉक करावा लागेल. आणखी वाचण्यासाठी टॅप करा."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"तुम्ही पेज अज्ञात मोडच्या १६KB मोडमध्ये आहात. या मोडमध्ये सॉफ्टवेअर इंटेग्रिटीची हमी देता येणार नाही आणि बूटलोडर अनलॉक केलेला असताना फोनवर स्टोअर केलेल्या कोणत्याही डेटाला धोका असू शकतो. या मोडमध्ये काही वैशिष्ट्ये बंद केली जातील, त्यामुळे काही अॅप्लिकेशन कदाचित काम करणार नाहीत. उत्पादन मोडमध्ये पुन्हा एंटर करण्यासाठी, तुम्हाला ४K मोडवर परत स्विच करावे लागेल आणि त्यानंतर डिव्हाइसचा बूटलोडर लॉक करावा लागेल. यामुळे डिव्हाइस पुन्हा फॅक्टरी रीसेट होईल आणि उत्पादन सेटिंग्जवर रिस्टोअर केले जाईल. Android मध्ये डिव्हाइस यशस्वीरीत्या बूट झाल्यानंतर, डेव्हलपर पर्यायांमध्ये OEM अनलॉक करणे हे बंद करा. डिव्हाइस Android मध्ये बूट होत नसल्यास किंवा ते अस्थिर असल्यास, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> येथील नवीनतम फॅक्टरी इमेजच्या मदतीने डिव्हाइस पुन्हा फ्लॅश करा किंवा <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> वापरा आणि \'डिव्हाइस पुसून टाका\', \'बूटलोडर लॉक करा\' व \'सर्व पार्टिशन सक्तीने फ्लॅश करा\' हे निवडा."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"१६KB पेज अज्ञात मोड"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"आणखी वाचा"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"बग रिपोर्ट हँडलर"</string>
@@ -5009,14 +5069,15 @@
<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="6686858308083037810">"एकाहून अधिक वापरकर्त्यांना अनुमती द्या"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
<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="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"अडॅप्टिव्ह ब्राइटनेस वापरणे"</string>
+ <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"अडॅप्टिव्ह ब्राइटनेस वापरा"</string>
<string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"वाय-फाय कॉलिंग वापरणे"</string>
<string name="default_see_all_apps_title" msgid="7481113230662612178">"सर्व अॅप्स पहा"</string>
<string name="smart_forwarding_title" msgid="8368634861971949799">"स्मार्ट फॉरवर्डिंग"</string>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml
index 62c7449..9b5af35 100644
--- a/res/values-ms/arrays.xml
+++ b/res/values-ms/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Waktu tidur"</item>
+ <item msgid="4152450357280759894">"Memandu"</item>
+ <item msgid="7096549258219399423">"Mengasyikkan"</item>
+ <item msgid="2760716776980432977">"Terurus"</item>
+ <item msgid="601734478369121764">"Bintang"</item>
+ <item msgid="6243809315432780521">"Kalendar"</item>
+ <item msgid="4913577903148415331">"Masa"</item>
+ <item msgid="3653377604690057780">"Teater"</item>
+ <item msgid="3843711267408385410">"Bunga"</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 ee111aa..b97c3fd 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Tetapan peranti pendengaran"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Pintasan, keserasian alat bantu pendengaran"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Pratetapan"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Tiada pratetapan yang diaturkan oleh ahli audiologi anda"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Tidak dapat mengemaskinikan pratetapan"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Output audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Perihal output audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Ketahui lebih lanjut tentang Buka Kunci Jam Tangan"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Tambahkan jam tangan"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Alih keluar jam tangan"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Buka Kunci Cap Jari & Wajah"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Buka Kunci Wajah & Cap Jari"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Buka Kunci Wajah & Cap Jari untuk kerja"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Persediaan diperlukan"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Wajah dan cap jari ditambahkan"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Pasang apl"</b>\n"Pasang apl yang mahu anda rahsiakan dalam ruang anda"</string>
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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 anda tidak akan dipaparkan dalam pengurus kebenaran, papan pemuka privasi dan tetapan lain apabila ruang privasi anda 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 anda 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_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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Mulakan Semula Peranti?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Pengelogan butiran NFC adalah khusus untuk tujuan pembangunan sahaja. Data tambahan NFC disertakan dalam laporan pepijat yang mungkin mengandungi maklumat peribadi. Mulakan semula peranti anda untuk menukar tetapan ini."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Mulakan semula"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"cermin"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Dayakan paparan wayarles"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Boleh suai"</string>
<string name="brightness" msgid="6216871641021779698">"Tahap kecerahan"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Kecerahan boleh suai"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Kecerahan skrin anda akan dilaraskan secara automatik dengan persekitaran dan aktiviti. Anda boleh mengalihkan peluncur secara manual untuk membantu kecerahan boleh suai mempelajari pilihan anda."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Perihal kecerahan boleh suai"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Kecerahan skrin akan dilaraskan secara automatik dengan persekitaran dan aktiviti anda. Anda boleh mengalihkan peluncur secara manual untuk membantu kecerahan boleh suai mempelajari pilihan anda."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Hidup"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Mati"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"Paparkan imbangan putih"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Pengguna dipilih: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Pertuturan"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Kelajuan penuding"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Pengawal Permainan"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Ubah hala getaran"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Hantar getaran ke pengawal permainan apabila disambungkan"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Teruskan juga"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Batal"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Tetapan pembesaran"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Penyorotan satu jari"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Gerakkan kanta pembesar menggunakan 1 jari"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Seret 1 jari untuk menerokai skrin"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Alihkan kawasan pembesaran dengan menyeret satu jari."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Alihkan kawasan pembesaran dengan menyeret dua jari."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Tidak tersedia semasa hanya membesarkan sebahagian daripada skrin"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Ketik butang untuk mengezum"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zum masuk dengan pantas pada skrin untuk menjadikan kandungan lebih besar"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Untuk mengezum masuk:</b><br/> {0,number,integer}. Gunakan pintasan untuk memulakan pembesaran<br/> {1,number,integer}. Ketik skrin<br/> {2,number,integer}. Seret 2 jari untuk menerokai skrin<br/> {3,number,integer}. Jepit dengan 2 jari untuk melaraskan zum<br/> {4,number,integer}. Gunakan pintasan untuk menghentikan pembesaran<br/><br/> <b>Untuk mengezum masuk sementara:</b><br/> {0,number,integer}. Pastikan jenis pembesaran ditetapkan kepada skrin penuh<br/> {1,number,integer}. Gunakan pintasan untuk memulakan pembesaran<br/> {2,number,integer}. Sentuh & tahan di mana-mana pada skrin<br/> {3,number,integer}. Seret jari untuk menerokai skrin<br/> {4,number,integer}. Angkat jari untuk menghentikan pembesaran"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Untuk mengezum masuk:</b><br/> {0,number,integer}. Gunakan pintasan untuk memulakan pembesaran<br/> {1,number,integer}. Ketik skrin<br/> {2,number,integer}. Seret 2 jari untuk menerokai skrin<br/> {3,number,integer}. Cubit dengan 2 jari untuk melaraskan zum<br/> {4,number,integer}. Gunakan pintasan untuk menghentikan pembesaran<br/><br/> Anda juga boleh mengezum masuk untuk sementara waktu dan banyak lagi."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Untuk mengezum masuk:</b><br/> {0,number,integer}. Gunakan pintasan untuk memulakan pembesaran<br/> {1,number,integer}. Ketik skrin<br/> {2,number,integer}. Seret 1 atau 2 jari untuk menerokai skrin<br/> {3,number,integer}. Cubit dengan 2 jari untuk melaraskan zum<br/> {4,number,integer}. Gunakan pintasan untuk menghentikan pembesaran<br/><br/> Anda juga boleh mengezum masuk untuk sementara waktu dan banyak lagi."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Apabila pembesaran dihidupkan, anda boleh mengezum masuk pada skrin.\n\n"<b>"Untuk mengezum"</b>", mulakan pembesaran, kemudian ketik di mana-mana pada skrin.\n"<ul><li>"Seret sekurang-kurangnya 2 jari untuk menatal"</li>\n<li>"Cubit menggunakan sekurang-kurangnya 2 jari untuk melaraskan zum"</li></ul>\n\n<b>"Untuk mengezum sementara"</b>", mulakan pembesaran, kemudian sentuh & tahan di mana-mana pada skrin.\n"<ul><li>"Seret untuk beralih-alih di sekitar skrin"</li>\n<li>"Angkat jari untuk mengezum keluar"</li></ul>\n\n"Anda tidak boleh mengezum masuk pada papan kekunci atau bar navigasi."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Halaman <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> daripada <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Pintasan butang kebolehaksesan"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Tiada}=1{1 jadual ditetapkan}other{# jadual ditetapkan}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Jangan Ganggu"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Mod Keutamaan"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Dapatkan pemberitahuan daripada orang dan apl penting sahaja"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Pilih jenis pengaktifan"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Masa"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Cth. \"9:30 – 5:00 PTG\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Cth. \"Kalendar peribadi\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Hadkan gangguan"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Hidupkan Jangan Ganggu"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Bunyi penggera dan media boleh ganggu"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Jadual"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Padamkan jadual"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Padam"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Jadual"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Jadual"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Tambahkan kalendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Gunakan kalendar anda"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Jadual"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Tetapkan jadual"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Jadual"</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> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Jadual"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Senyapkan telefon pd masa tertentu"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Benarkan gangguan yang berbunyi"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Sekat gangguan visual"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Benarkan isyarat visual"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Pemberitahuan yang boleh anda terima"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Tumpukan perhatian"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Tindakan tambahan"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Tetapan paparan"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Pilihan paparan"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"dayakan tema gelap"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Tukar OS dan apl untuk mengutamakan teks terang pada latar gelap, yang mungkin lebih mudah dilihat dan memperoleh penjimatan bateri yang ketara pada sesetengah peranti"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Tiada perubahan paparan}=1{{effect_1}}=2{{effect_1} dan {effect_2}}=3{{effect_1}, {effect_2} dan {effect_3}}other{{effect_1}, {effect_2} dan # lagi}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Tapis gangguan"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Tiada gangguan ditapis"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Pilihan paparan untuk pemberitahuan yang ditapis"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Apabila Jangan Ganggu dihidupkan"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Tiada bunyi daripada pemberitahuan"</string>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategori"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Lain-lain"</string>
<string name="no_channels" msgid="4716199078612071915">"Apl ini belum menyiarkan sebarang pemberitahuan"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Tunjukkan kategori tidak digunakan"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Tetapan tambahan dalam apl"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Tunjukkan kategori tidak digunakan"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Sembunyikan kategori tidak digunakan"</string>
@@ -3774,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Apl yang dipilih"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Tiada"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Semua"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Benarkan apl membatalkan Jangan Ganggu"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apl yang boleh ganggu"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Pilih lagi apl"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Tukar kepada penggera sahaja selama satu jam hingga {time}}other{Tukar kepada penggera sahaja selama # jam hingga {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Tukar kepada penggera sahaja hingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Tukar kepada sentiasa ganggu"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Namakan semula"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Tukar ikon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Tukar ikon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Amaran"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Tutup"</string>
<string name="device_feedback" msgid="5351614458411688608">"Hantar maklum balas peranti ini"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Pemetakan data peranti ini perlu ditukar kepada ext4 sebelum menggunakan pilihan pembangun 16KB. Integriti perisian tidak dapat dijamin dalam mod ini dan sebarang data yang disimpan pada telefon semasa pemuat but tidak berkunci mungkin berisiko. Pengaktifan pilihan 16KB akan memerlukan satu lagi but semula selepas ini. Setelah anda berada dalam mod ini, anda boleh bertukar berulang kali antara mod 4KB dengan 16KB menggunakan satu but semula. Sesetengah ciri akan dilumpuhkan dalam mod ini, maka sesetengah aplikasi mungkin tidak berfungsi. Untuk mengembalikan peranti kepada mod pengeluaran, anda perlu menukar kembali kepada mod 4KB dan mengunci pemuat but, yang akan menetapkan semula peranti kepada tetapan kilang. Selepas peranti berjaya dibut kepada Android, lumpuhkan pembukaan kunci OEM dalam Pilihan pembangun. Data peranti akan dihapuskan dan sistem fail akan ditukar kepada ext4 selepas pengesahan. Selepas proses ini selesai, sila kembali untuk mendayakan semula 16KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Padamkan semua data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Gagal memformat semula dan menghapuskan pemetakan data kepada ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Buka Kunci Pemuat But Diperlukan untuk mod 16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Peranti ini perlu membuka kunci pemuat but sebelum menggunakan pilihan pembangun 16KB. Integriti perisian tidak boleh dijamin dalam mod ini dan sebarang data yang disimpan pada telefon semasa pemuat but tidak berkunci mungkin dalam risiko. Semua data dan tetapan pengguna akan dihapuskan semasa pengaktifan mod 16KB. Setelah pemuat but tidak berkunci, pengaktifan pilihan 16KB memerlukan dua but semula. Setelah anda menggunakan mod ini, anda boleh bertukar berulang kali antara mod 4KB dengan 16KB menerusi satu but semula. Sesetengah ciri akan dilumpuhkan dalam mod ini, maka sesetengah aplikasi mungkin tidak berfungsi. Untuk mengembalikan peranti kepada mod pengeluaran, anda perlu menukar semula kepada mod 4KB dan melakukan penguncian OEM/pemuat but (yang akan melakukan tetapan semula kilang) pada peranti. Sila buka kunci pemuat but dan cuba lagi. Anda boleh melihat arahan tentang cara melakukan perkara ini menerusi <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Menggunakan mod halaman agnostik 4KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Anda menggunakan mod 4KB bagi mod halaman agnostik. Integriti perisian tidak dapat dijamin dalam mod ini, dan sebarang data yang disimpan pada telefon semasa pemuat but tidak berkunci mungkin berisiko. Sesetengah ciri akan dilumpuhkan dalam mod ini, maka sesetengah aplikasi mungkin tidak berfungsi. Untuk memasuki semula mod pengeluaran, anda perlu mengunci pemuat but peranti. Ketik untuk mengetahui lebih lanjut."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Anda menggunakan mod 4KB bagi mod halaman agnostik. Integriti perisian tidak dapat dijamin dalam mod ini dan sebarang data yang disimpan pada telefon semasa pemuat but tidak berkunci mungkin berisiko. Sesetengah ciri akan dilumpuhkan dalam mod ini, maka sesetengah aplikasi mungkin tidak berfungsi. Untuk memasuki semula mod pengeluaran, anda perlu mengunci pemuat but peranti. Tindakan ini akan menetapkan semula peranti kepada tetapan kilang dan mengembalikan peranti kepada tetapan pengeluaran. Selepas peranti berjaya dibut kepada Android, lumpuhkan pembukaan kunci OEM dalam Pilihan pembangun. Jika peranti gagal mengebut kepada Android atau tidak stabil, denyar semula peranti dengan imej kilang terkini daripada <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> atau gunakan <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> dan pilih \'Hapuskan Peranti\', \'Kunci Pemuat But\' dan \'Denyar Paksa semua pemetakan\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Menggunakan mod halaman agnostik 16KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Anda menggunakan mod 16KB bagi mod halaman agnostik. Integriti perisian tidak dapat dijamin dalam mod ini dan sebarang data yang disimpan pada telefon semasa pemuat but tidak berkunci mungkin berisiko. Sesetengah ciri akan dilumpuhkan dalam mod ini, maka sesetengah aplikasi mungkin tidak berfungsi. Untuk memasuki semula mod pengeluaran, anda perlu menukar kembali kepada mod 4K dan mengunci pemuat but peranti. Ketik untuk mengetahui lebih lanjut."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Anda menggunakan mod 16KB bagi mod halaman agnostik. Integriti perisian tidak boleh dijamin dalam mod ini dan sebarang data yang disimpan pada telefon semasa pemuat but tidak berkunci mungkin dalam risiko. Sesetengah ciri akan dilumpuhkan dalam mod ini, maka sesetengah aplikasi mungkin tidak berfungsi. Untuk memasuki semula mod pengeluaran, anda perlu menukar kembali kepada mod 4K dan mengunci pemuat but peranti. Tindakan ini akan menetapkan semula peranti kepada tetapan kilang dan memulihkan peranti pada tetapan pengeluaran. Selepas peranti berjaya dibut masuk dalam Android, lumpuhkan pembukaan kunci OEM dalam Pilihan pembangun. Jika peranti gagal mengebut masuk dalam Android atau tidak stabil, denyar semula peranti dengan imej kilang terkini daripada <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> dan pilih \'Hapuskan Peranti\', \'Kunci Pemuat But\' dan \'Denyar Paksa semua pemetakan\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Mod Halaman agnostik 16KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Baca lebih lanjut"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Pengendali laporan pepijat"</string>
@@ -5009,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Gunakan penyematan apl"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Gunakan pilihan pembangun"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Gunakan perkhidmatan cetakan"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Benarkan berbilang pengguna"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"izinkan, beberapa, pengguna, benarkan, banyak"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"berbilang, pengguna, profil, pengguna, akaun, tukar, pelbagai"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Gunakan nyahpepijat wayarles"</string>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-my/arrays.xml b/res/values-my/arrays.xml
index 939b5ae..d754ebb 100644
--- a/res/values-my/arrays.xml
+++ b/res/values-my/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"အိပ်ရာဝင်ချိန်"</item>
+ <item msgid="4152450357280759894">"ကားမောင်းခြင်း"</item>
+ <item msgid="7096549258219399423">"စီးမျောခြင်း"</item>
+ <item msgid="2760716776980432977">"စီမံပြီးဖြစ်သည်"</item>
+ <item msgid="601734478369121764">"ကြယ်"</item>
+ <item msgid="6243809315432780521">"ပြက္ခဒိန်"</item>
+ <item msgid="4913577903148415331">"အချိန်"</item>
+ <item msgid="3653377604690057780">"ပြဇာတ်ရုံ"</item>
+ <item msgid="3843711267408385410">"ပန်းပွင့်"</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 15bc447..c5fbbb9 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"နားကြားကိရိယာ ဆက်တင်များ"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ဖြတ်လမ်းလင့်ခ်၊ နားကြားကိရိယာ တွဲဖက်အသုံးပြုနိုင်မှု"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ကြိုတင်သတ်မှတ်ချက်"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"သင့်နားအထူးကုဆရာဝန်က စီမံပေးထားသည့် အသင့်သုံးများ မရှိပါ"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"အသင့်သုံးကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"အသံထွက်မည့် ကိရိယာ"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"အသံထွက်မည့် ကိရိယာအကြောင်း"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"‘နာရီဖြင့်ဖွင့်ခြင်း’ အကြောင်း ပိုမိုလေ့လာရန်"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"နာရီထည့်ရန်"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"နာရီ ဖယ်ရှားရန်"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"လက်ဗွေနှင့် မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"မျက်နှာ၊ လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"အလုပ်အတွက် ‘မျက်နှာပြနှင့် လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"စနစ်ထည့်သွင်းရန် လိုအပ်သည်"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"မျက်နှာနှင့် လက်ဗွေများ ထည့်ပြီးပါပြီ"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"စက်ကို ပြန်စမလား။"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"အသေးစိတ် NFC မှတ်တမ်းတင်ခြင်းကို ဆော့ဖ်ဝဲရေးရန်အတွက်သာ ရည်ရွယ်ထားသည်။ ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ ပါရှိနိုင်သော ချွတ်ယွင်းမှု အစီရင်ခံချက်များတွင် ထပ်ဆောင်း NFC ဒေတာ ပါဝင်သည်။ ဤဆက်တင်ပြောင်းရန် သင့်စက်ကို ပြန်စပါ။"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ပြန်စရန်"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ကာစ်"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"စကရင်ပွားရန်"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ကြိုးမဲ့ ပြသမှုကို ဖွင့်ရန်"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"အလိုက်အထိုက်"</string>
<string name="brightness" msgid="6216871641021779698">"တောက်ပမှု အဆင့်"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"အလိုက်သင့် တောက်ပမှု"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"အလိုက်သင့် တောက်ပမှုအကြောင်း"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"သင်၏ ဖန်သားပြင်တောက်ပမှုသည် ပတ်ဝန်းကျင်နှင့် လုပ်ဆောင်ချက်များကိုလိုက်၍ အလိုအလျောက် ချိန်ညှိသွားပါမည်။ သင့်ရွေးချယ်မှုများကို အလိုက်သင့် တောက်ပမှုပြောင်းလဲခြင်းစနစ်က ပိုမိုလေ့လာနိုင်စေရန် ရွှေ့တုန်းကို သင်ကိုယ်တိုင် ရွှေ့နိုင်ပါသည်။"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ဖွင့်"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ပိတ်"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"မည်သို့ပင်ဖြစ်စေ ရှေ့ဆက်ရန်"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"မလုပ်တော့"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ပုံကြီးချဲ့ခြင်း ဆက်တင်များ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"လက်တစ်ချောင်းသုံး ရွှေ့ကြည့်ခြင်း"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"မှန်ဘီလူးကို လက် ၁ ချောင်းဖြင့် ရွှေ့ပါ"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"ဖန်သားပြင်ပေါ်တွင် ရွှေ့ကြည့်ရန် လက် ၁ ချောင်းဖြင့် ဖိဆွဲပါ"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"လက်တစ်ချောင်းဖြင့် ဖိဆွဲ၍ ချဲ့ပြသည့်အကွက်ကို ရွှေ့နိုင်သည်။"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"လက်နှစ်ချောင်းဖြင့် ဖိဆွဲ၍ ချဲ့ပြသည့်အကွက်ကို ရွှေ့နိုင်သည်။"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"ဖန်သားပြင်၏တစ်စိတ်တစ်ပိုင်းကိုသာ ချဲ့နေစဉ် မရနိုင်ပါ"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ဇူးမ်အသုံးပြုရန် ခလုတ်ကို တို့ပါ"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"အကြောင်းအရာပိုကြီးလာစေရန် ဖန်သားပြင်တွင် အမြန်ဇူးမ်ဆွဲနိုင်သည်"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ဇူးမ်ဆွဲရန်အတွက်-</b><br/> {0,number,integer}။ စတင်ချဲ့ရန် ဖြတ်လမ်းလင့်ခ်ကို သုံးပါ<br/> {1,number,integer}။ ဖန်သားပြင်ကို တို့ပါ<br/> {2,number,integer}။ ဖန်သားပြင်ပေါ်တွင် ရွှေ့ကြည့်ရန် လက် ၂ ချောင်းဖြင့် ဖိဆွဲပါ<br/> {3,number,integer}။ ဇူးမ်ချိန်ညှိရန် လက် ၂ ချောင်းဖြင့် ချဲ့ချုံ့ပါ<br/> {4,number,integer}။ ချဲ့ခြင်းကို ရပ်ရန် ဖြတ်လမ်းလင့်ခ်ကို သုံးပါ<br/><br/> <b>ယာယီ ဇူးမ်ဆွဲရန်-</b><br/> {0,number,integer}။ ချဲ့သည့်ပုံစံကို ဖန်သားပြင်အပြည့် သတ်မှတ်ထားကြောင်း သေချာပါစေ<br/> {1,number,integer}။ စတင်ချဲ့ရန် ဖြတ်လမ်းလင့်ခ်ကို သုံးပါ<br/> {2,number,integer}။ ဖန်သားပြင်တစ်နေရာတွင် ထိပြီး ဖိထားပါ<br/> {3,number,integer}။ ဖန်သားပြင်ပေါ်တွင် ရွှေ့ကြည့်ရန် လက်ချောင်းကို ဖိဆွဲပါ<br/> {4,number,integer}။ ချဲ့ခြင်း ရပ်ရန် လက်ချောင်းကို ကြွပါ"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>ဇူးမ်ဆွဲရန်အတွက်-</b><br/> {0,number,integer}။ စတင်ချဲ့ရန် ဖြတ်လမ်းလင့်ခ်ကို သုံးပါ<br/> {1,number,integer}။ ဖန်သားပြင်ကို တို့ပါ<br/> {2,number,integer}။ ဖန်သားပြင်ပေါ်တွင် ရွှေ့ကြည့်ရန် လက် ၂ ချောင်းဖြင့် ဖိဆွဲပါ<br/> {3,number,integer}။ ဇူးမ်ချိန်ညှိရန် လက် ၂ ချောင်းဖြင့် ချဲ့ချုံ့ပါ<br/> {4,number,integer}။ ချဲ့ခြင်းကိုရပ်ရန် ဖြတ်လမ်းအသုံးပြုပါ<br/><br/> ယာယီဇူးမ်ဆွဲခြင်းနှင့် အခြားအရာများလည်း လုပ်နိုင်သည်။"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>ဇူးမ်ဆွဲရန်အတွက်-</b><br/> {0,number,integer}။ စတင်ချဲ့ရန် ဖြတ်လမ်းလင့်ခ်ကို သုံးပါ<br/> {1,number,integer}။ ဖန်သားပြင်ကို တို့ပါ<br/> {2,number,integer}။ ဖန်သားပြင်ပေါ်တွင် ရွှေ့ကြည့်ရန် လက် ၁ ချောင်း သို့မဟုတ် ၂ ချောင်းဖြင့် ဖိဆွဲပါ<br/> {3,number,integer}. ဇူးမ်ချိန်ညှိရန် လက် ၂ ချောင်းဖြင့် ချဲ့ချုံ့ပါ<br/> {4,number,integer}။ ချဲ့ခြင်းကိုရပ်ရန် ဖြတ်လမ်းအသုံးပြုပါ<br/><br/> ယာယီဇူးမ်ဆွဲခြင်းနှင့် အခြားအရာများလည်း လုပ်နိုင်သည်။"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"မှန်ဘီလူးကို ဖွင့်ထားသည့်အခါ သင့်ဖန်သားပြင်ပေါ်တွင် ဇူးမ်ဆွဲနိုင်ပါသည်။\n\n"<b>"ဇူးမ်ဆွဲရန်"</b>" မှန်ဘီလူးကို ဖွင့်ပြီး ဖန်သားပြင်ပေါ်ရှိ နေရာတစ်ခုတွင် တို့ပါ။\n"<ul><li>"လှိမ့်ရွှေ့ရန် အနည်းဆုံး လက်ချောင်း ၂ ချောင်းဖြင့် ဖိဆွဲပါ"</li>\n<li>"ဇူးမ်ကို ချိန်ညှိရန် အနည်းဆုံး လက်ချောင်း ၂ ချောင်းဖြင့် ဆွဲကပ်ပါ"</li></ul>\n\n<b>"ယာယီဇူးမ်ဆွဲရန်"</b>" မှန်ဘီလူးကို ဖွင့်ပြီး ဖန်သားပြင်ပေါ်ရှိ တစ်နေနေရာတွင် ဖိထားပါ။\n"<ul><li>"ဖန်သားပြင်တစ်လျှောက် ရွှေ့ကြည့်ရန် ဖိဆွဲပါ"</li>\n<li>"ဇူးမ်ဖြုတ်ရန် လက်ချောင်းကို မ လိုက်ပါ"</li></ul>\n\n"ကီးဘုတ် သို့မဟုတ် လမ်းညွှန်ဘားကို ဇူးမ်ဆွဲ၍ မရပါ။"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"စာမျက်နှာ <xliff:g id="NUM_PAGES">%2$d</xliff:g> မျက်နှာအနက် <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> မျက်နှာ"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"သုံးနိုင်မှုခလုတ် ဖြတ်လမ်းလင့်ခ်"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"ဦးစားပေးမုဒ်"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"အရေးကြီးပုဂ္ဂိုလ်များနှင့် အက်ပ်များထံမှသာ အကြောင်းကြားချက် ရယူပါ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"စသုံးခြင်းအမျိုးအစား ရွေးရန်"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"အချိန်"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ဥပမာ- “နံနက် ၉:၃၀ - ညနေ ၅:၀၀”"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ပြက္ခဒိန်"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ဥပမာ- “ကိုယ်ပိုင်ပြက္ခဒိန်”"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"အနှောင့်အယှက်များကို တားဆီးသည်"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"အချိန်ဇယားများ ဖျက်ရန်"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ဖျက်ရန်"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"ပြက္ခဒိန်ထည့်ရန်"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"သင့်ပြက္ခဒိန်သုံးရန်"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"စီစဉ်ရန်"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"အချိန်ဇယား သတ်မှတ်ပါ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"အချိန်ဇယား"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"အချို့အချိန်၌ ဖုန်းအသံတိတ်ခြင်း"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"အသံပေးသည့် ကြားဖြတ်မှုများ ခွင့်ပြုပါ"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"မြင်ကွင်းပိတ်ခြင်းမှတားဆီးပါ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ပြသမှုများကို ခွင့်ပြုရန်"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"သင့်ထံ ဆက်သွယ်နိုင်သော အကြောင်းကြားချက်များ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"အာရုံမပျက်ပါစေနှင့်"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"နောက်ထပ် လုပ်ဆောင်ချက်များ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ဖန်သားပြင် ဆက်တင်များ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ဖန်သားပြင်တွင် ပြသမှုရွေးစရာများ"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"အမှောင်နောက်ခံ သုံးရန်"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"အမှောင်နောက်ခံတွင် လင်းသောစာသားကို ပိုမိုနှစ်သက်ပါက OS နှင့် အက်ပ်များကို ပြောင်းနိုင်သည်။ ၎င်းသည် မျက်လုံးအားစိုက်ရမှု ပိုမိုသက်သာစေနိုင်ပြီး စက်ပစ္စည်းအချို့တွင် ဘက်ထရီ သိသာစွာ ချွေတာနိုင်သည်"</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="mode_notification_filter_title" msgid="443728483176031977">"အနှောင့်အယှက်များ စစ်ထုတ်ရန်"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"အနှောင့်အယှက်များကို စစ်ထုတ်ထားခြင်း မရှိပါ"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"မသုံးသော အမျိုးအစားများကို ပြရန်"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"မသုံးသော အမျိုးအစားများကို ဝှက်ရန်"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"အားလုံး"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"အမည်ပြောင်းရန်"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"သင်္ကေတပြောင်းရန်"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"သင်္ကေတပြောင်းရန်"</string>
<string name="warning_button_text" msgid="1274234338874005639">"သတိပေးချက်"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"ပိတ်ရန်"</string>
<string name="device_feedback" msgid="5351614458411688608">"ဤကိရိယာအတွက် အကြံပြုချက် ပို့ရန်"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"၁၆ KB ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများကို အသုံးမပြုမီ ဤစက်၏ ဒေတာအပိုင်းကို ext4 သို့ ပြောင်းရမည်။ ဤမုဒ်တွင် ဆော့ဖ်ဝဲစစ်မှန်မှုကို အာမ မခံနိုင်သည့်အပြင် စနစ်စတင်မှု ဖွင့်ထားချိန်၌ ဖုန်းတွင် သိုလှောင်ထားသည့် မည်သည့်ဒေတာမဆို ဆုံးရှုံးနိုင်ခြေ ရှိပါသည်။ ၁၆ KB ရွေးစရာကို စဖွင့်ရန်အတွက် ဤသို့ပြောင်းပြီးနောက်တွင် နောက်တစ်ကြိမ်ပြန်လည်စတင်ရန် လိုပါမည်။ ဤမုဒ်သို့ ရောက်သည်နှင့် သင်သည် ၄ KB နှင့် ၁၆ KB မုဒ်အကြား တစ်ကြိမ်ပြန်လည်စတင်ရုံဖြင့် အပြန်အလှန်ပြောင်းနိုင်ပါသည်။ ဤမုဒ်များတွင် အင်္ဂါရပ်အချို့ကို ပိတ်ထားမည်ဖြစ်သဖြင့် အချို့အပလီကေးရှင်းများ အလုပ်မလုပ်နိုင်ပါ။ စက်ကို ထုတ်ကုန်မုဒ်သို့ ပြန်ထားရန် ၄ KB မုဒ်သို့ ပြန်ပြောင်းပြီး စက်ကို စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပေးသည့် စနစ်စတင်မှုကို လော့ခ်ချရမည်။ စက်ကို Android သို့ စတင်ပြီးနောက် ‘ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများ’ ရှိ OEM ဖွင့်ခြင်းကို ပိတ်ပါ။ အတည်ပြုပြီးနောက် စက်ကို ရှင်းလင်းပြီး ဖိုင်စနစ်ကို ext4 သို့ ပြောင်းပါမည်။ ဤသို့ပြုလုပ်ပြီးနောက် ၁၆ KB ထပ်ဖွင့်ရန် ပြန်လာပါ။"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ဒေတာအားလုံး ဖျက်ရန်"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ဒေတာအပိုင်းကို ext4 သို့ ပြန်လည်ဖော်မက်လုပ်ပြီး ရှင်းလင်း၍ မရပါ။"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"၁၆ KB မုဒ်အတွက် စနစ်စတင်မှု ဖွင့်ရန်လိုအပ်သည်"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"၁၆ KB ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများကို အသုံးမပြုမီ ဤစက်ကို စနစ်စတင်မှု ဖွင့်ရမည်။ ဤမုဒ်တွင် ဆော့ဖ်ဝဲစစ်မှန်မှုကို အာမ မခံနိုင်သည့်အပြင် စနစ်စတင်မှု ဖွင့်ထားချိန်၌ ဖုန်းတွင် သိုလှောင်ထားသည့် မည်သည့်ဒေတာမဆို ဆုံးရှုံးနိုင်ခြေ ရှိပါသည်။ ၁၆ KB မုဒ်ကို စတင်နေသောအခါ အသုံးပြုသူဒေတာနှင့် ဆက်တင်အားလုံးကို ရှင်းလင်းပါမည်။ စနစ်စတင်မှုကို ဖွင့်ပြီးပါက ၁၆ KB ရွေးစရာကို စတင်ရာတွင် နှစ်ကြိမ်ပြန်လည်စတင်ရန်လိုပါမည်။ ဤမုဒ်သို့ ရောက်သည်နှင့် သင်သည် ၄ KB နှင့် ၁၆ KB မုဒ်အကြား တစ်ကြိမ်ပြန်လည်စတင်ရုံဖြင့် အပြန်အလှန်ပြောင်းနိုင်ပါသည်။ ဤမုဒ်များတွင် အင်္ဂါရပ်အချို့ကို ပိတ်ထားမည်ဖြစ်သဖြင့် အချို့အပလီကေးရှင်းများ အလုပ်မလုပ်နိုင်ပါ။ စက်ကို ထုတ်ကုန်မုဒ်သို့ ပြန်ထားရန် ၄ KB မုဒ်သို့ ပြန်ပြောင်းပြီး စက်ကို (စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပေးသည့်) OEM/စနစ်စတင်မှုကို လော့ခ်ချရမည်။ စနစ်စတင်မှုကို ဖွင့်ပြီး ထပ်စမ်းကြည့်ပါ။ ယင်းသို့ ပြုလုပ်ပုံ ညွှန်ကြားချက်များကို <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a&gt တွင် တွေ့နိုင်ပါသည်၊"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သော ၄ KB မုဒ်ကို အသုံးပြုခြင်း"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"သင်သည် စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သောမုဒ်၏ ၄ KB မုဒ်တွင် ရှိနေပါသည်။ ဤမုဒ်တွင် ဆော့ဖ်ဝဲစစ်မှန်မှုကို အာမ မခံနိုင်သည့်အပြင် စနစ်စတင်မှု ဖွင့်ထားချိန်၌ ဖုန်းတွင် သိုလှောင်ထားသည့် မည်သည့်ဒေတာမဆို ဆုံးရှုံးနိုင်ခြေ ရှိပါသည်။ ဤမုဒ်များတွင် အင်္ဂါရပ်အချို့ကို ပိတ်ထားမည်ဖြစ်သဖြင့် အချို့အပလီကေးရှင်းများ အလုပ်မလုပ်နိုင်ပါ။ ထုတ်ကုန်မုဒ်သို့ ပြန်ဝင်ရန် စက်၏ စနစ်စတင်မှုကို လော့ခ်ချရပါမည်။ နောက်ထပ်ဖတ်ရန် တို့ပါ။"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"သင်သည် စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သောမုဒ်၏ ၄ KB မုဒ်တွင် ရှိနေပါသည်။ ဤမုဒ်တွင် ဆော့ဖ်ဝဲစစ်မှန်မှုကို အာမ မခံနိုင်သည့်အပြင် စနစ်စတင်မှု ဖွင့်ထားချိန်၌ ဖုန်းတွင် သိုလှောင်ထားသည့် မည်သည့်ဒေတာမဆို ဆုံးရှုံးနိုင်ခြေ ရှိပါသည်။ ဤမုဒ်များတွင် အင်္ဂါရပ်အချို့ကို ပိတ်ထားမည်ဖြစ်သဖြင့် အချို့အပလီကေးရှင်းများ အလုပ်မလုပ်နိုင်ပါ။ ထုတ်ကုန်မုဒ်သို့ ပြန်ဝင်ရန် စက်၏ စနစ်စတင်မှုကို လော့ခ်ချရပါမည်။ ၎င်းသည် စက်ကို စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပေးပြီး ထုတ်ကုန် ဆက်တင်များအတိုင်း ပြန်ပြောင်းပေးပါမည်။ စက်ကို Android သို့ စတင်ပြီးနောက် ‘ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများ’ ရှိ OEM ဖွင့်ခြင်းကို ပိတ်ပါ။ စက်ကို Android သို့ စတင်၍မရပါက သို့မဟုတ် မတည်ငြိမ်ပါက href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a&gt မှ နောက်ဆုံးပေါ် စက်ရုံထုတ် မူလပုံများဖြင့် စက်ကို ပြန်စပါ သို့မဟုတ် <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a&gt ကို အသုံးပြုကာ ‘စက်ရှင်းလင်းရန်’၊ ‘စနစ်စတင်မှု လော့ခ်ချရန်’ နှင့် ‘အပိုင်းအားလုံး မဖြစ်မနေ ပြန်စရန်’ ကို ရွေးပါ။"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သော ၁၆ KB မုဒ်ကို အသုံးပြုခြင်း"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"သင်သည် စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သောမုဒ်၏ ၁၆ KB မုဒ်တွင် ရှိနေပါသည်။ ဤမုဒ်တွင် ဆော့ဖ်ဝဲစစ်မှန်မှုကို အာမ မခံနိုင်သည့်အပြင် စနစ်စတင်မှု ဖွင့်ထားချိန်၌ ဖုန်းတွင် သိုလှောင်ထားသည့် မည်သည့်ဒေတာမဆို ဆုံးရှုံးနိုင်ခြေ ရှိပါသည်။ ဤမုဒ်များတွင် အင်္ဂါရပ်အချို့ကို ပိတ်ထားမည်ဖြစ်သဖြင့် အချို့အပလီကေးရှင်းများ အလုပ်မလုပ်နိုင်ပါ။ ထုတ်ကုန်မုဒ်သို့ ပြန်ဝင်ရန် ၄K မုဒ်သို့ ပြန်ပြောင်းပြီး စက်၏ စနစ်စတင်မှုကို လော့ခ်ချရပါမည်။ နောက်ထပ်ဖတ်ရန် တို့ပါ။"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"သင်သည် စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သောမုဒ်၏ ၁၆ KB မုဒ်တွင် ရှိနေပါသည်။ ဤမုဒ်တွင် ဆော့ဖ်ဝဲစစ်မှန်မှုကို အာမ မခံနိုင်သည့်အပြင် စနစ်စတင်မှု ဖွင့်ထားချိန်၌ ဖုန်းတွင် သိုလှောင်ထားသည့် မည်သည့်ဒေတာမဆို ဆုံးရှုံးနိုင်ခြေ ရှိပါသည်။ ဤမုဒ်များတွင် အင်္ဂါရပ်အချို့ကို ပိတ်ထားမည်ဖြစ်သဖြင့် အချို့အပလီကေးရှင်းများ အလုပ်မလုပ်နိုင်ပါ။ ထုတ်ကုန်မုဒ်သို့ ပြန်ဝင်ရန် ၄K မုဒ်သို့ ပြန်ပြောင်းပြီး စက်၏ စနစ်စတင်မှုကို လော့ခ်ချရပါမည်။ ၎င်းသည် စက်ကို စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပေးပြီး ထုတ်ကုန် ဆက်တင်များအတိုင်း ပြန်ပြောင်းပေးပါမည်။ စက်ကို Android သို့ စတင်ပြီးနောက် ‘ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများ’ ရှိ OEM ဖွင့်ခြင်းကို ပိတ်ပါ။ စက်ကို Android သို့ စတင်၍မရပါက သို့မဟုတ် မတည်ငြိမ်ပါက href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a&gt မှ နောက်ဆုံးပေါ် စက်ရုံထုတ် မူလပုံများဖြင့် စက်ကို ပြန်မွမ်းမံပါ သို့မဟုတ် <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a&gt ကို အသုံးပြုကာ ‘စက်ရှင်းလင်းရန်’၊ ‘စနစ်စတင်မှု လော့ခ်ချရန်’ နှင့် ‘အပိုင်းအားလုံး မဖြစ်မနေ မွမ်းမံရန်’ ကို ရွေးပါ။"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"စာမျက်နှာအမျိုးမျိုးနှင့် အသုံးပြုနိုင်သော ၁၆KB မုဒ်"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"နောက်ထပ်ဖတ်ရန်"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ချွတ်ယွင်းချက်အစီရင်ခံစာ စီမံသူ"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"အသုံးပြုသူအများအပြား ခွင့်ပြုရန်"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index 65d7ecc..5585885 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Sengetid"</item>
+ <item msgid="4152450357280759894">"Kjøring"</item>
+ <item msgid="7096549258219399423">"Oppslukende"</item>
+ <item msgid="2760716776980432977">"Administrert"</item>
+ <item msgid="601734478369121764">"Stjerne"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Tid"</item>
+ <item msgid="3653377604690057780">"Teater"</item>
+ <item msgid="3843711267408385410">"Blomst"</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 9266e57..e2af18b 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Innstillinger for høreapparater"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Snarvei, kompatibilitet med høreapparater"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Forhåndsinnstilling"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Ingen forhåndsinnstillinger er programmert av audiografen"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Kunne ikke oppdatere forhåndsinnstillingen"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Utenhet for lyd"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Om lyd"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Finn ut mer om klokkelåsen"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Legg til en klokke"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Fjern klokken"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Opplåsing med fingeravtrykk og ansiktslås"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Opplåsing med ansikt og fingeravtrykk"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ansiktslås og opplåsing med fingeravtrykk for jobb"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Konfigurering kreves"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Ansikt og fingeravtrykk er lagt til"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Installer apper"</b>\n"Installer apper du vil holde private, i området ditt"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Husk"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apper stopper når du låser området ditt"</b>\n"Når du låser området, blir apper i området stoppet, og du mottar ikke varsler fra dem."</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Private områder egner seg ikke for apper som må kjøre i bakgrunnen eller sende kritiske varsler, for eksempel medisinske apper. Dette er fordi varsler og bakgrunnsaktivitet stoppes når området ditt låses.\n\nApper i det private området vises ikke i tillatelseskontrollen, personvernoversikten og andre innstillinger når det private området er låst.\n\nDet private området kan ikke flyttes til en ny enhet. Hvis du vil bruke det private området på en annen enhet, må du konfigurere et nytt.\n\nHvis noen kobler enheten din til en datamaskin eller installerer skadelige apper på enheten, kan de kanskje åpne det private området ditt."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Private områder egner seg ikke for apper som må kjøre i bakgrunnen eller sende kritiske varsler, for eksempel medisinske apper. Dette er fordi varsler og bakgrunnsaktivitet stoppes når området ditt låses.\n\nApper i det private området vises ikke i tillatelseskontrollen, personvernoversikten og andre innstillinger når det private området er låst.\n\nDet private området kan ikke gjenopprettes på en ny enhet. Du må konfigurere et nytt område hvis du vil bruke det på en annen enhet.\n\nAlle som kobler enheten din til en datamaskin eller installerer skadelige apper på enheten, kan muligens åpne det private området."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Finn ut mer om det private området"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Dette tar en liten stund"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Konfigurerer det private området …"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vil du starte enheten på nytt?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detaljert NFC-loggføring er bare beregnet på utviklingsformål. Det inkluderes ekstra NFC-data i feilrapporter. Dette kan omfatte privat informasjon. Hvis du vil endre denne innstillingen, må du starte enheten på nytt."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Start på nytt"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"speil"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Slå på trådløs skjermdeling"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Tilpasset"</string>
<string name="brightness" msgid="6216871641021779698">"Lysstyrkenivå"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Tilpasset lysstyrke"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Om tilpasset lysstyrke"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Lysstyrken på skjermen justeres automatisk etter omgivelser og aktiviteter. Du kan flytte glidebryteren manuelt for lære tilpasset lysstyrke om preferansene dine."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"På"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Av"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Brukervalgt: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Tale"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Pekerhastighet"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Spillkontroller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Viderekoble vibrering"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Send vibrering til spillkontrolleren hvis den er koblet til"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Fortsett likevel"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Avbryt"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Innstillinger for forstørring"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Panorer med én finger"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Flytt forstørringsområdet ved å dra én finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Flytt forstørringsområdet ved å dra to fingre."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ikke tilgjengelig ved forstørring av bare en del av skjermen"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Trykk på en knapp for å zoome"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zoom raskt inn på skjermen for å gjøre innhold større"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Slik zoomer du inn:</b><br/> {0,number,integer}. Bruk snarveien for å starte forstørring.<br/> {1,number,integer}. Trykk på skjermen.<br/> {2,number,integer}. Dra to fingre for å bevege deg rundt på skjermen.<br/> {3,number,integer}. Klyp med to fingre for å justere zoomen.<br/> {4,number,integer}. Bruk snarveien for å stoppe forstørring.<br/><br/> <b>Slik zoomer du inn midlertidig:</b><br/> {0,number,integer}. Sørg for at forstørringstype er satt til fullskjerm.<br/> {1,number,integer}. Bruk snarveien for å starte forstørring.<br/> {2,number,integer}. Trykk og hold hvor som helst på skjermen.<br/> {3,number,integer}. Dra en finger for å bevege deg rundt på skjermen.<br/> {4,number,integer}. Løft fingeren for å stoppe forstørring."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Når forstørrelse er slått på, kan du zoome inn på skjermen.\n\n"<b>"For å zoome"</b>", start forstørring og trykk hvor som helst på skjermen.\n"<ul><li>"Dra to eller flere fingre for å rulle"</li>\n<li>"Knip to eller flere fingre for å justere zoomen"</li></ul>\n\n<b>"For å zoome midlertidig"</b>", start forstørring og trykk og hold hvor som helst på skjermen.\n"<ul><li>"Dra for å bevege deg rundt på skjermen"</li>\n<li>"Løft fingeren for å zoome ut"</li></ul>\n\n"Du kan ikke zoome inn på tastaturet eller navigasjonsraden."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Side <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> av <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Snarvei via Tilgjengelighet-knappen"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Prioritetsmoduser"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Bli bare varslet av viktige personer og apper"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Velg aktiveringstype"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Tidspunkt"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Eksempel: «09:30–17:00»"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Eksempel: «Personlig kalender»"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Begrens forstyrrelser"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Slå på Ikke forstyrr"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmer og medielyder kan forstyrre"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Tidsplaner"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Slett tidsplaner"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Slett"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Endre"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Tidsplaner"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Tidsplan"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Legg til en kalender"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Bruk kalenderen"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Tidsplan"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Angi en 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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Tidsplan"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Demp telefonen til bestemte tider"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Tillat forstyrrelser som lager lyd"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokkér visuelle forstyrrelser"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Tillat visuelle signaler"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Varsler som kan nå deg"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Hold fokus"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Flere handlinger"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Visningsinnstillinger"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Visningsalternativer"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"slå på mørkt tema"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Bytt til at OS-et og appene foretrekker lys tekst på mørk bakgrunn, som kan være mer behagelig for øynene og gir betydelig batterisparing på noen enheter."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ingen visningsendringer}=1{{effect_1}}=2{{effect_1} og {effect_2}}=3{{effect_1}, {effect_2} og {effect_3}}other{{effect_1}, {effect_2} og # andre}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrer bort avbrytelser"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ingen avbrytelser blir filtrert bort"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Visningsalternativer for filtrerte varsler"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Når «Ikke forstyrr» er på"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Ingen lydvarsling"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorier"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Annet"</string>
<string name="no_channels" msgid="4716199078612071915">"Denne appen har ikke publisert noen varsler"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Vis kategorier som ikke brukes"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Flere innstillinger i appen"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Vis kategorier som ikke brukes"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Skjul kategorier som ikke brukes"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"De valgte appene"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Ingen"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Alle"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Tillat at apper overstyrer"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apper som kan forstyrre"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Velg flere apper"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Endre til bare alarmer i én time frem til {time}}other{Endre til bare alarmer i # timer frem til {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Endre til Bare alarmer frem til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Bytt til Alltid forstyrr"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Gi nytt navn"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Endre ikonet"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Endre ikonet"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Varsel"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Lukk"</string>
<string name="device_feedback" msgid="5351614458411688608">"Send tilbakemelding om enheten"</string>
@@ -3985,7 +4046,7 @@
<string name="background_check_pref" msgid="5304564658578987535">"Bakgrunnssjekk"</string>
<string name="assist_access_context_title" msgid="5201495523514096201">"Bruk tekst fra skjermen"</string>
<string name="assist_access_context_summary" msgid="6951814413185646275">"Gi assistentappen tilgang til skjerminnholdet som tekst"</string>
- <string name="assist_access_screenshot_title" msgid="4395902231753643633">"Bruk skjermdump"</string>
+ <string name="assist_access_screenshot_title" msgid="4395902231753643633">"Bruk skjermbilde"</string>
<string name="assist_access_screenshot_summary" msgid="5276593070956201863">"Gi assistentappen tilgang til et bilde av skjermen"</string>
<string name="assist_flash_title" msgid="5449512572885550108">"Uthev skjermen"</string>
<string name="assist_flash_summary" msgid="3032289860177784594">"Uthev kantene av skjermen når assistentappen bruker tekst fra skjermen eller skjermbildet"</string>
@@ -4077,7 +4138,7 @@
<string name="disabled_by_policy_title_outgoing_calls" msgid="400089720689494562">"Kan ikke ringe"</string>
<string name="disabled_by_policy_title_sms" msgid="8951840850778406831">"Kan ikke sende SMS-meldinger"</string>
<string name="disabled_by_policy_title_camera" msgid="6616508876399613773">"Kan ikke bruke kameraet"</string>
- <string name="disabled_by_policy_title_screen_capture" msgid="6085100101044105811">"Kan ikke ta skjermdumper"</string>
+ <string name="disabled_by_policy_title_screen_capture" msgid="6085100101044105811">"Kan ikke ta skjermbilder"</string>
<string name="disabled_by_policy_title_suspend_packages" msgid="4223983156635729793">"Kan ikke åpne denne appen"</string>
<string name="disabled_by_policy_title_financed_device" msgid="2328740314082888228">"Blokkert av kredittleverandøren din"</string>
<string name="disabled_by_policy_title_biometric_parental_consent" msgid="2463673997797134678">"Forelder kreves"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Datapartisjonen på denne enheten må konverteres til ext4 før du kan bruke utvikleralternativet for 16 kB. I denne modusen kan ikke programvareintegriteten garanteres, og eventuelle data som er lagret på telefonen mens oppstartsinnlasteren er låst opp, kan være utsatt for fare. Hvis du aktiverer alternativet for 16 kB, må du starte enheten på nytt én gang til etter dette. Når du er i denne modusen, kan du bytte mellom modusen for 4 kB og modusen for 16 kB ved bare å starte enheten på nytt én gang. Noen funksjoner deaktiveres i disse modusene, så det er ikke sikkert at alle apper fungerer. For å gå tilbake til produksjonsmodusen på enheten må du bytte tilbake til modusen for 4 kB og så låse oppstartsinnlasteren. Da tilbakestilles enheten til fabrikkstandard. Når enheten har startet i Android, kan du deaktivere fjerning av produsentsperre i utvikleralternativene. Når du bekrefter, blir alle dataene på enheten visket ut, og filsystemet blir byttet til ext4. Når dette er ferdig, kan du komme tilbake for å aktivere 16 kB igjen."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Tøm alle data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Kunne ikke omformatere og viske ut datapartisjonen til ext4"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Oppstartsinnlasteren må låses opp for å bruke modusen for 16 kB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Denne enheten krever at oppstartsinnlasteren er låst opp, før utvikleralternativet for 16 kB kan brukes. I denne modusen kan ikke programvareintegriteten garanteres, og eventuelle data som er lagret på telefonen mens oppstartsinnlasteren er låst opp, kan være utsatt for fare. Alle brukerdata og innstillinger viskes ut når modusen for 16 kB aktiveres. Når oppstartsinnlasteren er låst opp, kreves det to omstarter for å aktivere alternativet for 16 kB. Når du er i denne modusen, kan du bytte mellom modusen for 4 kB og modusen for 16 kB ved bare å starte enheten på nytt én gang. Noen funksjoner deaktiveres i disse modusene, så det er ikke sikkert at alle apper fungerer. For å gå tilbake til produksjonsmodusen på enheten må du bytte tilbake til modusen for 4 kB og så låse enheten via produsenten eller oppstartsinnlasteren (og da tilbakestilles enheten til fabrikkstandard). Lås opp oppstartsinnlasteren, og prøv på nytt. Du finner veiledning om hvordan du gjør dette, på <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Bruker den sideagnostiske modusen for 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Du er i modusen for 4 kB av den sideagnostiske modusen. I denne modusen kan ikke programvareintegriteten garanteres, og eventuelle data som er lagret på telefonen mens oppstartsinnlasteren er låst opp, kan være utsatt for fare. Noen funksjoner deaktiveres i disse modusene, så det er ikke sikkert at alle apper fungerer. For å gå tilbake til produksjonsmodusen, må du låse oppstartsinnlasteren på enheten. Trykk for å finne ut mer."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Du er i modusen for 4 kB av den sideagnostiske modusen. I denne modusen kan ikke programvareintegriteten garanteres, og eventuelle data som er lagret på telefonen mens oppstartsinnlasteren er låst opp, kan være utsatt for fare. Noen funksjoner deaktiveres i disse modusene, så det er ikke sikkert at alle apper fungerer. For å gå tilbake til produksjonsmodusen, må du låse oppstartsinnlasteren på enheten. Da tilbakestilles enheten til fabrikkstandard, og produksjonsinnstillingene gjenopprettes. Når enheten har startet i Android, kan du deaktivere fjerning av produsentsperre i utvikleralternativene. Hvis enheten ikke starter opp i Android, eller hvis den er ustabil, bør du flashe enheten på nytt med de siste fabrikkavbildningene fra <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> eller bruke <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> og velge «Wipe Device» (visk ut alt på enheten), «Lock Bootloader» (lås oppstartsinnlasteren) og «Force Flash all partitions» (tving gjennom flashing av alle partisjoner)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Bruker den sideagnostiske modusen for 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Du er i modusen for 16 kB av den sideagnostiske modusen. I denne modusen kan ikke programvareintegriteten garanteres, og eventuelle data som er lagret på telefonen mens oppstartsinnlasteren er låst opp, kan være utsatt for fare. Noen funksjoner deaktiveres i disse modusene, så det er ikke sikkert at alle apper fungerer. For å gå tilbake til produksjonsmodusen, må du bytte tilbake til modusen for 4K og låse oppstartsinnlasteren på enheten. Trykk for å finne ut mer."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Du er i modusen for 16 kB av den sideagnostiske modusen. I denne modusen kan ikke programvareintegriteten garanteres, og eventuelle data som er lagret på telefonen mens oppstartsinnlasteren er låst opp, kan være utsatt for fare. Noen funksjoner deaktiveres i disse modusene, så det er ikke sikkert at alle apper fungerer. For å gå tilbake til produksjonsmodusen, må du bytte tilbake til modusen for 4K og låse oppstartsinnlasteren på enheten. Da tilbakestilles enheten til fabrikkstandard, og produksjonsinnstillingene gjenopprettes. Når enheten har startet i Android, kan du deaktivere fjerning av produsentsperre i utvikleralternativene. Hvis enheten ikke starter opp i Android, eller hvis den er ustabil, bør du flashe enheten på nytt med de siste fabrikkavbildningene fra <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> eller bruke <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> og velge «Wipe Device» (visk ut alt på enheten), «Lock Bootloader» (lås oppstartsinnlasteren) og «Force Flash all partitions» (tving gjennom flashing av alle partisjoner)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Sideagnostisk modus for 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Les mer"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Feilrapporthåndtering"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Bruk festing av apper"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Bruk utvikleralternativer"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Bruk utskriftstjeneste"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Tillat flere brukere"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"tillat, flere, bruker, tillatelse, mange"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"flere, brukere, profiler, personer, kontoer, bytt, mange"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Bruk trådløs feilsøking"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ne/arrays.xml b/res/values-ne/arrays.xml
index 49344ca..57efd75 100644
--- a/res/values-ne/arrays.xml
+++ b/res/values-ne/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"सुत्ने समय"</item>
+ <item msgid="4152450357280759894">"ड्राइभिङ"</item>
+ <item msgid="7096549258219399423">"इमर्सिभ"</item>
+ <item msgid="2760716776980432977">"व्यवस्थापन गरिएका"</item>
+ <item msgid="601734478369121764">"तारा"</item>
+ <item msgid="6243809315432780521">"पात्रो"</item>
+ <item msgid="4913577903148415331">"समय"</item>
+ <item msgid="3653377604690057780">"नाटकघर"</item>
+ <item msgid="3843711267408385410">"फूल"</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 402ea50..10d9253 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -75,8 +75,9 @@
<string name="bluetooth_pair_other_ear_dialog_right_ear_positive_button" msgid="533612082529204078">"दायाँ भाग कनेक्ट गर्नुहोस्"</string>
<string name="bluetooth_pair_other_ear_dialog_left_ear_positive_button" msgid="6500192653171220257">"बायाँ भाग कनेक्ट गर्नुहोस्"</string>
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"श्रवण यन्त्रसम्बन्धी सेटिङ"</string>
- <string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"सर्टकट, श्रवण सहयोगसम्बन्धी कम्प्याटिबिलिटी"</string>
+ <string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"सर्टकट, हियरिङ डिभाइस कम्प्याटिबिलिटी"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"पूर्व निर्धारित"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"तपाईंका अडियोलोजिस्टले कुनै पनि प्रिसेट तय गर्नुभएको छैन"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"प्रिसेट अपडेट गर्न सकिएन"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"अडियो आउटपुट"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"अडियो आउटपुटका बारेमा"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"स्मार्ट वाच अनलक गर्ने सुविधाका बारेमा थप जान्नुहोस्"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"स्मार्ट वाच कनेक्ट गर्नुहोस्"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"स्मार्ट वाच डिस्कनेक्ट गर्नुहोस्"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"फिंगरप्रिन्ट तथा फेस अनलक"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"फेस र फिंगरप्रिन्ट अनलक"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"कार्य प्रोफाइलका लागि फेस र फिंगरप्रिन्ट अनलक"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"सेटअप गर्नु पर्ने हुन्छ"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"फेस तथा फिंगरप्रिन्टहरू थपिए"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"डिभाइस रिस्टार्ट गर्ने हो?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC को विस्तृत लग राख्ने सुविधा सफ्टवेयर विकास गर्ने प्रयोजनका लागि मात्र बनाइएको हो। बग रिपोर्टहरूमा NFC का अतिरिक्त डेटा समावेश हुन्छन्। यी डेटामा निजी जानकारी पनि समावेश हुन सक्छन्। यो सेटिङ बदल्न आफ्नो डिभाइस रिस्टार्ट गर्नुहोस्।"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"रिस्टार्ट गर्नुहोस्"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"स्क्रिन मिरर गर्नुहोस्"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"वायरलेस प्रदर्शन सक्षम गर्नुहोस्"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"एड्याप्टिभ"</string>
<string name="brightness" msgid="6216871641021779698">"चमकको स्तर"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"एड्याप्टिभ ब्राइटनेस"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"अनुकूलनयोग्य चमकका बारेमा"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"स्क्रिनको चमक तपाईंको वातावरण र गतिविधिअनुसार स्वतः समायोजन हुन्छ। तपाईं स्लाइडर सारेर एड्याप्टिभ ब्राइटनेसलाई तपाईंको रूची पहिचान गर्न मद्दत गर्न सक्नुहुन्छ।"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"सक्रिय छ"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"निष्क्रिय छ"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"जे भए पनि जारी राख्नुहोस्"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"रद्द गर्नु…"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"म्याग्निफिकेसनसम्बन्धी सेटिङ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"एउटा औंलाले प्यान गर्ने सुविधा"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"एउटा औँलाले म्याग्निफायर सार्नुहोस्"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"स्क्रिनमा यताउता सार्न एउटा औँलाले ड्र्याग गर्नुहोस्"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"एउटा औंला ड्र्याग गरेर जुम इन गरिएको क्षेत्र यताउता सार्नुहोस्।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"दुई औंला ड्र्याग गरेर जुम इन गरिएको क्षेत्र यताउता सार्नुहोस्।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"स्क्रिनको कुनै भाग मात्र जुम इन गरेका बेला यो टगल उपलब्ध हुँदैन"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"जुम गर्न बटनमा ट्याप गर्नुहोस्"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"तपाईं सामग्री अझ ठुलो बनाउन चाहनुहुन्छ भने द्रुत रूपमा स्क्रिनमा जुम इन गर्नुहोस्"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>तपाईं जुम इन गर्न चाहनुहुन्छ भने निम्न कार्य गर्नुहोस्:</b><br/> {0,number,integer}. जुम इन गर्ने सुविधा प्रयोग गर्न थाल्न सर्टकट प्रयोग गर्नुहोस्<br/> {1,number,integer}. स्क्रिनमा ट्याप गर्नुहोस्<br/> {2,number,integer}. स्क्रिनमा सामग्री यताउता सार्न २ वटा औँलाले ड्र्याग गर्नुहोस्<br/> {3,number,integer}. जुम इन वा जुम आउट गर्न २ वटा औँलाले पिन्च गर्नुहोस्<br/> {4,number,integer}. जुम इन गर्ने सुविधा बन्द गर्न सर्टकट प्रयोग गर्नुहोस्<br/><br/> <b>तपाईं केही समयका लागि जुम इन गर्न चाहनुहुन्छ भने निम्न कार्य गर्नुहोस्:</b><br/> {0,number,integer}. जुम इनको प्रकार फुल स्क्रिन तय गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस्<br/> {1,number,integer}. जुम इन गर्ने सुविधा प्रयोग गर्न थाल्न सर्टकट प्रयोग गर्नुहोस्<br/> {2,number,integer}. स्क्रिनको कुनै भागमा टच एण्ड होल्ड गर्नुहोस्<br/> {3,number,integer}. स्क्रिनमा सामग्री यताउता सार्न औँलाले ड्र्याग गर्नुहोस्<br/> {4,number,integer}. जुम इन गर्ने सुविधा बन्द गर्न औँला उठाउनुहोस्"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>जुम इन गर्न:</b><br/> {0,number,integer}. जुम इन गर्न थाल्न सर्टकट प्रयोग गर्नुहोस्<br/> {1,number,integer}. स्क्रिनमा ट्याप गर्नुहोस्<br/> {2,number,integer}. स्क्रिनमा यताउता सार्न २ वटा औँलाले ड्र्याग गर्नुहोस्<br/> {3,number,integer}. जुमको स्तर मिलाउन २ वटा औँलाले पिन्च गर्नुहोस्<br/> {4,number,integer}. जुम इन गर्न छाड्न सर्टकट प्रयोग गर्नुहोस्<br/><br/> तपाईं केही समयका लागि जुम इन गर्नेलगायतका अन्य कार्यहरू गर्न पनि सक्नुहुन्छ।"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>जुम इन गर्न:</b><br/> {0,number,integer}. जुम इन गर्न थाल्न सर्टकट प्रयोग गर्नुहोस्<br/> {1,number,integer}. स्क्रिनमा ट्याप गर्नुहोस्<br/> {2,number,integer}. स्क्रिनमा यताउता सार्न एउटा वा २ वटा औँलाले ड्र्याग गर्नुहोस्<br/> {3,number,integer}. जुमको स्तर मिलाउन २ वटा औँलाले पिन्च गर्नुहोस्<br/> {4,number,integer}. जुम इन गर्न छाड्न सर्टकट प्रयोग गर्नुहोस्<br/><br/> तपाईं केही समयका लागि जुम इन गर्नेलगायतका अन्य कार्यहरू गर्न पनि सक्नुहुन्छ।"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"म्याग्निफिकेसन सुविधा सक्रिय गरेपछि, तपाईं आफ्नो स्क्रिनमा जुम इन गर्न सक्नुहुन्छ।\n\n"<b>"जुम गर्न"</b>", म्याग्निफिकेसन सुविधा सुरु गर्नुहोस्, त्यसपछि स्क्रिनको कुनै पनि भागमा ट्याप गर्नुहोस्।\n"<ul><li>"स्क्रोल गर्न २ वा सोभन्दा बढी औँलाले ड्र्याग गर्नुहोस्"</li>\n<li>"जुम समायोजन गर्न २ वा सोभन्दा बढी औँलाले पिन्च गर्नुहोस्"</li></ul>\n\n<b>"केहीबेरका लागि जुम गर्न"</b>", म्याग्निफिकेसन सुविधा सुरु गर्नुहोस्, त्यसपछि स्क्रिनको कुनै पनि भागमा केहीबेर छोइरहनुहोस्।\n"<ul><li>"स्क्रिनमा यताउता जान ड्र्याग गर्नुहोस्"</li>\n<li>"जुम आउट गर्न औँला उचाल्नुहोस्"</li></ul>\n\n"तपाईं किबोर्ड वा नेभिगेसन पट्टीमा जुम इन गर्न सक्नुहुन्न।"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> मध्ये <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> औँ पृष्ठ"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"एक्सेसिबिलिटी बटनको सर्टकट"</string>
@@ -2316,7 +2355,7 @@
<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_hac_mode_title" msgid="2037950424429555652">"श्रवण सहयोगसम्बन्धी कम्प्याटिबिलिटी"</string>
+ <string name="accessibility_hac_mode_title" msgid="2037950424429555652">"हियरिङ डिभाइस कम्प्याटिबिलिटी"</string>
<string name="accessibility_hac_mode_summary" msgid="5198760061256669067">"टेलिकोइलसँग अझ राम्रोसँग काम गर्ने बनाउँछ र अनावश्यक आवाज कम गर्छ"</string>
<string name="accessibility_hearing_device_about_title" msgid="7883758309646288250">"श्रवण यन्त्रहरूका बारेमा"</string>
<string name="accessibility_hearing_device_footer_summary" msgid="256061045064940818">"ASHA वा LE अडियो प्रयोग गर्न नमिल्ने अन्य हियरिङ डिभाइस भेट्टाउन "<b>"नयाँ डिभाइस कनेक्ट गर्नुहोस्"</b>" > "<b>"अझ धेरै डिभाइसहरू हेर्नुहोस्"</b>" मा ट्याप गर्नुहोस्"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"महत्त्वपूर्ण मोडहरू"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"महत्त्वपूर्ण मान्छे र एपका सूचना मात्र प्राप्त गर्नुहोस्"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"एक्टिभेसनको प्रकार चयन गर्नुहोस्"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"समय"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"उदाहरण: \"बिहान ९:३० बजेदेखि साँझ ५:०० बजेसम्म\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"पात्रो"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"उदाहरण: \"व्यक्तिगत पात्रो\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"अवरोधहरू सीमित पार्नुहोस्"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"समयतालिकाहरू मेट्नुहोस्"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"मेट्नुहोस्"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"कुनै पात्रो हाल्नुहोस्"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"आफ्नो पात्रो प्रयोग गर्नुहोस्"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"समयतालिका"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"समयतालिका सेट गर्नुहोस्"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"समयतालिका"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"तोकिएको समयमा फोनलाई मौन अवस्थामा राख्नुहोस्"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"साउन्डसहित आउने कुरालाई अनुमति दिनुहोस्"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"दृश्य सम्बन्धी बाधालाई रोक्नु"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"सङ्केतहरूलाई देखिन दिनुहोस्"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"तपाईंले प्राप्त गर्न सक्ने नोटिफिकेसनहरू"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ध्यान केन्द्रित गर्नुहोस्"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"अतिरिक्त कारबाहीहरू"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"डिस्प्लेसम्बन्धी सेटिङ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"डिस्प्लेसम्बन्धी विकल्पहरू"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"\"अँध्यारो थिम\" अन गर्नुहोस्"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"अँध्यारो ब्याकग्राउन्डमा हल्का रङको टेक्स्टलाई प्राथमिकता दिन OS र एपहरू अदलबदल गर्नुहोस्। तपाईंले यसो गर्नुभयो भने तपाईंको आँखामा धेरै असर पर्दैन र यसले केही डिभाइसहरूको ब्याट्री उल्लेख्य रूपमा बचत गर्छ।"</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="mode_notification_filter_title" msgid="443728483176031977">"अवरोधहरू फिल्टर गर्नुहोस्"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"कुनै पनि अवरोध फिल्टर गरिँदैन"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"प्रयोग नगरिएका कोटीहरू देखाउनुहोस्"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"प्रयोग नगरिएका कोटीहरू लुकाइयोस्"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"सबै"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"नाम बदल्नुहोस्"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"आइकन बदल्नुहोस्"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"आइकन बदल्नुहोस्"</string>
<string name="warning_button_text" msgid="1274234338874005639">"चेतावनी"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"बन्द गर्नुहोस्"</string>
<string name="device_feedback" msgid="5351614458411688608">"डिभाइसका बारेमा प्रतिक्रिया पठाउनुहोस्"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"१६ के.बि. विकासकर्ता मोड प्रयोग गर्नुअघि यो डिभाइसको डेटा पार्टिसन रूपान्तरण गरी ext4 बनाउनु पर्ने हुन्छ। यो मोडमा सफ्टवेयरको पूर्णताका बारेमा ग्यारेन्टी गर्न सकिँदैन र बुटलोडर अनलक गरिएका बेला फोनमा भण्डारण गरिएको सबै डेटा जोखिममा पर्न सक्छ। १६ के.बि. विकल्प अन गर्न यसपछि अरू एक पटक रिबुट गर्नु पर्ने हुन्छ। तपाईंले यो मोड प्रयोग गर्न थालेपछि भने तपाईं एक पटक रिबुट गरेकै भरमा ४ के.बि. र १६ के.बि. मोडमा अदलबदल गर्न सक्नुहुन्छ। यी मोडमा केही सुविधाहरू अफ हुने हुनाले केही एपहरू नचल्न सक्छन्। डिभाइसलाई प्रोडक्सन मोडमा फर्काउन तपाईंले ४ के.बि. मोडमा फर्किएर बुटलोडर लक गर्नु पर्ने हुन्छ। यसो गर्दा डिभाइस फ्याक्ट्री रिसेट हुन्छ। डिभाइस Android मा बुट भएपछि विकासकर्ता मोडमा गई OEM अनलक सेटिङ अफ गर्नुहोस्। डिभाइसमा भएको सबै डेटा मेटिने छ र पुष्टि गरेपछि फाइल सिस्टम परिवर्तन भई ext4 हुने छ। यो प्रक्रिया पूरा भएपछि १६ के.बि. अन गर्न कृपया यहाँ फर्किएर आउनुहोस्।"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"सबै डेटा मेटाउनुहोस्"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"रिफर्म्याट गर्न र डेटाको पार्टिसन मेटाएर ext4 बनाउन सकिएन।"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"१६ के.बि. मोड प्रयोग गर्न बुटलोडर अनलक गर्नु पर्ने हुन्छ"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"१६ के.बि. विकासकर्ता मोड प्रयोग गर्नुअघि यो डिभाइसको बुटलोडर अनलक गर्नु पर्ने हुन्छ। यो मोडमा सफ्टवेयरको पूर्णताका बारेमा ग्यारेन्टी गर्न सकिँदैन र बुटलोडर अनलक गरिएका बेला फोनमा भण्डारण गरिएको सबै डेटा जोखिममा पर्न सक्छ। १६ के.बि. मोड अन गर्दा प्रयोगकर्ताका सबै डेटा तथा सेटिङ मेटिने छ। बुटलोडर अनलक भइसकेपछि १६ के.बि. विकल्प एक्टिभेट गर्न दुई पटक रिबुट गर्नु पर्ने हुन्छ। तपाईंले यो मोड प्रयोग गर्न थालेपछि भने तपाईं एक पटक रिबुट गरेकै भरमा ४ के.बि. र १६ के.बि. मोडमा अदलबदल गर्न सक्नुहुन्छ। यी मोडमा केही सुविधाहरू अफ हुने हुनाले केही एपहरू नचल्न सक्छन्। डिभाइसलाई प्रोडक्सन मोडमा फर्काउन तपाईंले ४ के.बि. मोडमा फर्किएर OEM/बुटलोडर फेरि लक गर्नु पर्ने हुन्छ (यसो गर्दा डिभाइस फ्याक्ट्री रिसेट हुन्छ)। कृपया बुटलोडर अनलक गर्नुहोस् र फेरि प्रयास गर्नुहोस्। तपाईं <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> मा गई यसो गर्ने तरिका हेर्न सक्नुहुन्छ"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"४ के.बि. पेज एग्नोस्टिक मोड प्रयोग गरिँदै छ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"तपाईं पेज एग्नोस्टिक मोडअन्तर्गतको ४ के.बि. मोड प्रयोग गर्दै हुनुहुन्छ। यो मोडमा सफ्टवेयरको पूर्णताका बारेमा ग्यारेन्टी गर्न सकिँदैन र बुटलोडर अनलक गरिएका बेला फोनमा भण्डारण गरिएको सबै डेटा जोखिममा पर्न सक्छ। यी मोडमा केही सुविधाहरू अफ हुने हुनाले केही एपहरू नचल्न सक्छन्। तपाईंले डिभाइसको बुटलोडर लक गरेपछि मात्र तपाईं प्रोडक्सन मोडमा फेरि प्रवेश गर्न सक्नुहुन्छ। यस सम्बन्धमा थप जानकारी पढ्न ट्याप गर्नुहोस्।"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"तपाईं पेज एग्नोस्टिक मोडअन्तर्गतको ४ के.बि. मोड प्रयोग गर्दै हुनुहुन्छ। यो मोडमा सफ्टवेयरको पूर्णताका बारेमा ग्यारेन्टी गर्न सकिँदैन र बुटलोडर अनलक गरिएका बेला फोनमा भण्डारण गरिएको सबै डेटा जोखिममा पर्न सक्छ। यी मोडमा केही सुविधाहरू अफ हुने हुनाले केही एपहरू नचल्न सक्छन्। तपाईंले डिभाइसको बुटलोडर लक गरेपछि मात्र तपाईं प्रोडक्सन मोडमा फेरि प्रवेश गर्न सक्नुहुन्छ। यसो गरेपछि डिभाइस फेरि फ्याक्ट्री रिसेट हुने छ र त्यसका सेटिङ रिस्टोर भई प्रोडक्सन सेटिङ कायम हुने छ। डिभाइस Android मा बुट भएपछि विकासकर्ता मोडमा गई OEM अनलक सेटिङ अफ गर्नुहोस्। डिभाइस Android मा बुट भएन वा डिभाइसको पर्फर्मेन्स अस्थिर भयो भने <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> मा भएको नवीनतम फ्याक्ट्री इमेज प्रयोग गरी डिभाइस रिफ्ल्यास गर्नुहोस् वा <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> प्रयोग गर्नुहोस् र \'डिभाइस मेटाउनुहोस्\', \'बुटलोडर लक गर्नुहोस्\' र \'सबै पार्टिसन बलपूर्वक फ्ल्यास गर्नुहोस्\' चयन गर्नुहोस्।"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"१६ के.बि. पेज एग्नोस्टिक मोड प्रयोग गरिँदै छ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"तपाईं पेज एग्नोस्टिक मोडअन्तर्गतको १६ के.बि. मोड प्रयोग गर्दै हुनुहुन्छ। यो मोडमा सफ्टवेयरको पूर्णताका बारेमा ग्यारेन्टी गर्न सकिँदैन र बुटलोडर अनलक गरिएका बेला फोनमा भण्डारण गरिएको सबै डेटा जोखिममा पर्न सक्छ। यी मोडमा केही सुविधाहरू अफ हुने हुनाले केही एपहरू नचल्न सक्छन्। तपाईंले ४ के.बि. मोडमा फर्किएर डिभाइसको बुटलोडर लक गरेपछि मात्र तपाईं प्रोडक्सन मोडमा फेरि प्रवेश गर्न सक्नुहुन्छ। यस सम्बन्धमा थप जानकारी पढ्न ट्याप गर्नुहोस्।"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"तपाईं पेज एग्नोस्टिक मोडअन्तर्गतको १६ के.बि. मोड प्रयोग गर्दै हुनुहुन्छ। यो मोडमा सफ्टवेयरको पूर्णताका बारेमा ग्यारेन्टी गर्न सकिँदैन र बुटलोडर अनलक गरिएका बेला फोनमा भण्डारण गरिएको सबै डेटा जोखिममा पर्न सक्छ। यी मोडमा केही सुविधाहरू अफ हुने हुनाले केही एपहरू नचल्न सक्छन्। तपाईंले ४ के.बि. मोडमा फर्किएर डिभाइसको बुटलोडर लक गरेपछि मात्र तपाईं प्रोडक्सन मोडमा फेरि प्रवेश गर्न सक्नुहुन्छ। यसो गरेपछि डिभाइस फेरि फ्याक्ट्री रिसेट हुने छ र त्यसका सेटिङ रिस्टोर भई प्रोडक्सन सेटिङ कायम हुने छ। डिभाइस Android मा बुट भएपछि विकासकर्ता मोडमा गई OEM अनलक सेटिङ अफ गर्नुहोस्। डिभाइस Android मा बुट भएन वा डिभाइसको पर्फर्मेन्स अस्थिर भयो भने <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> मा भएको नवीनतम फ्याक्ट्री इमेज प्रयोग गरी डिभाइस रिफ्ल्यास गर्नुहोस् वा <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> प्रयोग गर्नुहोस् र \'डिभाइस मेटाउनुहोस्\', \'बुटलोडर लक गर्नुहोस्\' र \'सबै पार्टिसन बलपूर्वक फ्ल्यास गर्नुहोस्\' चयन गर्नुहोस्।"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"१६ के.बि. पेज एग्नोस्टिक मोड"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"थप पढ्नुहोस्"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"बग रिपोर्ट ह्यान्ड्लर"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"एकभन्दा बढी व्यक्तिलाई प्रयोग गर्न दिनुहोस्"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index dd2b800..ef31960 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Bedtijd"</item>
+ <item msgid="4152450357280759894">"Autorijden"</item>
+ <item msgid="7096549258219399423">"Immersief"</item>
+ <item msgid="2760716776980432977">"Beheerd"</item>
+ <item msgid="601734478369121764">"Ster"</item>
+ <item msgid="6243809315432780521">"Agenda"</item>
+ <item msgid="4913577903148415331">"Tijd"</item>
+ <item msgid="3653377604690057780">"Theater"</item>
+ <item msgid="3843711267408385410">"Bloem"</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 753adb1c..72067f7 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Instellingen voor hoortoestel"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Sneltoets, geschiktheid voor hoortoestellen"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Voorinstelling"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Geen voorinstellingen geprogrammeerd door je audioloog"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Kan voorinstelling niet updaten"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio-uitvoer"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Over audio-uitvoer"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Meer informatie over Ontgrendelen via smartwatch"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Smartwatch toevoegen"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Smartwatch verwijderen"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Ontgrendelen via vingerafdruk en gezicht"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Ontgrendelen via gezichtsherkenning en met vingerafdruk"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ontgrendelen via gezichtsherkenning en vingerafdruk voor werk"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Instellen nodig"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Gezicht en vingerafdrukken toegevoegd"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Apps installeren"</b>\n"Installeer apps die je privé wilt houden in je gedeelte"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Goed om te weten"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Apps stoppen als je je gedeelte vergrendelt"</b>\n"Als je je gedeelte vergrendelt, worden apps in je gedeelte gestopt en krijg je geen meldingen van de apps"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Privégedeelten zijn niet geschikt voor apps die op de achtergrond moeten worden uitgevoerd of die kritieke meldingen sturen, zoals medische apps. Dit komt omdat meldingen en achtergrondactiviteit worden gestopt als je gedeelte is vergrendeld.\n\nApps in je privégedeelte verschijnen niet in rechtenbeheer, het privacydashboard en andere instellingen als je privégedeelte is vergrendeld.\n\nJe privégedeelte kan niet worden verplaatst naar een nieuw apparaat. Je moet een nieuw privégedeelte instellen als je dit wilt gebruiken op een ander apparaat.\n\nIedereen die je apparaat aan een computer koppelt of schadelijke apps op je apparaat installeert, heeft mogelijk toegang tot je privégedeelte."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Privégedeelten zijn niet geschikt voor apps die op de achtergrond moeten worden uitgevoerd of die kritieke meldingen sturen, zoals medische apps. Dit komt omdat meldingen en achtergrondactiviteit worden gestopt als je gedeelte is vergrendeld.\n\nApps in je privégedeelte verschijnen niet in rechtenbeheer, het privacydashboard en andere instellingen als het privégedeelte is vergrendeld.\n\nJe privégedeelte kan niet worden hersteld op een nieuw apparaat. Je moet een nieuw gedeelte instellen als je dit wilt gebruiken op een ander apparaat.\n\nIedereen die je apparaat aan een computer koppelt of schadelijke apps op je apparaat installeert, heeft mogelijk toegang tot je privégedeelte."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Meer informatie over privégedeelte"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Dit duurt even"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Privégedeelte instellen…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Apparaat opnieuw opstarten?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Gedetailleerde NFC-logboekregistratie is alleen bedoeld voor ontwikkelingsdoeleinden. Aanvullende NFC-gegevens worden opgenomen in bugrapporten. Deze kunnen privé-informatie bevatten. Start je apparaat opnieuw op om deze instelling te wijzigen."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Opnieuw opstarten"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Casten"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirroren"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Draadloze weergave aanzetten"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Aanpasbaar"</string>
<string name="brightness" msgid="6216871641021779698">"Helderheidsniveau"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Aanpasbare helderheid"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Over aanpasbare helderheid"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Je schermhelderheid wordt automatisch aangepast aan je omgeving en je activiteiten. Je kunt de schuifregelaar handmatig verplaatsen zodat Aanpasbare helderheid je voorkeuren leert kennen."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Aan"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Uit"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Door de gebruiker geselecteerd: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Spraak"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Snelheid van aanwijzer"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Gamecontroller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Trilling omleiden"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Trilling verzenden naar gamecontroller wanneer deze is aangesloten"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Toch doorgaan"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Annuleren"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Instellingen voor vergroting"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Pannen met 1 vinger"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Verplaats je vergrotingsgebied door met 1 vinger te slepen."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Verplaats je vergrotingsgebied door met 2 vingers te slepen."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Niet beschikbaar als alleen een deel van het scherm wordt vergroot"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Zoomen door te tikken op een knop"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zoom snel in op het scherm om content groter te maken"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Zo zoom je in:</b><br/> {0,number,integer}. Gebruik de snelkoppeling om de vergroting te starten.<br/> {1,number,integer}. Tik op het scherm.<br/> {2,number,integer}. Sleep met 2 vingers om te navigeren op het scherm.<br/> {3,number,integer}. Knijp met 2 vingers om het zoomniveau aan te passen.<br/> {4,number,integer}. Gebruik de snelkoppeling om de vergroting te stoppen.<br/><br/> <b>Zo zoom je tijdelijk in:</b><br/> {0,number,integer}. Zorg dat je vergrotingstype is ingesteld op volledig scherm.<br/> {1,number,integer}. Gebruik de snelkoppeling om de vergroting te starten.<br/> {2,number,integer}. Houd je vinger op het scherm.<br/> {3,number,integer}. Sleep met een vinger om te navigeren op het scherm.<br/> {4,number,integer}. Haal je vinger van het scherm om de vergroting te stoppen."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Als vergroting aanstaat, kun je op je scherm het beeld vergroten.\n\n"<b>"Als je wilt inzoomen"</b>", start je de vergroting en tik je waar dan ook op het scherm.\n"<ul><li>"Veeg met 2 of meer vingers om te scrollen."</li>\n<li>"Knijp 2 of meer vingers samen om de zoom aan te passen."</li></ul>\n\n<b>"Als je tijdelijk wilt zoomen"</b>", start je de vergroting, waarna je ergens op het scherm tikt en vasthoudt.\n"<ul><li>"Sleep om een ander deel van het scherm weer te geven."</li>\n<li>"Haal je vinger van het scherm om uit te zoomen."</li></ul>\n\n"Je kunt niet inzoomen op het toetsenbord of de navigatiebalk."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Pagina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> van <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Snelkoppeling met knop Toegankelijkheid"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Geen}=1{1 planning ingesteld}other{# planningen ingesteld}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Niet storen"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioriteitsmodi"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Krijg alleen meldingen van belangrijke mensen en apps"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Activeringstype selecteren"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Tijd"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Voorbeeld: \'9:30 – 17:00 uur\'"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Agenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Voorbeeld: \'Persoonlijke agenda\'"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Onderbrekingen beperken"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Zet Niet storen aan."</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Wekkers en mediageluiden mogen onderbreken"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Schema\'s"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Schema\'s verwijderen"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Verwijderen"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Bewerken"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Schema\'s"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schema"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Agenda toevoegen"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Je agenda gebruiken"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Schema"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Schema instellen"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schema"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> u <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schema"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Telefoongeluid uitzetten op bepaalde tijdstippen"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Onderbrekingen toestaan die een geluid laten horen"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokkeer visuele onderbreking"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Visuele signalen toestaan"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Meldingen die je mogen storen"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Blijf gefocust"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Aanvullende acties"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Weergave-instellingen"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Weergaveopties"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"donker thema aanzetten"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"OS en apps wijzigen zodat de voorkeur wordt gegeven aan lichte tekst op een donkere achtergrond, wat prettiger voor de ogen kan zijn en op sommige apparaten een aanzienlijke batterijbesparing oplevert"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Geen weergavewijzigingen}=1{{effect_1}}=2{{effect_1} en {effect_2}}=3{{effect_1}, {effect_2} en {effect_3}}other{{effect_1}, {effect_2} en nog #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Onderbrekingen filteren"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Er worden geen onderbrekingen gefilterd"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Weergaveopties voor gefilterde meldingen"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Als Niet storen aanstaat"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Geen geluid van meldingen"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorieën"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Anders"</string>
<string name="no_channels" msgid="4716199078612071915">"Deze app heeft geen meldingen geplaatst"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Niet-gebruikte categorieën tonen"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Extra instellingen in de app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Niet-gebruikte categorieën tonen"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Niet-gebruikte categorieën beperken"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Geselecteerde apps"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Geen"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Alles"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Apps toestaan dit te negeren"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps die je mogen storen"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Meer apps selecteren"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Wijzigen in alleen alarmen gedurende 1 uur tot {time}}other{Wijzigen in alleen alarmen gedurende # uur tot {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Wijzigen in \'Alleen wekkers\' tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Wijzigen in \'Altijd onderbreken\'"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Naam wijzigen"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Icoon wijzigen"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Icoon wijzigen"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Waarschuwing"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Sluiten"</string>
<string name="device_feedback" msgid="5351614458411688608">"Feedback sturen over dit apparaat"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"De gegevenspartitie van dit apparaat moet worden geconverteerd naar ext4 voordat je de 16 KB-ontwikkelaarsoptie kunt gebruiken. In deze modus kan de software-integriteit niet worden gegarandeerd. Ook kunnen alle gegevens die op de telefoon zijn opgeslagen terwijl de bootloader is ontgrendeld gevaar lopen. Als je de 16 KB-optie activeert, moet je het apparaat hierna nog een keer opnieuw opstarten. Zodra je in deze modus zit, kun met één keer opnieuw opstarten wisselen tussen de 4 KB- en 16 KB-modus. Sommige functies worden in deze modi uitgezet, dus sommige apps werken misschien niet. Als je het apparaat wilt terugzetten naar de productiemodus, moet je teruggaan naar de 4 KB-modus en daarna de bootloader vergrendelen. Hierdoor worden de fabrieksinstellingen teruggezet op het apparaat. Nadat het apparaat succesvol is opgestart in Android, zet je OEM-ontgrendeling uit in de Ontwikkelaarsopties. Het apparaat wordt gewist en het bestandssysteem wordt na bevestiging gewijzigd in ext4. Als dit is gebeurd, moet je terugkomen om 16 KB opnieuw aan te zetten."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Alle gegevens wissen"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Kan niet omzetten en de gegevenspartitie niet wissen naar ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader moet worden ontgrendeld voor 16 KB-modus"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"De bootloader moet op dit apparaat ontgrendeld zijn voordat je de 16 KB-ontwikkelaarsoptie kunt gebruiken. In deze modus kan de software-integriteit niet worden gegarandeerd en kunnen alle gegevens die op de telefoon zijn opgeslagen, terwijl de bootloader is ontgrendeld, gevaar lopen. Alle gebruikersgegevens en instellingen worden gewist als de 16 KB-modus wordt geactiveerd. Na het ontgrendelen van de bootloader moet je voor het activeren van de 16 KB-optie het apparaat 2 keer opnieuw opstarten. Zodra je in deze modus zit, kun je met één keer opnieuw opstarten wisselen tussen de 4 KB- en 16 KB-modus. Sommige functies worden in deze modi uitgezet, dus sommige apps werken misschien niet. Als je het apparaat wilt terugzetten naar de productiemodus, moet je teruggaan naar de 4 KB-modus en daarna OEM en de bootloader vergrendelen. Hierdoor worden de fabrieksinstellingen teruggezet op het apparaat. Ontgrendel de bootloader en probeer het opnieuw. Instructies hiervoor vind je op <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Niet-paginagebonden 4 KB-modus gebruiken"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Je zit in de 4 KB-modus van de niet-paginagebonden modus. In deze modus kan de software-integriteit niet worden gegarandeerd. Ook kunnen alle gegevens die op de telefoon zijn opgeslagen terwijl de bootloader is ontgrendeld gevaar lopen. Sommige functies worden in deze modi uitgezet, dus sommige apps werken misschien niet. Als je wilt terugkeren naar de productiemodus, moet je de bootloader van het apparaat vergrendelen. Tik om meer te lezen."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Je zit in de 4 KB-modus van de niet-paginagebonden modus. In deze modus kan de software-integriteit niet worden gegarandeerd. Ook kunnen alle gegevens die op de telefoon zijn opgeslagen terwijl de bootloader is ontgrendeld gevaar lopen. Sommige functies worden in deze modi uitgezet, dus sommige apps werken misschien niet. Als je wilt terugkeren naar de productiemodus, moet je de bootloader van het apparaat vergrendelen. Hierdoor worden de fabrieksinstellingen teruggezet en worden de productie-instellingen hersteld op het apparaat. Nadat het apparaat succesvol is opgestart in Android, zet je OEM-ontgrendeling uit in de Ontwikkelaarsopties. Als het apparaat niet opstart in Android of instabiel is, flash het apparaat dan opnieuw met de nieuwste fabrieksimages van <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> of gebruik <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> en selecteer Apparaat wissen, Bootloader vergrendelen en Alle partities geforceerd flashen."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Niet-paginagebonden modus van 16 KB gebruiken"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Je zit in de 16 KB-modus van de niet-paginagebonden modus. In deze modus kan de software-integriteit niet worden gegarandeerd. Ook kunnen alle gegevens die op de telefoon zijn opgeslagen terwijl de bootloader is ontgrendeld gevaar lopen. Sommige functies worden in deze modi uitgezet, dus sommige apps werken misschien niet. Als je wilt terugkeren naar de productiemodus, moet je teruggaan naar de 4 KB-modus en daarna de bootloader van het apparaat vergrendelen. Tik om meer te lezen."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Je zit in de 16 KB-modus van de niet-paginagebonden modus. In deze modus kan de software-integriteit niet worden gegarandeerd en kunnen alle gegevens die op de telefoon zijn opgeslagen terwijl de bootloader is ontgrendeld, gevaar lopen. Sommige functies worden in deze modi uitgezet, dus sommige apps werken misschien niet. Als je wilt terugkeren naar de productiemodus, moet je teruggaan naar de 4 KB-modus en daarna de bootloader van het apparaat vergrendelen. Hierdoor worden de fabrieksinstellingen teruggezet en worden de productie-instellingen hersteld op het apparaat. Nadat het apparaat succesvol is opgestart in Android, zet je OEM-ontgrendeling uit in de Ontwikkelaarsopties. Als het apparaat niet opstart in Android of instabiel is, flash het apparaat dan opnieuw met de nieuwste fabrieksimages van <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> of gebruik <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> en selecteer Apparaat wissen, Bootloader vergrendelen en Alle partities geforceerd flashen."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Niet-paginagebonden 16 KB-modus"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Meer lezen"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"App voor verwerking bugrapport"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"App vastzetten gebruiken"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Ontwikkelaarsopties gebruiken"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Afdrukservice gebruiken"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Meerdere gebruikers toestaan"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"toestaan, meerdere, gebruiker, toestemming, veel"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"meerdere, gebruikers, profielen, personen, accounts, wisselen, veel"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Draadloze foutopsporing gebruiken"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-or/arrays.xml b/res/values-or/arrays.xml
index 65f977e..4b0f343 100644
--- a/res/values-or/arrays.xml
+++ b/res/values-or/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ଶୋଇବା ସମୟ"</item>
+ <item msgid="4152450357280759894">"ଡ୍ରାଇଭିଂ"</item>
+ <item msgid="7096549258219399423">"ଇମର୍ସିଭ"</item>
+ <item msgid="2760716776980432977">"ପରିଚାଳିତ ହୋଇଛି"</item>
+ <item msgid="601734478369121764">"ଷ୍ଟାର"</item>
+ <item msgid="6243809315432780521">"କେଲେଣ୍ଡର"</item>
+ <item msgid="4913577903148415331">"ସମୟ"</item>
+ <item msgid="3653377604690057780">"ଥିଏଟର"</item>
+ <item msgid="3843711267408385410">"ଫୁଲ"</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 3c0d2d3..4dd7b1a 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ହିଅରିଂ ଡିଭାଇସ ସେଟିଂସ"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ସର୍ଟକଟ, ଶ୍ରବଣଯନ୍ତ୍ର ଉପଯୋଗୀ"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ପ୍ରିସେଟ"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ଅଡିଓଲୋଜିଷ୍ଟଙ୍କ ଦ୍ଵାରା ପ୍ରୋଗ୍ରାମ ହୋଇଥିବା କୌଣସି ପ୍ରିସେଟ ନାହିଁ"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ପ୍ରିସେଟକୁ ଅପଡେଟ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ଅଡିଓ ଆଉଟପୁଟ"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ଅଡିଓ ଆଉଟପୁଟ ବିଷୟରେ"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ୱାଚ ଅନଲକ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ୱାଚ ଯୋଗ କରନ୍ତୁ"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ୱାଚକୁ କାଢ଼ି ଦିଅନ୍ତୁ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଏବଂ ଫେସ ଅନଲକ"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ଫେସ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ୱାର୍କ ପାଇଁ ଫେସ ଏବଂ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ସେଟଅପ ଆବଶ୍ୟକ"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ଚେହେରା ଏବଂ ଟିପଚିହ୍ନଗୁଡ଼ିକ ଯୋଗ କରାଯାଇଛି"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ଡିଭାଇସକୁ ରିଷ୍ଟାର୍ଟ କରିବେ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ସବିଶେଷ NFC ଲଗିଂ କେବଳ ଉନ୍ନତି ପାଇଁ ଉଦ୍ଦିଷ୍ଟ। ବଗ ରିପୋର୍ଟରେ ଅତିରିକ୍ତ NFC ଡାଟା ଅନ୍ତର୍ଭୁକ୍ତ କରାଯାଏ, ଯେଉଁଥିରେ ବ୍ୟକ୍ତିଗତ ସୂଚନା ଥାଇପାରେ। ଏହି ସେଟିଂକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସକୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ।"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"କାଷ୍ଟ"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ମିରର୍"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ୱେୟାରଲେସ୍ ପ୍ରଦର୍ଶନ ସକ୍ଷମ କରନ୍ତୁ"</string>
@@ -1191,8 +1220,9 @@
<string name="color_mode_option_saturated" msgid="3413853820158447300">"ସାଚୁରେଟେଡ୍"</string>
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ଆଡେପ୍ଟିଭ"</string>
<string name="brightness" msgid="6216871641021779698">"ଉଜ୍ଜ୍ୱଳତା ସ୍ତର"</string>
- <string name="auto_brightness_title" msgid="4239324728760986697">"ଆଡେପ୍ଟିଭ୍ ଉଜ୍ଜ୍ୱଳତା"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"ଆପଣଙ୍କ ସ୍କ୍ରିନର ଉଜ୍ଜ୍ଵଳତା ଆପଣଙ୍କ ପରିବେଶ ଓ କାର୍ଯ୍ୟକଳାପ ଅନୁସାରେ ସ୍ୱତଃ ଆଡଜଷ୍ଟ ହେବ। ଆପଣ ସ୍ଲାଇଡର୍କୁ ହାତରେ ଘୁଞ୍ଚାଇ ଆଡେପ୍ଟିଭ୍ ଉଜ୍ଜ୍ୱଳତାକୁ ଆପଣଙ୍କ ପସନ୍ଦଗୁଡ଼ିକ ଜାଣିବାରେ ସାହାଯ୍ୟ କରିପାରିବେ।"</string>
+ <string name="auto_brightness_title" msgid="4239324728760986697">"ଆଡେପ୍ଟିଭ ଉଜ୍ଜ୍ୱଳତା"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"ଆଡେପ୍ଟିଭ ଉଜ୍ଜ୍ୱଳତା ବିଷୟରେ"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"ଆପଣଙ୍କ ସ୍କ୍ରିନର ଉଜ୍ଜ୍ଵଳତା ଆପଣଙ୍କ ପରିବେଶ ଓ କାର୍ଯ୍ୟକଳାପ ଅନୁସାରେ ସ୍ୱତଃ ଆଡଜଷ୍ଟ ହେବ। ଆପଣ ସ୍ଲାଇଡରକୁ ମାନୁଆଲି ମୁଭ କରି ଆଡେପ୍ଟିଭ ଉଜ୍ଜ୍ୱଳତାକୁ ଆପଣଙ୍କ ପସନ୍ଦଗୁଡ଼ିକ ଜାଣିବାରେ ସାହାଯ୍ୟ କରିପାରିବେ।"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ଚାଲୁ"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ବନ୍ଦ"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"ହ୍ବାଇଟ୍ ବ୍ୟାଲେନ୍ସ ପ୍ରଦର୍ଶନ କରନ୍ତୁ"</string>
@@ -1247,7 +1277,7 @@
<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>
+ <string name="dark_ui_summary_off_auto_mode_never" msgid="5828281549475697398">"କେବେ ବି ସ୍ୱତଃ ଚାଲୁ ହେବ ନାହିଁ"</string>
<string name="dark_ui_summary_off_auto_mode_auto" msgid="6766831395970887213">"ସନ୍ଧ୍ୟାରେ ସ୍ୱଚାଳିତ ଭାବେ ଚାଲୁ ହେବ"</string>
<string name="dark_ui_summary_off_auto_mode_custom" msgid="1345906088326708376">"<xliff:g id="ID_1">%1$s</xliff:g>ରେ ସ୍ୱଚାଳିତ ଭାବେ ଚାଲୁ ହେବ"</string>
<string name="dark_ui_summary_off_auto_mode_custom_bedtime" msgid="7759826673214624622">"ଶୋଇବା ସମୟରେ ସ୍ୱଚାଳିତ ଭାବେ ଚାଲୁ ହେବ"</string>
@@ -1271,7 +1301,7 @@
<string name="wallpaper_settings_fragment_title" msgid="8445963841717633149">"ଏଥିରୁ ୱାଲ୍ପେପର୍ ବାଛନ୍ତୁ"</string>
<string name="style_suggestion_title" msgid="1213747484782364775">"ଆପଣଙ୍କର ଫୋନ୍ କଷ୍ଟମାଇଜ୍ କରନ୍ତୁ"</string>
<string name="style_suggestion_summary" msgid="4271131877800968159">"ବିଭିନ୍ନ ଷ୍ଟାଇଲ୍, ୱାଲ୍ପେପର୍ ଏବଂ ଆହୁରି ଅନେକ କିଛି ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ"</string>
- <string name="screensaver_settings_title" msgid="3588535639672365395">"ସ୍କ୍ରିନ୍ ସେଭର୍"</string>
+ <string name="screensaver_settings_title" msgid="3588535639672365395">"ସ୍କ୍ରିନ ସେଭର"</string>
<string name="keywords_screensaver" msgid="7249337959432229172">"ସ୍କ୍ରିନସେଭର"</string>
<string name="screensaver_settings_when_to_dream_bedtime" msgid="3279310576803094771">"ଶୋଇବା ସମୟ ମୋଡ ଚାଲୁ ଥିବା ଯୋଗୁଁ ଉପଲବ୍ଧ ନାହିଁ"</string>
<string name="screensaver_settings_toggle_title" msgid="6194634226897244374">"ସ୍କ୍ରିନ ସେଭର ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ଯେ କୌଣସି ମତେ ଜାରି ରଖନ୍ତୁ"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ବାତିଲ କର"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ମାଗ୍ନିଫିକେସନ ସେଟିଂସ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ଗୋଟିଏ ଆଙ୍ଗୁଠିରେ ପେନିଂ"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ଗୋଟିଏ ଆଙ୍ଗୁଠିକୁ ଟାଣି ମ୍ୟାଗ୍ନିଫିକେସନ ଏରିଆକୁ ମୁଭ କରନ୍ତୁ।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ଦୁଇ ଆଙ୍ଗୁଠିକୁ ଟାଣି ମ୍ୟାଗ୍ନିଫିକେସନ ଏରିଆକୁ ମୁଭ କରନ୍ତୁ।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"ସ୍କ୍ରିନର କେବଳ କିଛି ଅଂଶ ମେଗ୍ନିଫାଏ କରାଯିବା ସମୟରେ ଉପଲବ୍ଧ ନାହିଁ"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ଜୁମ୍ କରିବା ପାଇଁ ଗୋଟିଏ ବଟନ୍ ଉପରେ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ବିଷୟବସ୍ତୁକୁ ଆହୁରି ବଡ଼ କରିବା ପାଇଁ ସ୍କ୍ରିନରେ ଶୀଘ୍ର ଜୁମ ଇନ କରନ୍ତୁ"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ଜୁମ ଇନ କରିବାକୁ:</b><br/> {0,number,integer}. ମ୍ୟାଗ୍ନିଫିକେସନ ଆରମ୍ଭ କରିବାକୁ ସର୍ଟକଟ ବ୍ୟବହାର କରନ୍ତୁ<br/> {1,number,integer}. ସ୍କ୍ରିନରେ ଟାପ କରନ୍ତୁ<br/> {2,number,integer}. ସ୍କ୍ରିନର ଚାରିପଟେ ମୁଭ କରିବାକୁ 2ଟି ଆଙ୍ଗୁଠିରେ ଡ୍ରାଗ କରନ୍ତୁ<br/> {3,number,integer}. ଜୁମ ଆଡଜଷ୍ଟ କରିବାକୁ 2ଟି ଆଙ୍ଗୁଠିରେ ପିଞ୍ଚ କରନ୍ତୁ<br/> {4,number,integer}. ମ୍ୟାଗ୍ନିଫିକେସନ ବନ୍ଦ କରିବାକୁ ସର୍ଟକଟ ବ୍ୟବହାର କରନ୍ତୁ<br/><br/> <b>ଅସ୍ଥାୟୀ ଭାବେ ଜୁମ ଇନ କରିବାକୁ:</b><br/> {0,number,integer}. ଆପଣଙ୍କ ମ୍ୟାଗ୍ନିଫିକେସନ ପ୍ରକାର ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରେ ସେଟ ହୋଇଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ<br/> {1,number,integer}. ମ୍ୟାଗ୍ନିଫିକେସନ ଆରମ୍ଭ କରିବାକୁ ସର୍ଟକଟ ବ୍ୟବହାର କରନ୍ତୁ<br/> {2,number,integer}. ସ୍କ୍ରିନରେ ଯେ କୌଣସି ସ୍ଥାନରେ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ<br/> {3,number,integer}. ସ୍କ୍ରିନର ଚାରିପଟେ ମୁଭ କରିବାକୁ ଆଙ୍ଗୁଠିରେ ଡ୍ରାଗ କରନ୍ତୁ<br/> {4,number,integer}. ମ୍ୟାଗ୍ନିଫିକେସନ ବନ୍ଦ କରିବା ପାଇଁ ଆଙ୍ଗୁଠିକୁ ଉଠାନ୍ତୁ"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ଚାଲୁଥିବା ସମୟରେ, ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ର ଜୁମ୍ ବଢ଼ାଇ ପାରିବେ।\n\n"<b>"ଜୁମ୍ କରିବାକୁ"</b>", ମ୍ୟାଗ୍ନିଫିକେସନ୍ ଆରମ୍ଭ କରନ୍ତୁ, ତା’ପରେ ସ୍କ୍ରିନ୍ର ଯେ କୌଣସି ସ୍ଥାନରେ ଟାପ୍ କରନ୍ତୁ।\n"<ul><li>"ସ୍କ୍ରୋଲ୍ କରିବାକୁ 2 ବା ଅଧିକ ଆଙ୍ଗୁଠିରେ ଟାଣନ୍ତୁ"</li>\n<li>"ଜୁମ୍ ଆଡ୍ଜଷ୍ଟ କରିବାକୁ 2 ବା ଅଧିକ ଆଙ୍ଗୁଠିରେ ପିଞ୍ଚ୍ କରନ୍ତୁ"</li></ul>\n\n<b>"ଅସ୍ଥାୟୀ ଭାବେ ଜୁମ୍ କରିବାକୁ"</b>", ମ୍ୟାଗ୍ନିଫିକେସନ୍ ଆରମ୍ଭ କରନ୍ତୁ, ତା’ପରେ ସ୍କ୍ରିନ୍ର ଯେ କୌଣସି ସ୍ଥାନରେ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।\n"<ul><li>"ସ୍କ୍ରିନ୍ର ଚାରିପଟରେ ଘୁଞ୍ଚାଇବାକୁ ଟାଣନ୍ତୁ"</li>\n<li>"ଜୁମ୍ କମାଇବାକୁ ଆଙ୍ଗୁଠି ବାହାର କରି ଦିଅନ୍ତୁ"</li></ul>\n\n"ଆପଣ କୀବୋର୍ଡ ବା ନେଭିଗେସନ୍ ବାର୍ ଉପରେ ଜୁମ୍ ବଢ଼ାଇ ପାରିବେ ନାହିଁ।"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> ମଧ୍ୟରୁ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> ପୃଷ୍ଠା"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"ଆକ୍ସେସିବିଲିଟୀ ବଟନ ସର୍ଟକଟ"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"ପ୍ରାଥମିକତା ମୋଡ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"କେବଳ ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଲୋକ ଏବଂ ଆପ୍ସ ଦ୍ୱାରା ସୂଚନା ପାଆନ୍ତୁ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"ସକ୍ରିୟକରଣ ପ୍ରକାର ଚୟନ କରନ୍ତୁ"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"ସମୟ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ଉଦାହରଣ \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"କେଲେଣ୍ଡର"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ଉଦାହରଣ \"ବ୍ୟକ୍ତିଗତ କେଲେଣ୍ଡର\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"ବ୍ୟାଘାତଗୁଡ଼ିକୁ ସୀମିତ କରନ୍ତୁ"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"ସିଡୁଲ୍ ଡିଲିଟ୍ କରନ୍ତୁ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ଡିଲିଟ୍ କରନ୍ତୁ"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"ଏକ କେଲେଣ୍ଡର ଯୋଗ କରନ୍ତୁ"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ଆପଣଙ୍କ କେଲେଣ୍ଡରକୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"ସିଡୁଲ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ଏକ ସିଡୁଲ ସେଟ କରନ୍ତୁ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"ସିଡୁଲ୍"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ନିର୍ଦ୍ଦିଷ୍ଟ ସମୟରେ ଫୋନ୍କୁ ନିରବ କରନ୍ତୁ"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ବାଧାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ ଯାହା ଶବ୍ଦ କରେ"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ଭିଜୁଆଲ୍ ବାଧା ଅବରୋଧ କରନ୍ତୁ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ଭିଜୁଆଲ୍ ସଙ୍କେତ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"ଆପଣଙ୍କ ପାଖରେ ପହଞ୍ଚିପାରିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ଫୋକସ ରଖନ୍ତୁ"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"ଅତିରିକ୍ତ ପଦକ୍ଷେପ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ଡିସପ୍ଲେ ସେଟିଂସ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ଡିସପ୍ଲେ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ଡାର୍କ ଥିମକୁ ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ଆଖି ପାଇଁ ଆରାମଦାୟକ ଏବଂ କିଛି ଡିଭାଇସରେ ଉଲ୍ଲେଖନୀୟ ବେଟେରୀ ସେଭ କରୁଥିବା ଡାର୍କ ବେକଗ୍ରାଉଣ୍ଡରେ ଲାଇଟ ଟେକ୍ସଟ ପସନ୍ଦ କରିବାକୁ OS ଏବଂ ଆପ୍ସ ସୁଇଚ କରନ୍ତୁ"</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="mode_notification_filter_title" msgid="443728483176031977">"ବାଧାଗୁଡ଼ିକୁ ଫିଲ୍ଟର କରନ୍ତୁ"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"କୌଣସି ବାଧା ଫିଲ୍ଟର ହୋଇନାହିଁ"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ଅବ୍ୟବହୃତ ବର୍ଗଗୁଡ଼ିକ ଦେଖାନ୍ତୁ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ଅବ୍ୟବହୃତ ବର୍ଗଗୁଡ଼ିକ ଲୁଚାନ୍ତୁ"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"ସମସ୍ତ"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"ରିନେମ କରନ୍ତୁ"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ଆଇକନ ବଦଳାନ୍ତୁ"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ଆଇକନ ବଦଳାନ୍ତୁ"</string>
<string name="warning_button_text" msgid="1274234338874005639">"ଚେତାବନୀ"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="device_feedback" msgid="5351614458411688608">"ଏହି ଡିଭାଇସ ବିଷୟରେ ମତାମତ ପଠାନ୍ତୁ"</string>
@@ -4256,7 +4317,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>
@@ -4871,14 +4932,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB ଡେଭଲପର ବିକଳ୍ପ ବ୍ୟବହାର କରିବା ପୂର୍ବରୁ ଏହି ଡିଭାଇସର ଡାଟା ପାର୍ଟିସନ ext4କୁ କନଭର୍ଟ କରାଯିବା ଆବଶ୍ୟକ। ଏହି ମୋଡରେ ସଫ୍ଟୱେର ଇଣ୍ଟିଗ୍ରିଟିକୁ ଗେରେଣ୍ଟି ଦିଆଯାଇପାରିବ ନାହିଁ ଏବଂ ବୁଟଲୋଡର ଅନଲକ ଥିବା ସମୟରେ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଯେ କୌଣସି ଡାଟା ବିପଦରେ ପଡ଼ିପାରେ। 16KB ବିକଳ୍ପକୁ ସକ୍ରିୟ କରିବା ପାଇଁ ଏହା ପରେ ଆଉ ଏକ ରିବୁଟ ଆବଶ୍ୟକ ହେବ। ଆପଣ ଏହି ମୋଡରେ ଥିଲେ ଆପଣ ଗୋଟିଏ ସିଙ୍ଗଲ ରିବୁଟ ସହିତ 4KB ଏବଂ 16KB ମୋଡ ମଧ୍ୟରେ ଆଗକୁ ଏବଂ ପଛକୁ ସୁଇଚ କରିପାରିବେ। ଏହି ମୋଡଗୁଡ଼ିକରେ କିଛି ଫିଚରକୁ ଅକ୍ଷମ କରିଦିଆଯିବ, ଯାହା ଫଳରେ କିଛି ଆପ୍ଲିକେସନ କାମ କରିନପାରେ। ଡିଭାଇସକୁ ପ୍ରଡକ୍ସନ ମୋଡକୁ ଫେରାଇ ଆଣିବା ପାଇଁ ଆପଣଙ୍କୁ ଡିଭାଇସକୁ ଫେକ୍ଟୋରୀ ରିସେଟ କରୁଥିବା 4KB ମୋଡକୁ ପୁଣି ସୁଇଚ କରି ତା\'ପରେ ବୁଟଲୋଡରକୁ ଲକ କରିବାକୁ ହେବ। Androidରେ ସଫଳତାର ସହ ଡିଭାଇସ ବୁଟ ହେବା ପରେ ଡେଭେଲପର ବିକଳ୍ପରେ OEM ଅନଲକିଂକୁ ଅକ୍ଷମ କରନ୍ତୁ। ଡିଭାଇସକୁ ୱାଇପ କରାଯିବ ଏବଂ ସୁନିଶ୍ଚିତକରଣ ପରେ ଫାଇଲସିଷ୍ଟମକୁ ext4ରେ ପରିବର୍ତ୍ତନ କରାଯିବ। ଏହା ସମ୍ପୂର୍ଣ୍ଣ ହେବା ପରେ ଦୟାକରି ପୁଣି 16KBକୁ ସକ୍ଷମ କରିବାକୁ ଫେରନ୍ତୁ।"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ସମସ୍ତ ଡାଟା ଇରେଜ କରନ୍ତୁ"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ଡାଟା ପାର୍ଟିସନକୁ ext4ରେ ପୁଣି ଫର୍ମାଟ କରି ୱାଇପ କରିବାରେ ବିଫଳ ହୋଇଛି।"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB ମୋଡ ପାଇଁ ବୁଟଲୋଡର ଅନଲକ ଆବଶ୍ୟକ"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16KB ଡେଭେଲପର ବିକଳ୍ପ ବ୍ୟବହାର କରିବା ପୂର୍ବରୁ ଏହି ଡିଭାଇସକୁ ବୁଟଲୋଡରକୁ ଅନଲକ କରିବା ଆବଶ୍ୟକ। ଏହି ମୋଡରେ ସଫ୍ଟୱେର ଇଣ୍ଟିଗ୍ରିଟିକୁ ଗେରେଣ୍ଟି ଦିଆଯାଇପାରିବ ନାହିଁ ଏବଂ ବୁଟଲୋଡର ଅନଲକ ଥିବା ସମୟରେ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଯେ କୌଣସି ଡାଟା ବିପଦରେ ପଡ଼ିପାରେ। 16KB ମୋଡ ସକ୍ରିୟ କରିବା ସମୟରେ ସମସ୍ତ ୟୁଜର ଡାଟା ଏବଂ ସେଟିଂସ ୱାଇପ ହୋଇଯିବ। ବୁଟଲୋଡର ଅନଲକ ହେବା ପରେ 16KB ବିକଳ୍ପ ସକ୍ରିୟ କରିବା ପାଇଁ ଦୁଇଟି ରିବୁଟ ଆବଶ୍ୟକ ହେବ। ଆପଣ ଏହି ମୋଡରେ ଥିଲେ ଆପଣ ଗୋଟିଏ ସିଙ୍ଗଲ ରିବୁଟ ସହିତ 4KB ଏବଂ 16KB ମୋଡ ମଧ୍ୟରେ ଆଗକୁ ଏବଂ ପଛକୁ ସୁଇଚ କରିପାରିବେ। ଏହି ମୋଡଗୁଡ଼ିକରେ କିଛି ଫିଚରକୁ ଅକ୍ଷମ କରିଦିଆଯିବ, ଯାହା ଫଳରେ କିଛି ଆପ୍ଲିକେସନ କାମ କରିନପାରେ। ଡିଭାଇସକୁ ପ୍ରଡକ୍ସନ ମୋଡକୁ ଫେରାଇ ଆଣିବା ପାଇଁ ଆପଣଙ୍କୁ ଡିଭାଇସକୁ ପୁଣି 4KB ମୋଡକୁ ସୁଇଚ କରି ତା\'ପରେ OEM/ବୁଟଲୋଡରକୁ ଲକ (ଯାହା ଫେକ୍ଟୋରୀ ରିସେଟ କରେ) କରିବାକୁ ହେବ। ଦୟାକରି ବୁଟଲୋଡରକୁ ଅନଲକ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ। ଏହା କିପରି କରିବେ ସେଥିପାଇଁ ଆପଣ <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>ରେ ନିର୍ଦ୍ଦେଶାବଳୀ ଦେଖିପାରିବେ"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡ ବ୍ୟବହାର କରାଯାଉଛି"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"ଆପଣ ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡର 4KB ମୋଡରେ ଅଛନ୍ତି। ଏହି ମୋଡରେ ସଫ୍ଟୱେର ଇଣ୍ଟିଗ୍ରିଟିକୁ ଗେରେଣ୍ଟି ଦିଆଯାଇପାରିବ ନାହିଁ ଏବଂ ବୁଟଲୋଡର ଅନଲକ ଥିବା ସମୟରେ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଯେ କୌଣସି ଡାଟା ବିପଦରେ ପଡ଼ିପାରେ। ଏହି ମୋଡଗୁଡ଼ିକରେ କିଛି ଫିଚରକୁ ଅକ୍ଷମ କରିଦିଆଯିବ, ଯାହା ଫଳରେ କିଛି ଆପ୍ଲିକେସନ କାମ କରିନପାରେ। ପ୍ରଡକ୍ସନ ମୋଡରେ ପୁଣି-ପ୍ରବେଶ କରିବା ପାଇଁ ଆପଣଙ୍କୁ ଡିଭାଇସର ବୁଟଲୋଡରକୁ ଲକ କରିବା ଆବଶ୍ୟକ। ଅଧିକ ପଢ଼ନ୍ତୁରେ ଟାପ କରନ୍ତୁ।"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"ଆପଣ ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡର 4KB ମୋଡରେ ଅଛନ୍ତି। ଏହି ମୋଡରେ ସଫ୍ଟୱେର ଇଣ୍ଟିଗ୍ରିଟିକୁ ଗେରେଣ୍ଟି ଦିଆଯାଇପାରିବ ନାହିଁ ଏବଂ ବୁଟଲୋଡର ଅନଲକ ଥିବା ସମୟରେ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଯେ କୌଣସି ଡାଟା ବିପଦରେ ପଡ଼ିପାରେ। ଏହି ମୋଡଗୁଡ଼ିକରେ କିଛି ଫିଚରକୁ ଅକ୍ଷମ କରିଦିଆଯିବ, ଯାହା ଫଳରେ କିଛି ଆପ୍ଲିକେସନ କାମ କରିନପାରେ। ପ୍ରଡକ୍ସନ ମୋଡରେ ପୁଣି-ପ୍ରବେଶ କରିବା ପାଇଁ ଆପଣଙ୍କୁ ଡିଭାଇସର ବୁଟଲୋଡରକୁ ଲକ କରିବା ଆବଶ୍ୟକ। ଏହା ଡିଭାଇସକୁ ପୁଣି ଫେକ୍ଟୋରୀ ରିସେଟ କରି ପ୍ରଡକ୍ସନ ସେଟିଂସରେ ରିଷ୍ଟୋର କରିବ। Androidରେ ସଫଳତାର ସହ ଡିଭାଇସ ବୁଟ ହେବା ପରେ ଡେଭେଲପର ବିକଳ୍ପରେ OEM ଅନଲକିଂକୁ ଅକ୍ଷମ କରନ୍ତୁ। ଯଦି ଡିଭାଇସ Androidରେ ବୁଟ ହେବାରେ ବିଫଳ ହୁଏ କିମ୍ବା ଅସ୍ଥିର ଅଟେ, ତେବେ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a>ରୁ ନବୀନତମ ଫେକ୍ଟୋରୀ ଇମେଜଗୁଡ଼ିକ ସହ ଡିଭାଇସକୁ ପୁଣି-ଫ୍ଲାସ କରି \'ଡିଭାଇସକୁ ୱାଇପ କରନ୍ତୁ\', \'ବୁଟଲୋଡରକୁ ଲକ କରନ୍ତୁ\' ଏବଂ \'ସବୁ ପାର୍ଟିସନକୁ ଫୋର୍ସ ଫ୍ଲାସ କରନ୍ତୁ\'କୁ ଚୟନ କରନ୍ତୁ।"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡ ବ୍ୟବହାର କରାଯାଉଛି"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"ଆପଣ ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡର 16KB ମୋଡରେ ଅଛନ୍ତି। ଏହି ମୋଡରେ ସଫ୍ଟୱେର ଇଣ୍ଟିଗ୍ରିଟିକୁ ଗେରେଣ୍ଟି ଦିଆଯାଇପାରିବ ନାହିଁ ଏବଂ ବୁଟଲୋଡର ଅନଲକ ଥିବା ସମୟରେ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଯେ କୌଣସି ଡାଟା ବିପଦରେ ପଡ଼ିପାରେ। ଏହି ମୋଡଗୁଡ଼ିକରେ କିଛି ଫିଚରକୁ ଅକ୍ଷମ କରିଦିଆଯିବ, ଯାହା ଫଳରେ କିଛି ଆପ୍ଲିକେସନ କାମ କରିନପାରେ। ପ୍ରଡକ୍ସନ ମୋଡରେ ପୁଣି-ପ୍ରବେଶ କରିବା ପାଇଁ ଆପଣଙ୍କୁ 4K ମୋଡକୁ ପୁଣି ସୁଇଚ କରି ତା\'ପରେ ଡିଭାଇସର ବୁଟଲୋଡରକୁ ଲକ କରିବା ଆବଶ୍ୟକ। ଅଧିକ ପଢ଼ନ୍ତୁରେ ଟାପ କରନ୍ତୁ।"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"ଆପଣ ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡର 16KB ମୋଡରେ ଅଛନ୍ତି। ଏହି ମୋଡରେ ସଫ୍ଟୱେର ଇଣ୍ଟିଗ୍ରିଟିକୁ ଗେରେଣ୍ଟି ଦିଆଯାଇପାରିବ ନାହିଁ ଏବଂ ବୁଟଲୋଡର ଅନଲକ ଥିବା ସମୟରେ ଫୋନରେ ଷ୍ଟୋର କରାଯାଇଥିବା ଯେ କୌଣସି ଡାଟା ବିପଦରେ ପଡ଼ିପାରେ। ଏହି ମୋଡଗୁଡ଼ିକରେ କିଛି ଫିଚରକୁ ଅକ୍ଷମ କରିଦିଆଯିବ, ଯାହା ଫଳରେ କିଛି ଆପ୍ଲିକେସନ କାମ କରିନପାରେ। ପ୍ରଡକ୍ସନ ମୋଡରେ ପୁଣି-ପ୍ରବେଶ କରିବା ପାଇଁ ଆପଣଙ୍କୁ 4K ମୋଡକୁ ପୁଣି ସୁଇଚ କରି ତା\'ପରେ ଡିଭାଇସର ବୁଟଲୋଡରକୁ ଲକ କରିବା ଆବଶ୍ୟକ। ଏହା ଡିଭାଇସକୁ ପୁଣି ଫେକ୍ଟୋରୀ ରିସେଟ କରି ପ୍ରଡକ୍ସନ ସେଟିଂସରେ ରିଷ୍ଟୋର କରିବ। Androidରେ ସଫଳତାର ସହ ଡିଭାଇସ ବୁଟ ହେବା ପରେ ଡେଭେଲପର ବିକଳ୍ପରେ OEM ଅନଲକିଂକୁ ଅକ୍ଷମ କରନ୍ତୁ। ଯଦି ଡିଭାଇସ Androidରେ ବୁଟ ହେବାରେ ବିଫଳ ହୁଏ କିମ୍ବା ଅସ୍ଥିର ଅଟେ, ତେବେ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>ରୁ ନବୀନତମ ଫେକ୍ଟୋରୀ ଇମେଜଗୁଡ଼ିକ ସହ ଡିଭାଇସକୁ ପୁଣି-ଫ୍ଲାସ କରନ୍ତୁ କିମ୍ବା <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ \'ଡିଭାଇସକୁ ୱାଇପ କରନ୍ତୁ\', \'ବୁଟଲୋଡରକୁ ଲକ କରନ୍ତୁ\' ଏବଂ \'ସବୁ ପାର୍ଟିସନକୁ ଫୋର୍ସ ଫ୍ଲାସ କରନ୍ତୁ\'କୁ ଚୟନ କରନ୍ତୁ।"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB ପୃଷ୍ଠା-ଆଗ୍ନୋଷ୍ଟିକ ମୋଡ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ଅଧିକ ପଢ଼ନ୍ତୁ"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ବଗ ରିପୋର୍ଟ ହେଣ୍ଡଲର"</string>
@@ -5010,14 +5074,15 @@
<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="6686858308083037810">"ଏକାଧିକ ୟୁଜରଙ୍କୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
<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="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"ଆଡେପ୍ଟିଭ୍ ଉଜ୍ଜ୍ୱଳତା ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"ଆଡେପ୍ଟିଭ ଉଜ୍ଜ୍ୱଳତା ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"ୱାଇ-ଫାଇ କଲିଂ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="default_see_all_apps_title" msgid="7481113230662612178">"ସମସ୍ତ ଆପ ଦେଖନ୍ତୁ"</string>
<string name="smart_forwarding_title" msgid="8368634861971949799">"ସ୍ମାର୍ଟ ଫରୱାର୍ଡିଂ"</string>
@@ -5354,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-pa/arrays.xml b/res/values-pa/arrays.xml
index 679294d..11980c6 100644
--- a/res/values-pa/arrays.xml
+++ b/res/values-pa/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"ਬੈੱਡਟਾਈਮ"</item>
+ <item msgid="4152450357280759894">"ਡਰਾਈਵਿੰਗ"</item>
+ <item msgid="7096549258219399423">"ਇਮਰਸਿਵ"</item>
+ <item msgid="2760716776980432977">"ਪ੍ਰਬੰਧਿਤ"</item>
+ <item msgid="601734478369121764">"ਤਾਰਾ"</item>
+ <item msgid="6243809315432780521">"ਕੈਲੰਡਰ"</item>
+ <item msgid="4913577903148415331">"ਸਮਾਂ"</item>
+ <item msgid="3653377604690057780">"ਥੀਏਟਰ"</item>
+ <item msgid="3843711267408385410">"ਫੁੱਲ"</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 61a3dbe..0b3275a 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ਸੁਣਨ ਵਾਲੇ ਡੀਵਾਈਸ ਸੰਬੰਧੀ ਸੈਟਿੰਗਾਂ"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ਸ਼ਾਰਟਕੱਟ, ਸੁਣਨ ਦੇ ਸਾਧਨ ਦੀ ਅਨੁਰੂਪਤਾ"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ਪ੍ਰੀਸੈੱਟ"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ਤੁਹਾਡੇ ਆਡੀਓਲਾਜਿਸਟ ਵੱਲੋਂ ਪ੍ਰੋਗਰਾਮ ਕੀਤਾ ਕੋਈ ਪ੍ਰੀਸੈੱਟ ਨਹੀਂ ਹੈ"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ਪ੍ਰੀਸੈੱਟ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ਆਡੀਓ ਆਊਟਪੁੱਟ"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ਆਡੀਓ ਆਊਟਪੁੱਟ ਬਾਰੇ"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ਵਾਚ ਅਣਲਾਕ ਬਾਰੇ ਹੋਰ ਜਾਣੋ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ਘੜੀ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ਘੜੀ ਨੂੰ ਹਟਾਓ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਤੇ ਫ਼ੇਸ ਅਣਲਾਕ"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ਫ਼ੇਸ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਲਈ ਫ਼ੇਸ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ਸੈੱਟਅੱਪ ਦੀ ਲੋੜ ਹੈ"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ਚਿਹਰੇ ਅਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"ਕੀ ਡੀਵਾਈਸ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨਾ ਹੈ?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"ਵੇਰਵੇ ਵਾਲੀ NFC ਲੌਗਿੰਗ ਨੂੰ ਸਿਰਫ਼ ਵਿਕਾਸ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ। ਬੱਗ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਵਧੀਕ NFC ਡਾਟਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਪ੍ਰਾਈਵੇਟ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੋ ਸਕਦੀ ਹੈ। ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਬਦਲਣ ਲਈ ਆਪਣਾ ਡੀਵਾਈਸ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ।"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ਕਾਸਟ ਕਰੋ"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ਸ਼ੀਸ਼ਾ"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"ਵਾਇਰਲੈਸ ਡਿਸਪਲੇ ਚਾਲੂ ਕਰੋ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ਅਡੈਪਟਿਵ"</string>
<string name="brightness" msgid="6216871641021779698">"ਚਮਕ ਦਾ ਪੱਧਰ"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"ਅਡੈਪਟਿਵ ਬ੍ਰਾਈਟਨੈੱਸ"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"ਅਡੈਪਟਿਵ ਬ੍ਰਾਈਟਨੈੱਸ ਬਾਰੇ"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ ਦੀ ਚਮਕ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਵਾਤਾਵਰਨ ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਕੀਤੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਸਰਗਰਮੀਆਂ ਦੇ ਮੁਤਾਬਕ ਵੱਧ-ਘੱਟ ਹੋਵੇਗੀ। ਅਡੈਪਟਿਵ ਬ੍ਰਾਈਟਨੈੱਸ ਨੂੰ ਤੁਹਾਡੀਆਂ ਤਰਜੀਹਾਂ ਬਾਰੇ ਸਿੱਖਣ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਤੁਸੀਂ ਸਲਾਈਡਰ ਨੂੰ ਹੱਥੀਂ ਹਿਲਾ ਸਕਦੇ ਹੋ।"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ਚਾਲੂ"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ਬੰਦ"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ਫਿਰ ਵੀ ਜਾਰੀ ਰੱਖੋ"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ਰੱਦ ਕਰੋ"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"ਵੱਡਦਰਸ਼ੀਕਰਨ ਸੈਟਿੰਗਾਂ"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ਇੱਕ ਉਂਗਲ ਨਾਲ ਪੈਨਿੰਗ"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ਇੱਕ ਉਂਗਲ ਨਾਲ ਘਸੀਟ ਕੇ ਵੱਡਦਰਸ਼ੀਕਰਨ ਖੇਤਰ ਨੂੰ ਹਿਲਾਓ।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ਦੋ ਉਂਗਲਾਂ ਨਾਲ ਘਸੀਟ ਕੇ ਵੱਡਦਰਸ਼ੀਕਰਨ ਖੇਤਰ ਨੂੰ ਹਿਲਾਓ।"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"ਸਿਰਫ਼ ਸਕ੍ਰੀਨ ਦਾ ਇੱਕ ਹਿੱਸਾ ਵੱਡਦਰਸ਼ੀਕਰਨ ਦੌਰਾਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"ਜ਼ੂਮ ਕਰਨ ਲਈ ਬਟਨ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ਸਮੱਗਰੀ ਨੂੰ ਵੱਡਾ ਕਰਨ ਲਈ ਸਕ੍ਰੀਨ \'ਤੇ ਤੇਜ਼ੀ ਨਾਲ ਜ਼ੂਮ ਵਧਾਓ"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>ਜ਼ੂਮ ਵਧਾਉਣ ਲਈ:</b><br/> {0,number,integer}. ਵੱਡਦਰਸ਼ੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਵਰਤੋ<br/> {1,number,integer}. ਸਕ੍ਰੀਨ \'ਤੇ ਟੈਪ ਕਰੋ<br/> {2,number,integer}. ਸਕ੍ਰੀਨ \'ਤੇ ਇੱਧਰ-ਉੱਧਰ ਜਾਣ ਲਈ 2 ਉਂਗਲੀਆਂ ਨਾਲ ਘਸੀਟੋ<br/> {3,number,integer}. ਜ਼ੂਮ ਵਿੱਚ ਵਾਧ-ਘਾਟ ਕਰਨ ਲਈ 2 ਉਂਗਲੀਆਂ ਨਾਲ ਚੂੰਢੀ ਭਰੋ<br/> {4,number,integer}. ਵੱਡਦਰਸ਼ੀਕਰਨ ਨੂੰ ਰੋਕਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਵਰਤੋ<br/><br/> <b>ਕੁਝ ਸਮੇਂ ਲਈ ਜ਼ੂਮ ਵਧਾਉਣ ਲਈ:</b><br/> {0,number,integer}. ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਹਾਡੀ ਵੱਡਦਰਸ਼ੀਕਰਨ ਕਿਸਮ ਪੂਰੀ ਸਕ੍ਰੀਨ \'ਤੇ ਸੈੱਟ ਹੈ<br/> {1,number,integer}. ਵੱਡਦਰਸ਼ੀਕਰਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਵਰਤੋ<br/> {2,number,integer}. ਸਕ੍ਰੀਨ \'ਤੇ ਕਿਤੇ ਵੀ ਸਪਰਸ਼ ਕਰ ਕੇ ਰੱਖੋ<br/> {3,number,integer}. ਸਕ੍ਰੀਨ \'ਤੇ ਇੱਧਰ-ਉੱਧਰ ਜਾਣ ਲਈ ਉਂਗਲ ਨਾਲ ਘਸੀਟੋ<br/> {4,number,integer}. ਵੱਡਦਰਸ਼ੀਕਰਨ ਨੂੰ ਰੋਕਣ ਲਈ ਉਂਗਲ ਚੁੱਕੋ"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"ਜਦੋਂ ਵੱਡਦਰਸ਼ੀਕਰਨ ਚਾਲੂ ਹੋਵੇ, ਤੁਸੀਂ ਸਕ੍ਰੀਨ \'ਤੇ ਜ਼ੂਮ ਵਧਾ ਸਕਦੇ ਹੋ।\n\n"<b>"ਜ਼ੂਮ ਕਰਨ ਲਈ"</b>", ਵੱਡਦਰਸ਼ੀਕਰਨ ਸ਼ੁਰੂ ਕਰੋ, ਫਿਰ ਸਕ੍ਰੀਨ \'ਤੇ ਕਿਤੇ ਵੀ ਟੈਪ ਕਰੋ।\n"<ul><li>"ਸਕ੍ਰੋਲ ਕਰਨ ਲਈ 2 ਜਾਂ ਜ਼ਿਆਦਾ ਉਂਗਲਾਂ ਘਸੀਟੋ"</li>\n<li>" ਜ਼ੂਮ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨ ਲਈ 2 ਜਾਂ ਜ਼ਿਆਦਾ ਉਂਗਲਾਂ ਨਾਲ ਚੂੰਢੀ ਭਰੋ"</li></ul>\n\n<b>"ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਜ਼ੂਮ ਕਰਨ ਲਈ"</b>", ਵੱਡਦਰਸ਼ੀਕਰਨ ਸ਼ੁਰੂ ਕਰੋ, ਫਿਰ ਸਕ੍ਰੀਨ \'ਤੇ ਕੀਤੇ ਵੀ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।\n"<ul><li>"ਸਕ੍ਰੀਨ \'ਤੇ ਆਲੇ-ਦੁਆਲੇ ਜਾਣ ਲਈ ਘਸੀਟੋ"</li>\n<li>"ਜ਼ੂਮ ਘਟਾਉਣ ਲਈ ਉਂਗਲ ਚੁੱਕੋ"</li></ul>\n\n"ਤੁਸੀਂ ਕੀ-ਬੋਰਡ ਜਾਂ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ ਪੱਟੀ \'ਤੇ ਜ਼ੂਮ ਵਧਾ ਨਹੀਂ ਸਕਦੇ।"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> ਵਿੱਚੋਂ ਪੰਨਾ <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਦਾ ਸ਼ਾਰਟਕੱਟ"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"ਤਰਜੀਹ ਮੋਡ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ਸਿਰਫ਼ ਮਹੱਤਵਪੂਰਨ ਲੋਕਾਂ ਅਤੇ ਐਪਾਂ ਵੱਲੋਂ ਸੂਚਨਾ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"ਕਿਰਿਆਸ਼ੀਲਤਾ ਦੀ ਕਿਸਮ ਚੁਣੋ"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"ਸਮਾਂ"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ਉਦਾਹਰਨ ਲਈ \"ਸਵੇਰੇ 9:30 ਤੋਂ ਸ਼ਾਮ 5:00 ਵਜੇ ਤੱਕ\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ਕੈਲੰਡਰ"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ਉਦਾਹਰਨ ਲਈ \"ਨਿੱਜੀ ਕੈਲੰਡਰ\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"ਰੁਕਾਵਟਾਂ ਸੀਮਤ ਕਰੋ"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"ਸਮਾਂ-ਸੂਚੀਆਂ ਮਿਟਾਓ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ਮਿਟਾਓ"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"ਕੋਈ ਕੈਲੰਡਰ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ਆਪਣਾ ਕੈਲੰਡਰ ਵਰਤੋ"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"ਸਮਾਂ-ਸੂਚੀ"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ਕੋਈ ਸਮਾਂ-ਸੂਚੀ ਸੈੱਟ ਕਰੋ"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"ਸਮਾਂ-ਸੂਚੀ"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ਕੁਝ ਖਾਸ ਸਮਿਆਂ \'ਤੇ ਫ਼ੋਨ ਸ਼ਾਂਤ ਰੱਖੋ"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ਧੁਨੀ ਵਜਾਉਣ ਵਾਲੀਆਂ ਰੁਕਾਵਟਾਂ ਨੂੰ ਆਗਿਆ ਦਿਓ"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਗੜਬੜੀਆਂ ਬਲਾਕ ਕਰੋ"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਸਿਗਨਲ ਦਿਖਣ ਦਿਓ"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"ਉਹ ਸੂਚਨਾਵਾਂ ਜੋ ਤੁਹਾਡੇ ਤੱਕ ਪਹੁੰਚ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ਧਿਆਨ ਕੇਂਦਰਿਤ ਰੱਖੋ"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"ਵਧੀਕ ਕਾਰਵਾਈਆਂ"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ਡਿਸਪਲੇ ਸੈਟਿੰਗਾਂ"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ਡਿਸਪਲੇ ਦੇ ਵਿਕਲਪ"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"ਗੂੜ੍ਹੇ ਬੈਕਗ੍ਰਾਊਂਡ \'ਤੇ ਹਲਕੀ ਲਿਖਤ ਨੂੰ ਤਰਜੀਹ ਦੇਣ ਲਈ OS ਅਤੇ ਐਪਾਂ ਨੂੰ ਸਵਿੱਚ ਕਰੋ, ਜਿਸਨੂੰ ਦੇਖਣ ਨਾਲ ਅੱਖਾਂ \'ਤੇ ਕੋਈ ਅਸਰ ਨਾ ਪਵੇ ਅਤੇ ਜਿਸ ਨਾਲ ਕੁਝ ਡੀਵਾਈਸਾਂ \'ਤੇ ਬੈਟਰੀ ਦੀ ਕਾਫ਼ੀ ਬਚਤ ਹੁੰਦੀ ਹੈ"</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="mode_notification_filter_title" msgid="443728483176031977">"ਰੁਕਾਵਟਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰੋ"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"ਕਿਸੇ ਰੁਕਾਵਟ ਨੂੰ ਫਿਲਟਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ਅਣਵਰਤੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਦਿਖਾਓ"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ਅਣਵਰਤੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਲੁਕਾਓ"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"ਸਭ"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} ਤੱਕ ਸਿਰਫ਼ ਇੱਕ ਘੰਟੇ ਲਈ ਅਲਾਰਮਾਂ ਵਿੱਚ ਬਦਲੋ}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"ਨਾਮ ਬਦਲੋ"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ਪ੍ਰਤੀਕ ਬਦਲੋ"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ਪ੍ਰਤੀਕ ਬਦਲੋ"</string>
<string name="warning_button_text" msgid="1274234338874005639">"ਚਿਤਾਵਨੀ"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"ਬੰਦ ਕਰੋ"</string>
<string name="device_feedback" msgid="5351614458411688608">"ਇਸ ਡੀਵਾਈਸ ਬਾਰੇ ਵਿਚਾਰ ਭੇਜੋ"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ, ਇਸ ਡੀਵਾਈਸ ਦੇ ਡਾਟੇ ਦੇ ਹਿੱਸੇ ਨੂੰ ext4 ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲਣ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਮੋਡ ਵਿੱਚ ਸਾਫ਼ਟਵੇਅਰ ਅਖੰਡਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਅਤੇ ਬੂਟਲੋਡਰ ਦੇ ਅਣਲਾਕ ਰਹਿਣ ਦੌਰਾਨ ਫ਼ੋਨ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਖਤਰੇ ਵਿੱਚ ਰਹਿ ਸਕਦਾ ਹੈ। ਇਸ ਤੋਂ ਬਾਅਦ, 16KB ਵਿਕਲਪ ਦੀ ਕਿਰਿਆਸ਼ੀਲਤਾ ਲਈ ਇੱਕ ਵਾਰ ਹੋਰ ਰੀਬੂਟ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ। ਇਸ ਮੋਡ ਵਿੱਚ ਆਉਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਡੀਵਾਈਸ ਨੂੰ ਇੱਕ ਵਾਰ ਰੀਬੂਟ ਕਰ ਕੇ 4KB ਅਤੇ 16KB ਮੋਡ ਵਿਚਕਾਰ ਸਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ। ਇਨ੍ਹਾਂ ਮੋਡਾਂ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬੰਦ ਹੋ ਜਾਣਗੀਆਂ, ਇਸ ਲਈ ਸ਼ਾਇਦ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੰਮ ਨਾ ਕਰਨ। ਡੀਵਾਈਸ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ \'ਤੇ ਵਾਪਸ ਲਿਜਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ 4KB ਮੋਡ \'ਤੇ ਵਾਪਸ ਸਵਿੱਚ ਕਰ ਕੇ ਬੂਟਲੋਡਰ ਨੂੰ ਲਾਕ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ, ਜਿਸ ਨਾਲ ਡੀਵਾਈਸ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਹੋ ਜਾਵੇਗਾ। ਡੀਵਾਈਸ ਦੇ Android ਵਿੱਚ ਸਫਲਤਾਪੂਰਵਕ ਬੂਟ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਵਿੱਚ OEM ਅਣਲਾਕ ਨੂੰ ਬੰਦ ਕਰੋ। ਡੀਵਾਈਸ ਸਾਫ਼ ਹੋ ਜਾਵੇਗਾ ਅਤੇ ਤਸਦੀਕ ਤੋਂ ਬਾਅਦ ਫ਼ਾਈਲਸਿਸਟਮ ext4 ਦੇ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲ ਜਾਵੇਗਾ। ਇਸਦੇ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਕਿਰਪਾ ਕਰਕੇ 16KB ਮੋਡ ਨੂੰ ਦੁਬਾਰਾ ਚਾਲੂ ਕਰਨ ਲਈ ਵਾਪਸ ਆਓ।"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ਸਾਰਾ ਡਾਟਾ ਮਿਟਾਓ"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ਡਾਟੇ ਦੇ ਹਿੱਸੇ ਨੂੰ ext4 ਵਿੱਚ ਮੁੜ-ਫਾਰਮੈਟ ਕਰਨਾ ਅਤੇ ਸਾਫ਼ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB ਮੋਡ ਲਈ ਬੂਟਲੋਡਰ ਨੂੰ ਅਣਲਾਕ ਕਰਨਾ ਲੋੜੀਂਦਾ ਹੈ"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16KB ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ, ਇਸ ਡੀਵਾਈਸ ਲਈ ਬੂਟਲੋਡਰ ਅਣਲਾਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਮੋਡ ਵਿੱਚ ਸਾਫ਼ਟਵੇਅਰ ਅਖੰਡਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਅਤੇ ਬੂਟਲੋਡਰ ਦੇ ਅਣਲਾਕ ਰਹਿਣ ਦੌਰਾਨ ਫ਼ੋਨ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਖਤਰੇ ਵਿੱਚ ਰਹਿ ਸਕਦਾ ਹੈ। 16KB ਮੋਡ ਦੇ ਕਿਰਿਆਸ਼ੀਲ ਹੋਣ \'ਤੇ, ਸਾਰਾ ਵਰਤੋਂਕਾਰ ਡਾਟਾ ਅਤੇ ਸੈਟਿੰਗਾਂ ਸਾਫ਼ ਹੋ ਜਾਣਗੀਆਂ। ਬੂਟਲੋਡਰ ਅਣਲਾਕ ਹੋਣ ਤੋਂ ਬਾਅਦ, 16KB ਵਿਕਲਪ ਦੀ ਕਿਰਿਆਸ਼ੀਲਤਾ ਲਈ ਡੀਵਾਈਸ ਨੂੰ ਦੋ ਵਾਰ ਰੀਬੂਟ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ। ਇਸ ਮੋਡ ਵਿੱਚ ਆਉਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਡੀਵਾਈਸ ਨੂੰ ਇੱਕ ਵਾਰ ਰੀਬੂਟ ਕਰ ਕੇ 4KB ਅਤੇ 16KB ਮੋਡ ਵਿਚਕਾਰ ਸਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ। ਇਨ੍ਹਾਂ ਮੋਡਾਂ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬੰਦ ਹੋ ਜਾਣਗੀਆਂ, ਇਸ ਲਈ ਸ਼ਾਇਦ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੰਮ ਨਾ ਕਰਨ। ਡੀਵਾਈਸ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ \'ਤੇ ਵਾਪਸ ਲਿਜਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ 4KB ਮੋਡ \'ਤੇ ਵਾਪਸ ਸਵਿੱਚ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ ਅਤੇ ਫਿਰ OEM/ਬੂਟਲੋਡਰ ਡੀਵਾਈਸ ਨੂੰ ਲਾਕ ਕਰੇਗਾ (ਜਿਸ ਨਾਲ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਹੋ ਜਾਵੇਗਾ)। ਕਿਰਪਾ ਕਰਕੇ ਬੂਟਲੋਡਰ ਨੂੰ ਅਣਲਾਕ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਤੁਸੀਂ <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> \'ਤੇ ਜਾ ਕੇ ਇਸਨੂੰ ਕਰਨ ਦੇ ਤਰੀਕੇ ਸੰਬੰਧੀ ਹਿਦਾਇਤਾਂ ਦੇਖ ਸਕਦੇ ਹੋ"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"ਤੁਸੀਂ ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ ਦੇ 4KB ਮੋਡ ਵਿੱਚ ਹੋ। ਇਸ ਮੋਡ ਵਿੱਚ ਸਾਫ਼ਟਵੇਅਰ ਅਖੰਡਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਅਤੇ ਬੂਟਲੋਡਰ ਦੇ ਅਣਲਾਕ ਰਹਿਣ ਦੌਰਾਨ ਫ਼ੋਨ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਖਤਰੇ ਵਿੱਚ ਰਹਿ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਮੋਡਾਂ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬੰਦ ਹੋ ਜਾਣਗੀਆਂ, ਇਸ ਲਈ ਸ਼ਾਇਦ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੰਮ ਨਾ ਕਰਨ। ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ ਵਿੱਚ ਮੁੜ-ਦਾਖਲ ਹੋਣ ਲਈ, ਡੀਵਾਈਸ ਦੇ ਬੂਟਲੋਡਰ ਨੂੰ ਲਾਕ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਹੋਰ ਪੜ੍ਹਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"ਤੁਸੀਂ ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ ਦੇ 4KB ਮੋਡ ਵਿੱਚ ਹੋ। ਇਸ ਮੋਡ ਵਿੱਚ ਸਾਫ਼ਟਵੇਅਰ ਅਖੰਡਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਅਤੇ ਬੂਟਲੋਡਰ ਦੇ ਅਣਲਾਕ ਰਹਿਣ ਦੌਰਾਨ ਫ਼ੋਨ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਖਤਰੇ ਵਿੱਚ ਰਹਿ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਮੋਡਾਂ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬੰਦ ਹੋ ਜਾਣਗੀਆਂ, ਇਸ ਲਈ ਸ਼ਾਇਦ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੰਮ ਨਾ ਕਰਨ। ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ ਵਿੱਚ ਮੁੜ-ਦਾਖਲ ਹੋਣ ਲਈ, ਡੀਵਾਈਸ ਦੇ ਬੂਟਲੋਡਰ ਨੂੰ ਲਾਕ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਇਸ ਨਾਲ ਡੀਵਾਈਸ ਦੁਬਾਰਾ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਹੋ ਕੇ ਪ੍ਰੋਡਕਸ਼ਨ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਮੁੜ-ਬਹਾਲ ਹੋ ਜਾਵੇਗਾ। ਡੀਵਾਈਸ ਦੇ Android ਵਿੱਚ ਸਫਲਤਾਪੂਰਵਕ ਬੂਟ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਵਿੱਚ OEM ਅਣਲਾਕ ਨੂੰ ਬੰਦ ਕਰੋ। ਜੇ ਡੀਵਾਈਸ Android ਵਿੱਚ ਬੂਟ ਹੋਣ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ ਜਾਂ ਅਸਥਿਰ ਹੈ, ਤਾਂ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ਤੋਂ ਨਵੀਆਂ ਫੈਕਟਰੀ ਇਮੇਜਾਂ ਨਾਲ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਫਲੈਸ਼ ਕਰੋ ਜਾਂ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ਵਰਤੋ ਅਤੇ \'ਡੀਵਾਈਸ ਸਾਫ਼ ਕਰੋ\', \'ਬੂਟਲੋਡਰ ਲਾਕ ਕਰੋ\' ਅਤੇ \'ਸਾਰੇ ਹਿੱਸਿਆਂ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਫਲੈਸ਼ ਕਰੋ\' ਨੂੰ ਚੁਣੋ।"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"ਤੁਸੀਂ ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ ਦੇ 16KB ਮੋਡ ਵਿੱਚ ਹੋ। ਇਸ ਮੋਡ ਵਿੱਚ ਸਾਫ਼ਟਵੇਅਰ ਅਖੰਡਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਅਤੇ ਬੂਟਲੋਡਰ ਦੇ ਅਣਲਾਕ ਰਹਿਣ ਦੌਰਾਨ ਫ਼ੋਨ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਖਤਰੇ ਵਿੱਚ ਰਹਿ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਮੋਡਾਂ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬੰਦ ਹੋ ਜਾਣਗੀਆਂ, ਇਸ ਲਈ ਸ਼ਾਇਦ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੰਮ ਨਾ ਕਰਨ। ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ ਵਿੱਚ ਮੁੜ-ਦਾਖਲ ਹੋਣ ਲਈ, 4K ਮੋਡ \'ਤੇ ਵਾਪਸ ਸਵਿੱਚ ਕਰ ਕੇ ਡੀਵਾਈਸ ਦੇ ਬੂਟਲੋਡਰ ਨੂੰ ਲਾਕ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਹੋਰ ਪੜ੍ਹਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"ਤੁਸੀਂ ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ ਦੇ 16KB ਮੋਡ ਵਿੱਚ ਹੋ। ਇਸ ਮੋਡ ਵਿੱਚ ਸਾਫ਼ਟਵੇਅਰ ਅਖੰਡਤਾ ਦੀ ਗਰੰਟੀ ਨਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਅਤੇ ਬੂਟਲੋਡਰ ਦੇ ਅਣਲਾਕ ਰਹਿਣ ਦੌਰਾਨ ਫ਼ੋਨ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਡਾਟਾ ਖਤਰੇ ਵਿੱਚ ਰਹਿ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਮੋਡਾਂ ਵਿੱਚ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬੰਦ ਹੋ ਜਾਣਗੀਆਂ, ਇਸ ਲਈ ਸ਼ਾਇਦ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੰਮ ਨਾ ਕਰਨ। ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ ਵਿੱਚ ਮੁੜ-ਦਾਖਲ ਹੋਣ ਲਈ, 4K ਮੋਡ \'ਤੇ ਵਾਪਸ ਸਵਿੱਚ ਕਰ ਕੇ ਡੀਵਾਈਸ ਦੇ ਬੂਟਲੋਡਰ ਨੂੰ ਲਾਕ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਇਸ ਨਾਲ ਡੀਵਾਈਸ ਦੁਬਾਰਾ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਹੋ ਕੇ ਪ੍ਰੋਡਕਸ਼ਨ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਮੁੜ-ਬਹਾਲ ਹੋ ਜਾਵੇਗਾ। ਡੀਵਾਈਸ ਦੇ Android ਵਿੱਚ ਸਫਲਤਾਪੂਰਵਕ ਬੂਟ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਵਿੱਚ OEM ਅਣਲਾਕ ਨੂੰ ਬੰਦ ਕਰੋ। ਜੇ ਡੀਵਾਈਸ Android ਵਿੱਚ ਬੂਟ ਹੋਣ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ ਜਾਂ ਅਸਥਿਰ ਹੈ, ਤਾਂ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ਤੋਂ ਨਵੀਆਂ ਫੈਕਟਰੀ ਇਮੇਜਾਂ ਨਾਲ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਫਲੈਸ਼ ਕਰੋ ਜਾਂ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ਵਰਤੋ ਅਤੇ \'ਡੀਵਾਈਸ ਸਾਫ਼ ਕਰੋ\', \'ਬੂਟਲੋਡਰ ਲਾਕ ਕਰੋ\' ਅਤੇ \'ਸਾਰੇ ਹਿੱਸਿਆਂ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਫਲੈਸ਼ ਕਰੋ\' ਨੂੰ ਚੁਣੋ।"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB ਪੇਜ-ਐਗਨੌਸਟਿਕ ਮੋਡ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"ਹੋਰ ਪੜ੍ਹੋ"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"ਬੱਗ ਰਿਪੋਰਟ ਹੈਂਡਲਰ"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"ਇੱਕ ਤੋਂ ਵੱਧ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਆਗਿਆ ਦਿਓ"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 48e7178..3f7b66a 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Pora snu"</item>
+ <item msgid="4152450357280759894">"Prowadzenie samochodu"</item>
+ <item msgid="7096549258219399423">"Wciągająca rozgrywka"</item>
+ <item msgid="2760716776980432977">"Zarządzane"</item>
+ <item msgid="601734478369121764">"Gwiazdka"</item>
+ <item msgid="6243809315432780521">"Kalendarz"</item>
+ <item msgid="4913577903148415331">"Godzina"</item>
+ <item msgid="3653377604690057780">"Teatr"</item>
+ <item msgid="3843711267408385410">"Kwiat"</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 4ff356e..9719ce2 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Ustawienia urządzenia słuchowego"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Skrót, zgodność z aparatem słuchowym"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Gotowe ustawienia"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Twój audiolog nie zaprogramował żadnych gotowych ustawień"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Nie udało się zaktualizować gotowego ustawienia"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Wyjście audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"O wyjściu audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Więcej informacji o odblokowywaniu za pomocą zegarka"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Dodaj zegarek"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Usuń zegarek"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Odblokowywanie odciskiem palca i rozpoznawanie twarzy"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Rozpoznawanie twarzy i odblokowywanie odciskiem palca"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Rozpoznawanie twarzy i odcisku palca w profilu służbowym"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Wymagana konfiguracja"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Dodano skany twarzy i odciski palca"</string>
@@ -562,7 +563,7 @@
<string name="private_space_fingerprint_enroll_introduction_message" msgid="9092068873421435300">"Używaj odcisku palca do odblokowywania przestrzeni prywatnej lub potwierdzania tożsamości, np. podczas logowania się w aplikacjach lub zatwierdzania zakupów"</string>
<string name="private_space_fingerprint_enroll_introduction_footer_message" msgid="7125255484447984854">"Twoja przestrzeń prywatna może się przypadkowo odblokować, np. gdy ktoś przyłoży Twój palec do telefonu."</string>
<string name="private_space_fingerprint_enroll_finish_message" msgid="4754797926493316965">"Używaj odcisku palca do odblokowywania przestrzeni prywatnej lub zatwierdzania zakupów"</string>
- <string name="private_space_face_enroll_introduction_title" msgid="3717541082520006032">"Skonfiguruj rozpoznawanie twarzy do odblokowywania przestrzeni prywatnej"</string>
+ <string name="private_space_face_enroll_introduction_title" msgid="3717541082520006032">"Ustaw odblokowywanie przestrzeni prywatnej rozpoznawaniem twarzy"</string>
<string name="private_space_face_enroll_introduction_message" msgid="250239418499081821">"Używaj rozpoznawania twarzy do odblokowywania przestrzeni prywatnej lub potwierdzania tożsamości, np. podczas logowania się w aplikacjach lub zatwierdzania zakupów"</string>
<string name="private_space_face_enroll_introduction_info_looking" msgid="5694757845303924042">"Patrząc na telefon, możesz niechcący odblokować przestrzeń prywatną. Może ją odblokować także ktoś, kto wygląda bardzo podobnie do Ciebie (np. bliźniacze rodzeństwo) lub zbliży urządzenie do Twojej twarzy."</string>
<string name="private_space_face_enroll_introduction_info_less_secure" msgid="8460719783943533172">"Korzystanie z rozpoznawania twarzy do odblokowywania przestrzeni prywatnej może być mniej bezpieczne niż skomplikowany wzór, hasło czy kod PIN"</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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 (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 (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_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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Uruchomić urządzenie ponownie?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Szczegółowe logowanie NFC jest przeznaczone tylko dla programistów. Dodatkowe dane NFC są dołączane do raportów o błędach i mogą zawierać informacje prywatne. Uruchom urządzenie ponownie, aby zmienić to ustawienie."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Uruchom ponownie"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Przesyłanie ekranu"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"odbicie lustrzane"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Wyświetlacz bezprzewodowy"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptacyjne"</string>
<string name="brightness" msgid="6216871641021779698">"Poziom jasności"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Automatyczna jasność"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Informacje o automatycznej jasności"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Jasność ekranu będzie automatycznie dostosowywana do otoczenia i Twojej aktywności. Możesz ręcznie przesunąć suwak, by pomóc automatycznej jasności poznać Twoje preferencje."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Włączona"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Wył."</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Wybrany przez użytkownika: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Mowa"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Szybkość wskaźnika"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Kontroler gier"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Przekierowuj wibracje"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Po podłączeniu kontrolera gier przekieruj do niego wibracje"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Kontynuuj mimo to"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Anuluj"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Ustawienia powiększenia"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Przesuwanie jednym palcem"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Przesuń lupę 1 palcem"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Aby przesunąć ekran, przeciągnij po nim palcem."</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Przesuń obszar powiększenia, przeciągając jeden palec."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Przesuń obszar powiększenia, przeciągając dwa palce."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Niedostępne podczas powiększania tylko części ekranu"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Kliknij przycisk, by powiększyć"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Szybko powiększaj ekran, aby dokładniej widzieć zawartość wyświetlacza"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Aby powiększyć:</b><br/> {0,number,integer}. Włącz powiększenie za pomocą skrótu<br/> {1,number,integer}. Kliknij ekran<br/> {2,number,integer}. Aby przesuwać powiększony ekran, przeciągaj po nim dwoma palcami<br/> {3,number,integer}. Aby regulować powiększenie, ściągaj i rozciągaj ekran dwoma palcami<br/> {4,number,integer}. Wyłącz powiększenie za pomocą skrótu<br/><br/><b>Aby powiększyć tymczasowo:</b><br/> {0,number,integer}. Sprawdź, czy ustawiony typ powiększenia to pełny ekran<br/> {1,number,integer}. Włącz powiększenie za pomocą skrótu<br/> {2,number,integer}. Naciśnij i przytrzymaj dowolne miejsce na ekranie<br/> {3,number,integer}. Aby przesuwać powiększony ekran, przeciągaj po nim palcem<br/> {4,number,integer}. Podnieś palec, aby wyłączyć powiększenie"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Aby powiększyć:</b><br/> {0,number,integer}. Włącz powiększenie skrótem.<br/> {1,number,integer}. Kliknij ekran<br/> {2,number,integer}. Aby przesuwać powiększony ekran, przeciągaj po nim 2 palcami<br/> {3,number,integer}. Aby regulować powiększenie, ściągaj i rozciągaj ekran 2 palcami<br/> {4,number,integer}. Aby wyłączyć powiększenie, użyj skrótu<br/><br/> Możesz też między innymi powiększyć ekran tymczasowo."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Aby powiększyć:</b><br/> {0,number,integer}. Włącz powiększenie skrótem.<br/> {1,number,integer}. Kliknij ekran<br/> {2,number,integer}. Aby przesunąć ekran, przeciągnij po nim 1 lub 2 palcami.<br/> {3,number,integer}. Aby regulować powiększenie, ściągaj i rozciągaj ekran 2 palcami<br/> {4,number,integer}. Aby wyłączyć powiększenie, użyj skrótu<br/><br/> Możesz też między innymi powiększyć ekran tymczasowo."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Gdy powiększenie jest włączone, możesz powiększać fragmenty ekranu.\n\n"<b>"Aby powiekszyć"</b>", uruchom powiększenie, a następnie kliknij dowolne miejsce na ekranie.\n"<ul><li>"Przeciągnij co najmniej dwoma palcami, by przewijać."</li>\n<li>"Ściągnij do siebie co najmniej dwa palce, by dostosować powiększenie."</li></ul>\n\n<b>"Aby powiększyć tymczasowo"</b>", uruchom powiększenie, a następnie naciśnij i przytrzymaj dowolne miejsce na ekranie.\n"<ul><li>"Przeciągaj palcem, by poruszać się po ekranie."</li>\n<li>"Unieś palec, by wyłączyć powiększenie."</li></ul>\n\n"Nie można powiększyć klawiatury ani paska nawigacji."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Strona <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> z <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Skrót do przycisku ułatwień dostępu"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Brak}=1{Ustawiono 1 harmonogram}few{Ustawiono # harmonogramy}many{Ustawiono # harmonogramów}other{Ustawiono # harmonogramu}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Nie przeszkadzać"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Tryby priorytetowe"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Otrzymuj powiadomienia tylko od ważnych osób i z kluczowych aplikacji"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Wybierz typ aktywacji"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Godzina"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Na przykład: „9:30–17:00”"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendarz"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Na przykład: „Kalendarz osobisty”"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ograniczanie powiadomień"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Włącz tryb Nie przeszkadzać"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Dźwięki alarmów i multimediów mogą ignorować tryb Nie przeszkadzać"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Harmonogramy"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Usuń harmonogramy"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Usuń"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Edytuj"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Harmonogramy"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Harmonogram"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Dodaj kalendarz"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Korzystaj z kalendarza"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Zaplanuj"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Ustaw harmonogram"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Zaplanuj"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> godz. <xliff:g id="MINUTES">%2$d</xliff:g> min"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Harmonogram"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Wycisz telefon o pewnych porach"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Zezwalaj na powiadomienia dźwiękowe"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokuj wyświetlanie"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Zezwól na sygnały wizualne"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Powiadomienia, które mogą do Ciebie docierać"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Pełne skupienie"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Dodatkowe działania"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Ustawienia wyświetlania"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opcje wyświetlania"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"włącz ciemny motyw"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Włącz preferowanie jasnego tekstu na ciemnym tle w systemie operacyjnym i aplikacjach, co mniej obciąża oczy i może zapewnić znacznie większą oszczędność energii na niektórych urządzeniach"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Brak zmian dotyczących wyświetlania}=1{{effect_1}}=2{{effect_1} i {effect_2}}=3{{effect_1}, {effect_2} i {effect_3}}few{{effect_1}, {effect_2} i # więcej}many{{effect_1}, {effect_2} i # więcej}other{{effect_1}, {effect_2} i # więcej}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtruj zakłócenia"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Żadne zakłócenia nie są filtrowane"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opcje wyświetlania filtrowanych powiadomień"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Po włączeniu trybu Nie przeszkadzać"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Brak dźwięku powiadomień"</string>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorie"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Inne"</string>
<string name="no_channels" msgid="4716199078612071915">"Ta aplikacja nie opublikowała żadnych powiadomień"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Pokaż nieużywane kategorie"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Dodatkowe ustawienia w aplikacji"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Pokaż nieużywane kategorie"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ukryj nieużywane kategorie"</string>
@@ -3774,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Wybrane aplikacje"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Brak"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Wszystkie"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Zezwól na zastępowanie przez aplikacje"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikacje, które mogą ignorować tryb Nie przeszkadzać"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Wybierz więcej aplikacji"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Zmień na alarmy tylko na 1 godzinę do {time}}few{Zmień na alarmy tylko na # godziny do {time}}many{Zmień na alarmy tylko na # godzin do {time}}other{Zmień na alarmy tylko na # godziny do {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Zmień na same alarmy do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Zmień na ciągle powiadamianie"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Zmień nazwę"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Zmień ikonę"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Zmień ikonę"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Ostrzeżenie"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Zamknij"</string>
<string name="device_feedback" msgid="5351614458411688608">"Prześlij opinię o tym urządzeniu"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Aby można było użyć trybu 16 kB w Opcjach programisty, musisz przekonwertować partycję danych na system ext4. W tym trybie nie można zagwarantować integralności oprogramowania. Kiedy program rozruchowy będzie odblokowany, dane zapisane na telefonie mogą być zagrożone. Po aktywowaniu trybu 16 kB będzie trzeba uruchomić urządzenie ponownie. Po włączeniu tego trybu przełączanie się między trybami 4 kB i 16 kB będzie wymagało tylko jednokrotnego restartu. W tych trybach niektóre funkcje będą wyłączone, a część aplikacji może nie działać. Aby przywrócić na urządzeniu tryb produkcyjny, musisz przełączyć je z powrotem na tryb 4 kB i zablokować program rozruchowy, co spowoduje zresetowanie urządzenia. Gdy na urządzeniu uruchomi się Android, wyłącz zdjęcie blokady OEM w Opcjach programisty. Z urządzenia zostaną usunięte wszystkie dane, a po potwierdzeniu system plików zmieni się na ext4. Po wykonaniu tych czynności wróć tutaj, aby ponownie włączyć tryb 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Usuń wszystkie dane"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Nie udało się wyczyścić partycji danych i sformatować jej jako ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Tryb 16 KB wymaga odblokowania programu rozruchowego"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Aby można było użyć trybu 16 KB w Opcjach programisty, musisz odblokować program rozruchowy. W tym trybie nie można zagwarantować integralności oprogramowania. Kiedy program rozruchowy będzie odblokowany, dane zapisane na telefonie mogą być zagrożone. Po włączeniu trybu 16 KB zostaną usunięte wszystkie dane i ustawienia użytkownika. Gdy program rozruchowy zostanie odblokowany, będzie trzeba dwukrotnie uruchomić ponownie urządzenia, aby włączyć tryb 16 KB. Po włączeniu tego trybu przełączanie się między trybami 4 KB i 16 KB będzie wymagało tylko jednokrotnego restartu. W tych trybach niektóre funkcje będą wyłączone, a część aplikacji może nie działać. Aby przywrócić na urządzeniu tryb produkcyjny, musisz przełączyć je z powrotem na tryb 4 KB i włączyć blokadę OEM lub zablokować program rozruchowy, co spowoduje zresetowanie urządzenia. Odblokuj program rozruchowy i spróbuj jeszcze raz. Instrukcje znajdziesz na stronie <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Włączony jest ogólny tryb strony 4 kB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Korzystasz z ogólnego trybu strony 4 kB. W tym trybie nie można zagwarantować integralności oprogramowania. Kiedy program rozruchowy będzie odblokowany, dane zapisane na telefonie mogą być zagrożone. W tych trybach niektóre funkcje będą wyłączone, a część aplikacji może nie działać. Aby wrócić do trybu produkcyjnego, musisz zablokować program rozruchowy urządzenia. Kliknij, aby dowiedzieć się więcej."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Korzystasz z ogólnego trybu strony 4 kB. W tym trybie nie można zagwarantować integralności oprogramowania. Kiedy program rozruchowy będzie odblokowany, dane zapisane na telefonie mogą być zagrożone. W tych trybach niektóre funkcje będą wyłączone, a część aplikacji może nie działać. Aby wrócić do trybu produkcyjnego, musisz zablokować program rozruchowy urządzenia. Spowoduje to ponowne zresetowanie urządzenia i przywrócenie na nim ustawień produkcyjnych. Gdy na urządzeniu uruchomi się Android, wyłącz zdjęcie blokady OEM w Opcjach programisty. Jeśli nie uda się uruchomić Androida lub będzie on działać niestabilnie, sflashuj na urządzeniu najnowszy obraz fabryczny pobrany ze strony <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> lub użyj narzędzia <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i wybierz kolejno opcje „Wyczyść pamięć urządzenia”, „Zablokuj program rozruchowy” i „Wymuś flashowanie wszystkich partycji”."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Włączony jest ogólny tryb strony 16 kB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Korzystasz z ogólnego trybu strony 16 kB. W tym trybie nie można zagwarantować integralności oprogramowania. Kiedy program rozruchowy będzie odblokowany, dane zapisane na telefonie mogą być zagrożone. W tych trybach niektóre funkcje będą wyłączone, a część aplikacji może nie działać. Aby wrócić do trybu produkcyjnego, musisz przełączyć się z powrotem na tryb 4 kB i zablokować program rozruchowy urządzenia. Kliknij, aby dowiedzieć się więcej."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Korzystasz z ogólnego trybu strony 16 kB. W tym trybie nie można zagwarantować integralności oprogramowania. Kiedy program rozruchowy będzie odblokowany, dane zapisane na telefonie mogą być zagrożone. W tych trybach niektóre funkcje będą wyłączone, a część aplikacji może nie działać. Aby wrócić do trybu produkcyjnego, musisz przełączyć się z powrotem na tryb 4 kB i zablokować program rozruchowy urządzenia. Spowoduje to ponowne zresetowanie urządzenia i przywrócenie na nim ustawień produkcyjnych. Gdy na urządzeniu uruchomi się Android, wyłącz zdjęcie blokady OEM w Opcjach programisty. Jeśli nie uda się uruchomić Androida lub będzie on działać niestabilnie, sflashuj na urządzeniu najnowszy obraz fabryczny pobrany ze strony <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> lub użyj narzędzia <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> i wybierz kolejno opcje „Wyczyść pamięć urządzenia”, „Zablokuj program rozruchowy” i „Wymuś flashowanie wszystkich partycji”."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Ogólny tryb strony 16 kB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Więcej informacji"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Obsługiwanie zgłaszania błędów"</string>
@@ -5011,7 +5071,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Używaj przypinania aplikacji"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Używaj opcji programisty"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Używaj usługi drukowania"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Zezwalaj na wielu użytkowników"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"zezwalać, wiele, użytkownik, pozwolenie, dużo"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"kilka, użytkownicy, profile, ludzie, konta, przełącznik, wiele"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Używaj debugowania bezprzewodowego"</string>
@@ -5355,4 +5416,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-pt-rBR/arrays.xml b/res/values-pt-rBR/arrays.xml
index b3bfd99..06b6904 100644
--- a/res/values-pt-rBR/arrays.xml
+++ b/res/values-pt-rBR/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Hora de dormir"</item>
+ <item msgid="4152450357280759894">"Ao dirigir"</item>
+ <item msgid="7096549258219399423">"Imersivo"</item>
+ <item msgid="2760716776980432977">"Gerenciado"</item>
+ <item msgid="601734478369121764">"Marcar com estrela"</item>
+ <item msgid="6243809315432780521">"Agenda"</item>
+ <item msgid="4913577903148415331">"Horário"</item>
+ <item msgid="3653377604690057780">"Teatro"</item>
+ <item msgid="3843711267408385410">"Flor"</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 e34936d..3675a2d 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Configurações do aparelho auditivo"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Atalho, compatibilidade com aparelhos auditivos"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Predefinição"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Não há predefinições programadas pelo seu audiologista"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Não foi possível atualizar a predefinição"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Saída de áudio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Sobre a saída de áudio"</string>
@@ -137,7 +138,7 @@
<string name="stylus_device_details_title" msgid="7618295136015480864">"Stylus"</string>
<string name="stylus_default_notes_app" msgid="4165657465911764628">"Pressionar o botão da stylus"</string>
<string name="stylus_default_notes_summary_work" msgid="4554643411627934223">"<xliff:g id="APP_NAME">%s</xliff:g> (perfil de trabalho)"</string>
- <string name="stylus_textfield_handwriting" msgid="2363579035338976327">"Escreva nos campos de texto"</string>
+ <string name="stylus_textfield_handwriting" msgid="2363579035338976327">"Escrever nos campos de texto"</string>
<string name="stylus_ignore_button" msgid="7734540973145241391">"Ignorar todos os pressionamentos de botão com a stylus"</string>
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data e hora"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saiba mais sobre o \"Desbloqueio do relógio\""</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Adicionar relógio"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remover relógio"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Impressão digital e Desbloqueio facial"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueio facial e por impressão digital"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueio facial e por impressão digital para o trabalho"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Configuração necessária"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Rosto e impressões digitais adicionados"</string>
@@ -558,7 +559,7 @@
<string name="private_space_fingerprint_unlock_title" msgid="3614016453395789051">"Desbloqueio por impressão digital para o espaço privado"</string>
<string name="private_space_face_unlock_title" msgid="462248384776453613">"Desbloqueio facial para o espaço privado"</string>
<string name="private_space_biometric_unlock_title" msgid="1978145237698659673">"Desbloqueio facial e por digital para espaço privado"</string>
- <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"Configurar o Desbloqueio por impressão digital para o espaço privado"</string>
+ <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"Configurar Desbloqueio por digital para o espaço privado"</string>
<string name="private_space_fingerprint_enroll_introduction_message" msgid="9092068873421435300">"Use sua impressão digital para desbloquear seu espaço privado ou confirmar sua identidade e acessar apps ou aprovar uma compra"</string>
<string name="private_space_fingerprint_enroll_introduction_footer_message" msgid="7125255484447984854">"O espaço privado poderá ser desbloqueado mesmo se essa não for sua intenção. Por exemplo, se alguém colocar seu dedo no sensor."</string>
<string name="private_space_fingerprint_enroll_finish_message" msgid="4754797926493316965">"Use sua impressão digital para desbloquear o espaço privado ou aprovar compras"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instale apps"</b>\n"Instale os apps que você quer guardar no seu espaço com privacidade"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Observação importante"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Os apps são interrompidos quando você bloqueia o espaço"</b>\n"Ao bloquear o espaço, os apps nele serão interrompidos e você não vai receber notificações deles"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Os espaços privados não são adequados para apps que precisam ser executados em segundo plano ou enviar notificações importantes, como apps médicos. Isso porque as notificações e atividades em segundo plano são interrompidas quando o espaço é bloqueado.\n\nOs apps no espaço privado não vão aparecer na Gestão de permissões, no painel de privacidade nem em outras configurações quando o espaço estiver bloqueado.\n\nNão é possível transferir seu espaço privado para outro dispositivo. Você precisará configurar um novo espaço privado se quiser usá-lo em outro dispositivo.\n\nCaso alguém conecte seu dispositivo a um computador ou instale apps nocivos nele, essa pessoa poderá ter acesso ao seu espaço privado."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Os espaços privados não são adequados para apps que precisam ser executados em segundo plano ou enviar notificações importantes, como apps médicos. Isso porque as notificações e atividades em segundo plano são interrompidas quando o espaço é bloqueado.\n\nOs apps no espaço privado não vão aparecer na Gestão de permissões, no painel de privacidade nem em outras configurações quando o espaço estiver bloqueado.\n\nNão é possível restaurar seu espaço privado em outro dispositivo. Você precisará configurar um novo espaço privado se quiser usá-lo em outro dispositivo.\n\nCaso alguém conecte seu dispositivo a um computador ou instale apps maliciosos nele, essa pessoa poderá ter acesso ao seu espaço privado."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Saiba mais sobre o espaço privado"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Isso vai levar alguns instantes"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configurando o espaço privado…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Reiniciar o dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"O registro detalhado de NFC é destinado apenas a fins de desenvolvimento. Dados NFC extras estão incluídos em relatórios de bugs, que podem conter informações particulares. Reinicie o dispositivo para mudar essa configuração."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reiniciar"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Transmitir"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"espelho"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Ativar tela sem fio"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptáveis"</string>
<string name="brightness" msgid="6216871641021779698">"Nível de brilho"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Brilho adaptável"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Sobre o brilho adaptável"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"O brilho da tela será ajustado automaticamente ao seu ambiente e às suas atividades. Mova o controle deslizante para ajudar o brilho adaptável a memorizar suas preferências."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Ativado"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desativado"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Usuário selecionado: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Fala"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocidade do cursor"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controlador de jogos"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirecionar vibração"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Enviar vibração para o controlador de jogo quando conectado"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuar mesmo assim"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancelar"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Configurações de ampliação"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Movimento com um dedo"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Mova a lupa com 1 dedo"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Arraste um dedo para mover a tela."</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mova a área de ampliação arrastando um dedo."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mova a área de ampliação arrastando dois dedos."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Indisponível ao ampliar apenas parte da tela"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Toque em um botão para aplicar zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Aplique zoom rapidamente na tela para ampliar o conteúdo"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Para aumentar o zoom, faça o seguinte:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação.<br/> {1,number,integer}. Toque na tela.<br/> {2,number,integer}. Arraste dois dedos para navegar pela tela.<br/> {3,number,integer}. Faça um gesto de pinça com dois dedos para ajustar o zoom.<br/> {4,number,integer}. Use o atalho para interromper a ampliação.<br/><br/> <b>Se quiser aumentar o zoom temporariamente, faça o seguinte:</b><br/> {0,number,integer}. Confira se o tipo de ampliação está definido como tela cheia.<br/> {1,number,integer}. Use o atalho para iniciar a ampliação.<br/> {2,number,integer}. Toque em qualquer lugar da tela e a mantenha pressionada.<br/> {3,number,integer}. Arraste o dedo para navegar pela tela.<br/> {4,number,integer}. Solte para interromper a ampliação."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Para aumentar o zoom, faça o seguinte:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação.<br/> {1,number,integer}. Toque na tela.<br/> {2,number,integer}. Arraste 2 dedos para navegar pela tela.<br/> {3,number,integer}. Faça um gesto de pinça com 2 dedos para ajustar o zoom.<br/> {4,number,integer}. Pare a ampliação usando um atalho<br/><br/> Você também pode aumentar o zoom temporariamente e fazer várias outras ações|."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Para aumentar o zoom, faça o seguinte:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação.<br/> {1,number,integer}. Toque na tela.<br/> {2,number,integer}. Arraste 1 ou 2 dedos para navegar pela tela.<br/> {3,number,integer}. Faça um gesto de pinça com 2 dedos para ajustar o zoom.<br/> {4,number,integer}. Pare a ampliação usando um atalho<br/><br/> Você também pode aumentar o zoom temporariamente e fazer várias outras ações|."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Quando a ampliação está ativada, você pode aumentar o zoom na tela.\n\n"<b>"Para aplicar zoom"</b>", inicie a ampliação e toque em qualquer lugar da tela.\n"<ul><li>"Arraste dois dedos ou mais para rolar a tela."</li>\n<li>"Faça um gesto de pinça com dois ou mais dedos para ajustar o zoom."</li></ul>\n\n<b>"Para aplicar zoom temporariamente"</b>", inicie a ampliação e depois toque em qualquer ponto na tela e mantenha-o pressionado.\n"<ul><li>"Arraste para mover a tela."</li>\n<li>"Levante o dedo para diminuir o zoom."</li></ul>\n\n"Não é possível aumentar o zoom no teclado e na barra de navegação."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Atalho para o botão de acessibilidade"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nenhuma}=1{1 programação definida}one{# programação definida}other{# programações definidas}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Não perturbe"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modos prioritários"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Receber notificações apenas de pessoas e apps importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Selecionar tipo de ativação"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Horário"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Exemplo: \"Das 9h30 às 17h\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Agenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Exemplo: \"Agenda pessoal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitar interrupções"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Ativar o Não perturbe"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmes e sons de mídia podem interromper"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programações"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Excluir programações"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Excluir"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editar"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programações"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programação"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Adicione uma agenda"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Use sua agenda"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programação"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Definir uma programação"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programação"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programação"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silenciar smartphone em horários específicos"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permitir interrupções que emitem sons"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquear perturbações visuais"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permitir sinais visuais"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificações que podem chegar até você"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Mantenha o foco"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Ações adicionais"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Configurações de tela"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opções de exibição"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ativar tema escuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Muda o SO e os apps para dar preferência a texto claro em um fundo escuro, o que pode facilitar a visualização e oferecer uma economia de bateria significativa em alguns dispositivos"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nenhuma mudança na tela}=1{{effect_1}}=2{{effect_1} e {effect_2}}=3{{effect_1}, {effect_2} e {effect_3}}one{{effect_1}, {effect_2} e mais #}other{{effect_1}, {effect_2} e mais #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrar interrupções"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nenhuma interrupção está sendo filtrada"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opções de exibição para notificações filtradas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Quando o Não perturbe estiver ativado"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Desativar som de notificações"</string>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorias"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Outros"</string>
<string name="no_channels" msgid="4716199078612071915">"Este app não postou nenhuma notificação"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostrar categorias não usadas"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Configurações avançadas no app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostrar categorias não usadas"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ocultar categorias não usadas"</string>
@@ -3774,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Apps selecionados"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nenhum"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Todos"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permitir que apps modifiquem o \"Não perturbe\""</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps que podem fazer interrupções"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Selecionar mais apps"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Mudar para somente alarmes por uma hora até {time}}one{Mudar para somente alarmes por # hora até {time}}other{Mudar para somente alarmes por # horas até {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Alterar para \"Somente alarmes\" até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Alterar para \"Sempre interromper\""</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Renomear"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Mudar ícone"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Mudar ícone"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Alerta"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Fechar"</string>
<string name="device_feedback" msgid="5351614458411688608">"Enviar feedback sobre o dispositivo"</string>
@@ -4043,8 +4100,8 @@
<string name="keywords_vr_listener" msgid="902737490270081131">"rv realidade virtual ouvinte estéreo serviço de ajuda"</string>
<string name="overlay_settings" msgid="2030836934139139469">"Sobrepor a outros apps"</string>
<string name="filter_overlay_apps" msgid="2483998217116789206">"Apps com permissão"</string>
- <string name="app_permission_summary_allowed" msgid="1155115629167757278">"Permitidas"</string>
- <string name="app_permission_summary_not_allowed" msgid="2673793662439097900">"Não permitidas"</string>
+ <string name="app_permission_summary_allowed" msgid="1155115629167757278">"Permitidos(as)"</string>
+ <string name="app_permission_summary_not_allowed" msgid="2673793662439097900">"Não permitidos(as)"</string>
<string name="keywords_install_other_apps" msgid="563895867658775580">"instalar apps fontes desconhecidas"</string>
<string name="write_settings" msgid="6864794401614425894">"Mudar configurações do sistema"</string>
<string name="keywords_write_settings" msgid="6908708078855507813">"gravar modificar configurações de modificação"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"A partição de dados deste dispositivo precisa ser convertida em ext4 antes do uso da opção para desenvolvedores de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. A ativação da opção de 16 KB exigirá uma segunda reinicialização. Neste modo, você pode alternar entre os modos 4 KB e 16 KB com uma única reinicialização. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para voltar o dispositivo ao modo de produção, será necessário voltar para o modo 4 KB e, depois, bloquear o carregador de inicialização, o que redefine o dispositivo para os padrões de fábrica. Depois que o dispositivo for inicializado corretamente no Android, desative o desbloqueio de OEM nas Opções do desenvolvedor. Todos os dados serão excluídos permanentemente do dispositivo, e o sistema de arquivos vai mudar para ext4 após a confirmação. Depois disso, reative o modo 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Limpar todos os dados"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Falha ao apagar e reformatar a partição de dados para ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Desbloqueio do carregador de inicialização obrigatório para o modo 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"O carregador de inicialização precisa ser desbloqueado neste dispositivo antes do uso da opção para desenvolvedores de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Todos os dados do usuário e configurações serão apagados permanentemente durante a ativação do modo 16 KB. Após o desbloqueio do carregador de inicialização, a ativação da opção de 16 KB vai exigir duas reinicializações. Neste modo, você pode alternar entre os modos 4 KB e 16 KB com uma única reinicialização. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para voltar o dispositivo ao modo de produção, será necessário voltar para o modo 4 KB e, depois, bloquear o carregador de inicialização/OEM, o que redefine o dispositivo para os padrões de fábrica. Desbloqueie o carregador de inicialização e tente de novo. Para conferir instruções de como fazer isso, acesse <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Uso do modo agnóstico de páginas de 4 KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Você está no modo agnóstico de páginas de 4 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, desbloqueie o carregador de inicialização no dispositivo. Toque para ler mais."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Você está no modo agnóstico de páginas de 4 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, desbloqueie o carregador de inicialização no dispositivo. Essa ação vai redefinir o dispositivo para os padrões de fábrica novamente. Depois que o dispositivo for inicializado corretamente no Android, desative o desbloqueio de OEM nas Opções do desenvolvedor. Se o dispositivo não for inicializado no Android ou estiver instável, atualize-o novamente com as imagens de fábrica mais recentes especificadas em <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecione \"Excluir o dispositivo permanentemente\", \"Bloquear carregador de inicialização\" e \"Forçar a atualização de todas as partições\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Uso do modo agnóstico de páginas de 16 KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Você está no modo agnóstico de páginas de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, volte para o modo 4 KB e, em seguida, bloqueio o carregador de inicialização no dispositivo. Toque para ler mais."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Você está no modo agnóstico de páginas de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, volte para o modo 4 KB e, em seguida, bloqueio o carregador de inicialização no dispositivo. Essa ação vai redefinir o dispositivo para os padrões de fábrica novamente. Depois que o dispositivo for inicializado corretamente no Android, desative o desbloqueio de OEM nas Opções do desenvolvedor. Se o dispositivo não for inicializado no Android ou estiver instável, atualize-o novamente com as imagens de fábrica mais recentes especificadas em <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecione \"Excluir o dispositivo permanentemente\", \"Bloquear carregador de inicialização\" e \"Forçar a atualização de todas as partições\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modo agnóstico de páginas de 16 KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Leia mais"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Gerenciador de relatórios de bugs"</string>
@@ -5009,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usar a Fixação de app"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar as opções do desenvolvedor"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usar o serviço de impressão"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir vários usuários"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"autorizar, vários, usuários, permitir, muitos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"múltiplos, usuários, perfis, pessoas, contas, trocar, vários"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usar a depuração por Wi-Fi"</string>
@@ -5353,4 +5414,6 @@
<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">"Ler 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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index c08f8c8..aadb738 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Hora de dormir"</item>
+ <item msgid="4152450357280759894">"Condução"</item>
+ <item msgid="7096549258219399423">"Envolvente"</item>
+ <item msgid="2760716776980432977">"Gerido"</item>
+ <item msgid="601734478369121764">"Estrela"</item>
+ <item msgid="6243809315432780521">"Calendário"</item>
+ <item msgid="4913577903148415331">"Horas"</item>
+ <item msgid="3653377604690057780">"Cinema"</item>
+ <item msgid="3843711267408385410">"Flor"</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 90592ef..7425bb7 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Definições do dispositivo auditivo"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Atalho, compatibilidade com aparelhos auditivos"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Predefinição"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Não existem predefinições programadas pelo seu audiologista"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Não foi possível atualizar a predefinição"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Saída de áudio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Acerca da saída de áudio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saiba mais sobre o Desbloqueio com o relógio"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Adicionar relógio"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remover relógio"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Desbloqueio facial e por impressão digital"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueio facial e por impressão digital"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueio facial e por impressão digital para o trabalho"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Configuração necessária"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Rosto e impressões digitais adicionados"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instale apps"</b>\n"Instale as apps que quer manter privadas no seu espaço"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Tenha em atenção"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"As apps param quando bloqueia o seu espaço"</b>\n"Quando bloqueia o seu espaço, as respetivas apps são paradas e deixam de lhe enviar notificações"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Os espaços privados não são adequados para apps que precisem de ser executadas em segundo plano ou de enviar notificações críticas, como as apps médicas. Isto deve-se ao facto de as notificações e a atividade em segundo plano pararem quando o espaço está bloqueado.\n\nAs apps no seu espaço privado não vão aparecer no Gestor de autorizações, no painel de privacidade e noutras definições quando o seu espaço privado estiver bloqueado.\n\nNão é possível mover o seu espaço privado para um novo dispositivo. Tem de configurar outro espaço privado se quiser usá-lo noutro dispositivo.\n\nQualquer pessoa que ligue o seu dispositivo a um computador ou instale apps prejudiciais no seu dispositivo pode conseguir aceder ao seu espaço privado."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Os espaços privados não são adequados para apps que precisem de ser executadas em segundo plano ou de enviar notificações críticas, como as apps médicas. Isto deve-se ao facto de as notificações e a atividade em segundo plano pararem quando o espaço está bloqueado.\n\nAs apps no seu espaço privado não vão aparecer no Gestor de autorizações, no painel de privacidade e noutras definições quando o seu espaço privado estiver bloqueado.\n\nNão é possível restaurar o seu espaço privado para um novo dispositivo. Tem de configurar outro espaço se quiser usá-lo noutro dispositivo.\n\nQualquer pessoa que ligue o seu dispositivo a um computador ou instale apps maliciosas no seu dispositivo pode conseguir aceder ao seu espaço privado."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Saiba mais sobre o espaço privado"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Esta ação vai demorar alguns instantes"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"A configurar o espaço privado…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Reiniciar o dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"O registo detalhado de NFC destina-se apenas a fins de programação. Os dados de NFC são incluídos em relatórios de erros, que podem conter informações privadas. Reinicie o seu dispositivo para alterar esta definição."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reiniciar"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Transmitir"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"espelhar"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Ativar display sem fios"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptável"</string>
<string name="brightness" msgid="6216871641021779698">"Nível de luminosidade"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Luminosidade adaptável"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Acerca da luminosidade adaptável"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"A luminosidade do ecrã vai ajustar-se automaticamente ao ambiente e às atividades. Pode mover o controlo de deslize manualmente para permitir que a luminosidade adaptável aprenda as suas preferências."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Ativada"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desativada"</string>
@@ -1902,7 +1932,7 @@
<string name="bounce_keys" msgid="7419450970351743904">"Teclas de rejeição"</string>
<string name="bounce_keys_summary" msgid="7347050868868080302">"O teclado ignora os toques rápidos repetidos da mesma tecla no espaço de <xliff:g id="BOUNCE_KEYS_THRESHOLD">%1$d</xliff:g> ms"</string>
<string name="slow_keys" msgid="2891452895499690837">"Teclas lentas"</string>
- <string name="slow_keys_summary" msgid="1784371292745423292">"Ajusta o tempo que demora a ativação de uma tecla premida para <xliff:g id="SLOW_KEYS_THRESHOLD">%1$d</xliff:g> ms"</string>
+ <string name="slow_keys_summary" msgid="1784371292745423292">"Ajusta o tempo que demora a ativação de uma tecla pressionada para <xliff:g id="SLOW_KEYS_THRESHOLD">%1$d</xliff:g> ms"</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="keyboard_shortcuts_helper" msgid="2553221039203165344">"Atalhos de teclado"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Utilizador selecionado: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Voz"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocidade do ponteiro"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controlador de Jogos"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirecionar vibração"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Enviar a vibração para o controlador do jogo, quando ligado."</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuar mesmo assim"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancelar"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Definições de ampliação"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Deslocação com um dedo"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Mover a lupa com 1 dedo"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Arraste 1 dedo para percorrer o ecrã"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mova a área de ampliação arrastando um dedo."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mova a área de ampliação arrastando dois dedos."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Indisponível quando amplia apenas parte do ecrã"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tocar num botão para utilizar o zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Aumente o zoom rapidamente no ecrã para ampliar o tamanho do conteúdo"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Para aumentar o zoom:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação<br/> {1,number,integer}. Toque no ecrã<br/> {2,number,integer}. Arraste 2 dedos para deslocar o ecrã<br/> {3,number,integer}. Junte/afaste 2 dedos para ajustar o zoom<br/> {4,number,integer}. Use o atalho para parar a ampliação<br/><br/> <b>Para aumentar o zoom temporariamente:</b><br/> {0,number,integer}. Certifique-se de que o tipo de ampliação está definido para o ecrã inteiro<br/> {1,number,integer}. Use o atalho para iniciar a ampliação<br/> {2,number,integer}. Toque sem soltar em qualquer parte do ecrã<br/> {3,number,integer}. Arraste o dedo para deslocar o ecrã<br/> {4,number,integer}. Levante o dedo para parar a ampliação"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Para aumentar o zoom:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação<br/> {1,number,integer}. Toque no ecrã<br/> {2,number,integer}. Arraste 2 dedos para percorrer o ecrã<br/> {3,number,integer}. Junte/afaste 2 dedos para ajustar o zoom<br/> {4,number,integer}. Use o atalho para parar a ampliação<br/><br/> Também pode aumentar o zoom temporariamente e muito mais."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Para aumentar o zoom:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação<br/> {1,number,integer}. Toque no ecrã<br/> {2,number,integer}. Arraste 1 ou 2 dedos para percorrer o ecrã<br/> {3,number,integer}. Junte/afaste 2 dedos para ajustar o zoom<br/> {4,number,integer}. Use o atalho para parar a ampliação<br/><br/> Também pode aumentar o zoom temporariamente e muito mais."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Quando a ampliação estiver ativada, pode aumentar o zoom no ecrã.\n\n"<b>"Para utilizar o zoom"</b>", inicie a ampliação e, em seguida, toque em qualquer parte do ecrã.\n"<ul><li>"Arraste 2 ou mais dedos para se deslocar."</li>\n<li>"Junte 2 ou mais dedos para ajustar o zoom."</li></ul>\n\n<b>"Para utilizar o zoom temporariamente"</b>", inicie a ampliação e, em seguida, toque sem soltar em qualquer parte do ecrã.\n"<ul><li>"Arraste o dedo para se mover pelo ecrã."</li>\n<li>"Levante o dedo para diminuir o zoom."</li></ul>\n\n"Não é possível aumentar o zoom no teclado nem na barra de navegação."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Atalho do botão Acessibilidade"</string>
@@ -2228,7 +2267,7 @@
<string name="accessibility_control_timeout_preference_title" msgid="1443940538597464758">"Tempo de ação"</string>
<string name="accessibility_control_timeout_preference_summary" msgid="4037051091059316310">"Esta preferência de tempo não é suportada por todas as apps"</string>
<string name="accessibility_control_timeout_preference_intro_text" msgid="1398116710556762245">"Escolha a duração de mensagens temporárias que lhe pedem que tome medidas"</string>
- <string name="accessibility_long_press_timeout_preference_title" msgid="5237764682976688855">"Atraso ao manter premida a tecla"</string>
+ <string name="accessibility_long_press_timeout_preference_title" msgid="5237764682976688855">"Atraso ao manter pressionada a tecla"</string>
<string name="accessibility_display_inversion_preference_title" msgid="5476133104746207952">"Inversão de cores"</string>
<string name="accessibility_display_inversion_switch_title" msgid="7458595722552743503">"Usar inversão de cores"</string>
<string name="accessibility_display_inversion_shortcut_title" msgid="6889624526691513462">"Atalho da inversão de cores"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nenhum}=1{1 horário definido}other{# horários definidos}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Não incomodar"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modos de prioridade"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Receba notificações só de pessoas e apps importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Selecionar tipo de ativação"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Horas"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Por exemplo: \"9:30 - 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendário"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Por exemplo: \"Calendário pessoal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limite as interrupções"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Ativar o modo Não incomodar"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Os sons de alarmes e multimédia podem interromper."</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Horários"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Elimine horários"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Eliminar"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editar"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Horários"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Horário"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Adicione um calendário"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Use o seu calendário"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Agende"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Defina um horário"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Horário"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Horário"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silenciar telemóvel se necessário"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permitir interrupções que emitam som"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquear perturbações visuais"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permitir sinais visuais"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificações que pode receber"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Mantenha a concentração"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Ações adicionais"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Definições de visualização"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opções de visualização"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ativar tema escuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Mude as opções do sistema operativo e das apps para darem preferência a texto claro num fundo escuro, o que pode ser mais agradável para os olhos e permite poupar significativamente a bateria em alguns dispositivos"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nenhuma alteração de visualização}=1{{effect_1}}=2{{effect_1} e {effect_2}}=3{{effect_1}, {effect_2} e {effect_3}}other{{effect_1}, {effect_2} e mais #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrar interrupções"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Sem interrupções filtradas"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opções de visualização para notificações filtradas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Quando o modo Não incomodar está ativado"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Sem som de notificações"</string>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorias"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Outra"</string>
<string name="no_channels" msgid="4716199078612071915">"Esta app não publicou notificações"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostrar categorias não usadas"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Definições adicionais na app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostrar categorias não usadas"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ocultar categorias não usadas"</string>
@@ -3774,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Apps selecionadas"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nenhuma"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Todas"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permitir que as apps substituam"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps que podem interromper"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Selecione mais apps"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Alterar para alarmes apenas durante uma hora até à(s) {time}}other{Alterar para alarmes apenas durante # horas até à(s) {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Alterar para alarmes apenas, até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Alterar para interromper sempre"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Mudar nome"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Alterar ícone"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Alterar ícone"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Aviso"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Fechar"</string>
<string name="device_feedback" msgid="5351614458411688608">"Enviar feedback do dispositivo"</string>
@@ -4043,7 +4100,7 @@
<string name="keywords_vr_listener" msgid="902737490270081131">"rv realidade virtual serviço de escuta estéreo serviço assistente"</string>
<string name="overlay_settings" msgid="2030836934139139469">"Sobrepor a outras apps"</string>
<string name="filter_overlay_apps" msgid="2483998217116789206">"Apps com autorização"</string>
- <string name="app_permission_summary_allowed" msgid="1155115629167757278">"Permitida"</string>
+ <string name="app_permission_summary_allowed" msgid="1155115629167757278">"Permitido"</string>
<string name="app_permission_summary_not_allowed" msgid="2673793662439097900">"Não permitida"</string>
<string name="keywords_install_other_apps" msgid="563895867658775580">"instalar apps de fontes desconhecidas"</string>
<string name="write_settings" msgid="6864794401614425894">"Modificar definições do sistema"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"A partição de dados deste dispositivo tem de ser convertida em ext4 antes de usar a opção de programador de 16 KB. A integridade do software não pode ser garantida neste modo e quaisquer dados armazenados no telemóvel enquanto o carregador de arranque estiver desbloqueado podem estar em risco. A ativação da opção de 16 KB exige reiniciar mais uma vez depois desta ação. Quando este modo estiver ativado, pode alternar entre os modos de 4 KB e 16 KB depois de reiniciar uma vez. Algumas funcionalidades são desativadas nestes modos, por isso, algumas apps podem não funcionar. Para voltar a definir o modo de produção no dispositivo, precisa de voltar a ativar o modo de 4 KB e, de seguida, bloquear o carregador de arranque, o que repõe as definições de fábrica do dispositivo. Depois de o dispositivo arrancar com êxito no Android, desative o desbloqueio pelo OEM nas Opções de programador. O dispositivo vai ser limpo e o sistema de ficheiros vai ser alterado para ext4 após a confirmação. Concluído este passo, ative novamente o modo de 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Apagar todos os dados"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Falha ao reformatar e limpar a partição de dados para ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Desbloqueio do carregador de arranque necessário para o modo de 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Este dispositivo precisa de desbloquear o carregador de arranque antes de usar a opção de programador de 16 KB. A integridade do software não pode ser garantida neste modo e quaisquer dados armazenados no telemóvel enquanto o carregador de arranque estiver desbloqueado podem estar em risco. Todos os dados e definições do utilizador são limpos com a ativação do modo de 16 KB. Uma vez desbloqueado o carregador de arranque, a ativação da opção de 16 KB exige reiniciar duas vezes. Quando este modo estiver ativado, pode alternar entre os modos de 4 KB e 16 KB depois de reiniciar uma vez. Algumas funcionalidades são desativadas nestes modos, por isso, algumas apps podem não funcionar. Para voltar a definir o modo de produção no dispositivo, precisa de voltar a ativar o modo de 4 KB e, de seguida, bloquear o OEM/carregador de arranque (o que repõe as definições de fábrica do dispositivo). Desbloqueie o carregador de arranque e tente novamente. Pode ver instruções sobre como o fazer em <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"A usar o modo sem página de 4 KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Está no modo de 4 KB do modo sem página. A integridade do software não pode ser garantida neste modo e quaisquer dados armazenados no telemóvel enquanto o carregador de arranque estiver desbloqueado podem estar em risco. Algumas funcionalidades são desativadas nestes modos, por isso, algumas apps podem não funcionar. Para voltar a ativar o modo de produção, tem de bloquear o carregador de arranque do dispositivo. Toque para ler mais."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Está no modo de 4 KB do modo sem página. A integridade do software não pode ser garantida neste modo e quaisquer dados armazenados no telemóvel enquanto o carregador de arranque estiver desbloqueado podem estar em risco. Algumas funcionalidades são desativadas nestes modos, por isso, algumas apps podem não funcionar. Para voltar a ativar o modo de produção, tem de bloquear o carregador de arranque do dispositivo. Esta ação permite fazer uma reposição de fábrica do dispositivo e restaurá-lo para as definições de produção. Depois de o dispositivo arrancar com êxito no Android, desative o desbloqueio pelo OEM nas Opções de programador. Se o dispositivo não conseguir arrancar no Android ou estiver instável, volte a atualizar o dispositivo com as imagens de fábrica mais recentes de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecione \"Limpar dispositivo\", \"Bloquear carregador de arranque\" e \"Forçar a atualização de todas as partições\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"A usar o modo sem página de 16 KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Está ativado o modo de 16 KB do modo sem página. A integridade do software não pode ser garantida neste modo e quaisquer dados armazenados no telemóvel enquanto o carregador de arranque estiver desbloqueado podem estar em risco. Algumas funcionalidades são desativadas nestes modos, por isso, algumas apps podem não funcionar. Para voltar a ativar o modo de produção, tem de voltar ao modo de 4K e, de seguida, bloquear o carregador de arranque do dispositivo. Toque para ler mais."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Está ativado o modo de 16 KB do modo sem página. A integridade do software não pode ser garantida neste modo e quaisquer dados armazenados no telemóvel enquanto o carregador de arranque estiver desbloqueado podem estar em risco. Algumas funcionalidades são desativadas nestes modos, por isso, algumas apps podem não funcionar. Para voltar a ativar o modo de produção, tem de voltar ao modo de 4K e, de seguida, bloquear o carregador de arranque do dispositivo. Esta ação permite fazer uma reposição de fábrica do dispositivo e restaurá-lo para as definições de produção. Depois de o dispositivo arrancar com êxito no Android, desative o desbloqueio pelo OEM nas Opções de programador. Se o dispositivo não conseguir arrancar no Android ou estiver instável, volte a atualizar o dispositivo com as imagens de fábrica mais recentes de <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecione \"Limpar dispositivo\", \"Bloquear carregador de arranque\" e \"Forçar a atualização de todas as partições\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modo sem página de 16 KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Ler mais"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Controlador do relatório de erro"</string>
@@ -5009,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usar fixação de apps"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar opções de programador"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usar serviço de impressão"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir vários utilizadores"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"autorizar, vários, utilizador, permitir, muitos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"vários, utilizadores, perfis, pessoas, contas, mudar, muitos"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usar depuração sem fios"</string>
@@ -5353,4 +5414,6 @@
<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_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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index b3bfd99..06b6904 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Hora de dormir"</item>
+ <item msgid="4152450357280759894">"Ao dirigir"</item>
+ <item msgid="7096549258219399423">"Imersivo"</item>
+ <item msgid="2760716776980432977">"Gerenciado"</item>
+ <item msgid="601734478369121764">"Marcar com estrela"</item>
+ <item msgid="6243809315432780521">"Agenda"</item>
+ <item msgid="4913577903148415331">"Horário"</item>
+ <item msgid="3653377604690057780">"Teatro"</item>
+ <item msgid="3843711267408385410">"Flor"</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 e34936d..3675a2d 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Configurações do aparelho auditivo"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Atalho, compatibilidade com aparelhos auditivos"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Predefinição"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Não há predefinições programadas pelo seu audiologista"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Não foi possível atualizar a predefinição"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Saída de áudio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Sobre a saída de áudio"</string>
@@ -137,7 +138,7 @@
<string name="stylus_device_details_title" msgid="7618295136015480864">"Stylus"</string>
<string name="stylus_default_notes_app" msgid="4165657465911764628">"Pressionar o botão da stylus"</string>
<string name="stylus_default_notes_summary_work" msgid="4554643411627934223">"<xliff:g id="APP_NAME">%s</xliff:g> (perfil de trabalho)"</string>
- <string name="stylus_textfield_handwriting" msgid="2363579035338976327">"Escreva nos campos de texto"</string>
+ <string name="stylus_textfield_handwriting" msgid="2363579035338976327">"Escrever nos campos de texto"</string>
<string name="stylus_ignore_button" msgid="7734540973145241391">"Ignorar todos os pressionamentos de botão com a stylus"</string>
<string name="stylus_connected_devices_title" msgid="2823967577941359812">"Stylus"</string>
<string name="date_and_time" msgid="1788358029823431692">"Data e hora"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saiba mais sobre o \"Desbloqueio do relógio\""</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Adicionar relógio"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Remover relógio"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Impressão digital e Desbloqueio facial"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Desbloqueio facial e por impressão digital"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Desbloqueio facial e por impressão digital para o trabalho"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Configuração necessária"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Rosto e impressões digitais adicionados"</string>
@@ -558,7 +559,7 @@
<string name="private_space_fingerprint_unlock_title" msgid="3614016453395789051">"Desbloqueio por impressão digital para o espaço privado"</string>
<string name="private_space_face_unlock_title" msgid="462248384776453613">"Desbloqueio facial para o espaço privado"</string>
<string name="private_space_biometric_unlock_title" msgid="1978145237698659673">"Desbloqueio facial e por digital para espaço privado"</string>
- <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"Configurar o Desbloqueio por impressão digital para o espaço privado"</string>
+ <string name="private_space_fingerprint_enroll_introduction_title" msgid="5187730641333680942">"Configurar Desbloqueio por digital para o espaço privado"</string>
<string name="private_space_fingerprint_enroll_introduction_message" msgid="9092068873421435300">"Use sua impressão digital para desbloquear seu espaço privado ou confirmar sua identidade e acessar apps ou aprovar uma compra"</string>
<string name="private_space_fingerprint_enroll_introduction_footer_message" msgid="7125255484447984854">"O espaço privado poderá ser desbloqueado mesmo se essa não for sua intenção. Por exemplo, se alguém colocar seu dedo no sensor."</string>
<string name="private_space_fingerprint_enroll_finish_message" msgid="4754797926493316965">"Use sua impressão digital para desbloquear o espaço privado ou aprovar compras"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instale apps"</b>\n"Instale os apps que você quer guardar no seu espaço com privacidade"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Observação importante"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Os apps são interrompidos quando você bloqueia o espaço"</b>\n"Ao bloquear o espaço, os apps nele serão interrompidos e você não vai receber notificações deles"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Os espaços privados não são adequados para apps que precisam ser executados em segundo plano ou enviar notificações importantes, como apps médicos. Isso porque as notificações e atividades em segundo plano são interrompidas quando o espaço é bloqueado.\n\nOs apps no espaço privado não vão aparecer na Gestão de permissões, no painel de privacidade nem em outras configurações quando o espaço estiver bloqueado.\n\nNão é possível transferir seu espaço privado para outro dispositivo. Você precisará configurar um novo espaço privado se quiser usá-lo em outro dispositivo.\n\nCaso alguém conecte seu dispositivo a um computador ou instale apps nocivos nele, essa pessoa poderá ter acesso ao seu espaço privado."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Os espaços privados não são adequados para apps que precisam ser executados em segundo plano ou enviar notificações importantes, como apps médicos. Isso porque as notificações e atividades em segundo plano são interrompidas quando o espaço é bloqueado.\n\nOs apps no espaço privado não vão aparecer na Gestão de permissões, no painel de privacidade nem em outras configurações quando o espaço estiver bloqueado.\n\nNão é possível restaurar seu espaço privado em outro dispositivo. Você precisará configurar um novo espaço privado se quiser usá-lo em outro dispositivo.\n\nCaso alguém conecte seu dispositivo a um computador ou instale apps maliciosos nele, essa pessoa poderá ter acesso ao seu espaço privado."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Saiba mais sobre o espaço privado"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Isso vai levar alguns instantes"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Configurando o espaço privado…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Reiniciar o dispositivo?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"O registro detalhado de NFC é destinado apenas a fins de desenvolvimento. Dados NFC extras estão incluídos em relatórios de bugs, que podem conter informações particulares. Reinicie o dispositivo para mudar essa configuração."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reiniciar"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Transmitir"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"espelho"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Ativar tela sem fio"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptáveis"</string>
<string name="brightness" msgid="6216871641021779698">"Nível de brilho"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Brilho adaptável"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Sobre o brilho adaptável"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"O brilho da tela será ajustado automaticamente ao seu ambiente e às suas atividades. Mova o controle deslizante para ajudar o brilho adaptável a memorizar suas preferências."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Ativado"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Desativado"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Usuário selecionado: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Fala"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Velocidade do cursor"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controlador de jogos"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirecionar vibração"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Enviar vibração para o controlador de jogo quando conectado"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuar mesmo assim"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Cancelar"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Configurações de ampliação"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Movimento com um dedo"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Mova a lupa com 1 dedo"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Arraste um dedo para mover a tela."</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mova a área de ampliação arrastando um dedo."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mova a área de ampliação arrastando dois dedos."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Indisponível ao ampliar apenas parte da tela"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Toque em um botão para aplicar zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Aplique zoom rapidamente na tela para ampliar o conteúdo"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Para aumentar o zoom, faça o seguinte:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação.<br/> {1,number,integer}. Toque na tela.<br/> {2,number,integer}. Arraste dois dedos para navegar pela tela.<br/> {3,number,integer}. Faça um gesto de pinça com dois dedos para ajustar o zoom.<br/> {4,number,integer}. Use o atalho para interromper a ampliação.<br/><br/> <b>Se quiser aumentar o zoom temporariamente, faça o seguinte:</b><br/> {0,number,integer}. Confira se o tipo de ampliação está definido como tela cheia.<br/> {1,number,integer}. Use o atalho para iniciar a ampliação.<br/> {2,number,integer}. Toque em qualquer lugar da tela e a mantenha pressionada.<br/> {3,number,integer}. Arraste o dedo para navegar pela tela.<br/> {4,number,integer}. Solte para interromper a ampliação."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Para aumentar o zoom, faça o seguinte:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação.<br/> {1,number,integer}. Toque na tela.<br/> {2,number,integer}. Arraste 2 dedos para navegar pela tela.<br/> {3,number,integer}. Faça um gesto de pinça com 2 dedos para ajustar o zoom.<br/> {4,number,integer}. Pare a ampliação usando um atalho<br/><br/> Você também pode aumentar o zoom temporariamente e fazer várias outras ações|."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Para aumentar o zoom, faça o seguinte:</b><br/> {0,number,integer}. Use o atalho para iniciar a ampliação.<br/> {1,number,integer}. Toque na tela.<br/> {2,number,integer}. Arraste 1 ou 2 dedos para navegar pela tela.<br/> {3,number,integer}. Faça um gesto de pinça com 2 dedos para ajustar o zoom.<br/> {4,number,integer}. Pare a ampliação usando um atalho<br/><br/> Você também pode aumentar o zoom temporariamente e fazer várias outras ações|."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Quando a ampliação está ativada, você pode aumentar o zoom na tela.\n\n"<b>"Para aplicar zoom"</b>", inicie a ampliação e toque em qualquer lugar da tela.\n"<ul><li>"Arraste dois dedos ou mais para rolar a tela."</li>\n<li>"Faça um gesto de pinça com dois ou mais dedos para ajustar o zoom."</li></ul>\n\n<b>"Para aplicar zoom temporariamente"</b>", inicie a ampliação e depois toque em qualquer ponto na tela e mantenha-o pressionado.\n"<ul><li>"Arraste para mover a tela."</li>\n<li>"Levante o dedo para diminuir o zoom."</li></ul>\n\n"Não é possível aumentar o zoom no teclado e na barra de navegação."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Página <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> de <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Atalho para o botão de acessibilidade"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Nenhuma}=1{1 programação definida}one{# programação definida}other{# programações definidas}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Não perturbe"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modos prioritários"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Receber notificações apenas de pessoas e apps importantes"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Selecionar tipo de ativação"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Horário"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Exemplo: \"Das 9h30 às 17h\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Agenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Exemplo: \"Agenda pessoal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitar interrupções"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Ativar o Não perturbe"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmes e sons de mídia podem interromper"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programações"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Excluir programações"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Excluir"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editar"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programações"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programação"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Adicione uma agenda"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Use sua agenda"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Programação"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Definir uma programação"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Programação"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Programação"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Silenciar smartphone em horários específicos"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permitir interrupções que emitem sons"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Bloquear perturbações visuais"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permitir sinais visuais"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificações que podem chegar até você"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Mantenha o foco"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Ações adicionais"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Configurações de tela"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opções de exibição"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"ativar tema escuro"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Muda o SO e os apps para dar preferência a texto claro em um fundo escuro, o que pode facilitar a visualização e oferecer uma economia de bateria significativa em alguns dispositivos"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nenhuma mudança na tela}=1{{effect_1}}=2{{effect_1} e {effect_2}}=3{{effect_1}, {effect_2} e {effect_3}}one{{effect_1}, {effect_2} e mais #}other{{effect_1}, {effect_2} e mais #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrar interrupções"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nenhuma interrupção está sendo filtrada"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opções de exibição para notificações filtradas"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Quando o Não perturbe estiver ativado"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Desativar som de notificações"</string>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorias"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Outros"</string>
<string name="no_channels" msgid="4716199078612071915">"Este app não postou nenhuma notificação"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Mostrar categorias não usadas"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Configurações avançadas no app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Mostrar categorias não usadas"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ocultar categorias não usadas"</string>
@@ -3774,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Apps selecionados"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nenhum"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Todos"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permitir que apps modifiquem o \"Não perturbe\""</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Apps que podem fazer interrupções"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Selecionar mais apps"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Mudar para somente alarmes por uma hora até {time}}one{Mudar para somente alarmes por # hora até {time}}other{Mudar para somente alarmes por # horas até {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Alterar para \"Somente alarmes\" até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Alterar para \"Sempre interromper\""</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Renomear"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Mudar ícone"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Mudar ícone"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Alerta"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Fechar"</string>
<string name="device_feedback" msgid="5351614458411688608">"Enviar feedback sobre o dispositivo"</string>
@@ -4043,8 +4100,8 @@
<string name="keywords_vr_listener" msgid="902737490270081131">"rv realidade virtual ouvinte estéreo serviço de ajuda"</string>
<string name="overlay_settings" msgid="2030836934139139469">"Sobrepor a outros apps"</string>
<string name="filter_overlay_apps" msgid="2483998217116789206">"Apps com permissão"</string>
- <string name="app_permission_summary_allowed" msgid="1155115629167757278">"Permitidas"</string>
- <string name="app_permission_summary_not_allowed" msgid="2673793662439097900">"Não permitidas"</string>
+ <string name="app_permission_summary_allowed" msgid="1155115629167757278">"Permitidos(as)"</string>
+ <string name="app_permission_summary_not_allowed" msgid="2673793662439097900">"Não permitidos(as)"</string>
<string name="keywords_install_other_apps" msgid="563895867658775580">"instalar apps fontes desconhecidas"</string>
<string name="write_settings" msgid="6864794401614425894">"Mudar configurações do sistema"</string>
<string name="keywords_write_settings" msgid="6908708078855507813">"gravar modificar configurações de modificação"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"A partição de dados deste dispositivo precisa ser convertida em ext4 antes do uso da opção para desenvolvedores de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. A ativação da opção de 16 KB exigirá uma segunda reinicialização. Neste modo, você pode alternar entre os modos 4 KB e 16 KB com uma única reinicialização. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para voltar o dispositivo ao modo de produção, será necessário voltar para o modo 4 KB e, depois, bloquear o carregador de inicialização, o que redefine o dispositivo para os padrões de fábrica. Depois que o dispositivo for inicializado corretamente no Android, desative o desbloqueio de OEM nas Opções do desenvolvedor. Todos os dados serão excluídos permanentemente do dispositivo, e o sistema de arquivos vai mudar para ext4 após a confirmação. Depois disso, reative o modo 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Limpar todos os dados"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Falha ao apagar e reformatar a partição de dados para ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Desbloqueio do carregador de inicialização obrigatório para o modo 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"O carregador de inicialização precisa ser desbloqueado neste dispositivo antes do uso da opção para desenvolvedores de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Todos os dados do usuário e configurações serão apagados permanentemente durante a ativação do modo 16 KB. Após o desbloqueio do carregador de inicialização, a ativação da opção de 16 KB vai exigir duas reinicializações. Neste modo, você pode alternar entre os modos 4 KB e 16 KB com uma única reinicialização. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para voltar o dispositivo ao modo de produção, será necessário voltar para o modo 4 KB e, depois, bloquear o carregador de inicialização/OEM, o que redefine o dispositivo para os padrões de fábrica. Desbloqueie o carregador de inicialização e tente de novo. Para conferir instruções de como fazer isso, acesse <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Uso do modo agnóstico de páginas de 4 KB"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Você está no modo agnóstico de páginas de 4 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, desbloqueie o carregador de inicialização no dispositivo. Toque para ler mais."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Você está no modo agnóstico de páginas de 4 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, desbloqueie o carregador de inicialização no dispositivo. Essa ação vai redefinir o dispositivo para os padrões de fábrica novamente. Depois que o dispositivo for inicializado corretamente no Android, desative o desbloqueio de OEM nas Opções do desenvolvedor. Se o dispositivo não for inicializado no Android ou estiver instável, atualize-o novamente com as imagens de fábrica mais recentes especificadas em <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecione \"Excluir o dispositivo permanentemente\", \"Bloquear carregador de inicialização\" e \"Forçar a atualização de todas as partições\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Uso do modo agnóstico de páginas de 16 KB"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Você está no modo agnóstico de páginas de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, volte para o modo 4 KB e, em seguida, bloqueio o carregador de inicialização no dispositivo. Toque para ler mais."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Você está no modo agnóstico de páginas de 16 KB. A integridade do software não é garantida nesse modo, e todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem ser expostos a riscos. Como alguns recursos serão desativados nesses modos, alguns aplicativos podem não funcionar. Para entrar de novo no modo de produção, volte para o modo 4 KB e, em seguida, bloqueio o carregador de inicialização no dispositivo. Essa ação vai redefinir o dispositivo para os padrões de fábrica novamente. Depois que o dispositivo for inicializado corretamente no Android, desative o desbloqueio de OEM nas Opções do desenvolvedor. Se o dispositivo não for inicializado no Android ou estiver instável, atualize-o novamente com as imagens de fábrica mais recentes especificadas em <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ou use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> e selecione \"Excluir o dispositivo permanentemente\", \"Bloquear carregador de inicialização\" e \"Forçar a atualização de todas as partições\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modo agnóstico de páginas de 16 KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Leia mais"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Gerenciador de relatórios de bugs"</string>
@@ -5009,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Usar a Fixação de app"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Usar as opções do desenvolvedor"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Usar o serviço de impressão"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permitir vários usuários"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"autorizar, vários, usuários, permitir, muitos"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"múltiplos, usuários, perfis, pessoas, contas, trocar, vários"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Usar a depuração por Wi-Fi"</string>
@@ -5353,4 +5414,6 @@
<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">"Ler 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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index ba9b1d2..1c60dcb 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Ora de culcare"</item>
+ <item msgid="4152450357280759894">"La volan"</item>
+ <item msgid="7096549258219399423">"Captivant"</item>
+ <item msgid="2760716776980432977">"Gestionat"</item>
+ <item msgid="601734478369121764">"Stea"</item>
+ <item msgid="6243809315432780521">"Calendar"</item>
+ <item msgid="4913577903148415331">"Ora"</item>
+ <item msgid="3653377604690057780">"Teatru"</item>
+ <item msgid="3843711267408385410">"Floare"</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 f5f2c2e..c1de513 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Setări pentru aparate auditive"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Comandă rapidă, compatibilitate cu aparatele auditive"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Presetare"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Audiologul nu a configurat presetări"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Nu s-a putut actualiza presetarea"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Ieșire audio"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Despre ieșirea audio"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Află mai multe despre Deblocarea cu ceasul"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Adaugă un ceas"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Elimină ceasul"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Deblocare cu amprenta și Deblocare facială"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Deblocare facială și cu amprenta"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Deblocarea facială și cu amprenta pentru serviciu"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Este necesară configurarea"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Fața și amprentele au fost adăugate"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalează aplicații"</b>\n"Instalează aplicațiile pe care vrei să le păstrezi private în spațiul tău"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Reține"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplicațiile se opresc când îți blochezi spațiul"</b>\n"Când îți blochezi spațiul, aplicațiile din spațiul tău sunt oprite și nu vei mai primi notificări de la ele"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Spațiile private nu sunt potrivite pentru aplicațiile care trebuie să ruleze în fundal sau să trimită notificări critice, cum ar fi aplicațiile medicale. Motivul este că notificările și activitatea din fundal sunt oprite când spațiul este blocat.\n\nAplicațiile din spațiul privat nu vor apărea în Managerul de permisiuni, în tabloul de bord de confidențialitate și în alte setări atunci când spațiul privat este blocat.\n\nSpațiul privat nu poate fi mutat pe alt dispozitiv. Va trebui să configurezi alt spațiu privat dacă vrei să-l folosești pe alt dispozitiv.\n\nOricine îți conectează dispozitivul la un computer sau instalează aplicații dăunătoare pe dispozitiv poate să îți acceseze spațiul privat."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Spațiile private nu sunt potrivite pentru aplicațiile care trebuie să ruleze în fundal sau să trimită notificări critice, cum ar fi aplicațiile medicale. Motivul este că notificările și activitatea din fundal sunt oprite când spațiul este blocat.\n\nAplicațiile din spațiul privat nu vor apărea în Managerul de permisiuni, în tabloul de bord de confidențialitate și în alte setări atunci când spațiul privat este blocat.\n\nSpațiul privat nu poate fi restabilit pe alt dispozitiv. Va fi necesar să configurezi alt spațiu dacă vrei să îl folosești pe alt dispozitiv.\n\nOricine îți conectează dispozitivul la un computer sau instalează aplicații rău intenționate pe dispozitiv poate să îți acceseze spațiul privat."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Află mai multe despre spațiul privat"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Procesul va dura câteva momente"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Se configurează spațiul privat…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Repornești dispozitivul?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Înregistrarea NFC detaliată este menită exclusiv pentru dezvoltare Datele NFC suplimentare sunt incluse în rapoartele de eroare, care pot conține informații private. Repornește dispozitivul ca să schimbi setarea."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Repornește"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Proiectare"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"oglindă"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Activează ecranul wireless"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Nivel de luminozitate"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Luminozitate adaptivă"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Despre luminozitatea adaptivă"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Luminozitatea ecranului se va adapta automat la mediul și activitățile tale. Poți să muți manual glisorul pentru a ajuta luminozitatea adaptivă să îți învețe preferințele."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Activată"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Dezactivat"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Controler de joc"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Redirecționează vibrațiile"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Trimite vibrații la controlerul de joc când este conectat"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Continuă oricum"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Anulează"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Setări pentru mărire"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Deplasare cu un deget"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Mută zona de mărit trăgând cu un deget."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Mută zona de mărit trăgând cu două degete."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Opțiune indisponibilă dacă se mărește numai o parte a ecranului"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Atinge un buton pentru a micșora/mări"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Mărește rapid conținutul de pe ecran"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Pentru a mări:</b><br/> {0,number,integer}. folosește comanda rapidă ca să începi mărirea;<br/> {1,number,integer}. atinge ecranul;<br/> {2,number,integer}. glisează cu două degete ca să te deplasezi pe ecran;<br/> {3,number,integer}. ciupește cu două degete ca să ajustezi nivelul de zoom;<br/> {4,number,integer}. folosește comanda rapidă ca să oprești mărirea.<br/><br/> <b>Pentru a mări temporar:</b><br/> {0,number,integer}. asigură-te că tipul de mărire este setat la ecran complet;<br/> {1,number,integer}. folosește comanda rapidă ca să începi mărirea;<br/> {2,number,integer}. atinge lung oriunde pe ecran;<br/> {3,number,integer}. glisează cu degetul ca să te deplasezi pe ecran;<br/> {4,number,integer}. ridică degetul ca să oprești mărirea."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Când mărirea este activată, poți mări ecranul curent.\n\n"<b>"Pentru a mări"</b>", începe mărirea, apoi atinge oriunde pe ecran.\n"<ul><li>"Trage cu două sau mai multe degete pentru a derula"</li>\n<li>"Ciupește cu două sau mai multe degete pentru a regla nivelul de zoom"</li></ul>\n\n<b>"Pentru a mări temporar"</b>", începe mărirea, apoi atinge lung oriunde pe ecran.\n"<ul><li>"Trage pentru a te mișca pe ecran"</li>\n<li>"Ridică degetul pentru a micșora"</li></ul>\n\n"Nu poți mări pe tastatură și pe bara de navigare."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Pagina <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> din <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Comandă rapidă pentru butonul de accesibilitate"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Niciunul}=1{Un program setat}few{# programe setate}other{# de programe setate}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Nu deranja"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Moduri cu prioritate"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Primește notificări doar de la persoane și aplicații importante"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Selectează tipul de activare"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Ora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"De exemplu, 9:30 – 17:00"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Calendar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"De exemplu, Calendar personal"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitează întreruperile"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Activează Nu deranja"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmele și sunetele media îl pot întrerupe"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Programe"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Șterge programele"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Ștergeți"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Editează"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programe"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Program"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Adaugă un calendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Folosește-ți calendarul"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Program"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Setează un program"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Program"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Program"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Dezactivează sunetul uneori"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Permite întreruperile care emit sunete"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blochează întreruperile vizuale"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Permite semnale vizuale"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Notificări acceptate"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Concentrează-te"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Acțiuni suplimentare"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Setări de afișare"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opțiuni de afișare"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"activează tema întunecată"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Modifică sistemul de operare și aplicațiile astfel încât să se afișeze text de culoare deschisă pe un fundal de culoare închisă, care este mai odihnitor pentru ochi și asigură economisirea considerabilă a bateriei în cazul unor dispozitive"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Nicio modificare a afișării}=1{{effect_1}}=2{{effect_1} și {effect_2}}=3{{effect_1}, {effect_2} și {effect_3}}few{{effect_1}, {effect_2} și încă #}other{{effect_1}, {effect_2} și încă #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrează întreruperile"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nu sunt filtrate întreruperi"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opțiuni de afișare pentru notificările filtrate"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Când funcția „Nu deranja” este activată"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Fără sunet de la notificări"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Categorii"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Altele"</string>
<string name="no_channels" msgid="4716199078612071915">"Această aplicație nu a postat nicio notificare"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Afișează categoriile nefolosite"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Setări suplimentare în aplicație"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Afișează categoriile nefolosite"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ascunde categoriile nefolosite"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Aplicațiile selectate"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Niciuna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Toate"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Permite aplicațiilor să ignore"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplicații care pot întrerupe"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Selectează mai multe aplicații"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Schimbă la Numai alarme pentru o oră, până la {time}}few{Schimbă la Numai alarme pentru # ore, până la {time}}other{Schimbă la Numai alarme pentru # de ore, până la {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Schimbă la „Numai alarme” până la <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Schimbă la „Întrerupe întotdeauna”"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Redenumește"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Schimbă pictograma"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Schimbă pictograma"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Avertisment"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Închide"</string>
<string name="device_feedback" msgid="5351614458411688608">"Trimite feedback despre dispozitiv"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Partiția de date a acestui dispozitiv trebuie schimbată la ext4 înainte de a folosi opțiunea pentru dezvoltatori pe 16 KB. Integritatea software-ului nu poate fi garantată în acest mod și toate datele stocate pe telefon cât timp bootloaderul este deblocat pot fi în pericol. Activarea opțiunii pe 16 KB va necesita încă o repornire după această acțiune. Când te afli în acest mod, poți să comuți între modul de 4 KB și cel de 16 KB printr-o repornire. Unele funcții vor fi dezactivate în aceste moduri, prin urmare este posibil ca unele aplicații să nu funcționeze. Pentru a readuce dispozitivul în modul de producție, trebuie să revii la modul pe 4 KB, apoi să blochezi bootloaderul, acțiune care aduce dispozitivul la setările din fabrică. După ce dispozitivul pornește în sistemul Android, dezactivează deblocarea OEM în Opțiuni pentru dezvoltatori. Datele de pe dispozitiv vor fi șterse și sistemul de fișiere se va schimba în ext4 după confirmare. După finalizarea acțiunii, reactivează modul pe 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Șterge toate datele"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Nu s-a putut reformata și golește partiția de date cu ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Este necesară deblocarea bootloaderului pentru modul pe 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Bootloaderul dispozitivului trebuie deblocat înainte de a folosi opțiunea pentru dezvoltatori pe 16 KB. Integritatea software-ului nu poate fi garantată în acest mod și toate datele stocate pe telefon cât timp bootloaderul este deblocat pot fi în pericol. Toate datele și setările utilizatorului vor fi șterse la activarea modului pe 16 KB. După deblocarea bootloaderului, activarea opțiunii pe 16 KB va necesita două reporniri. Când te afli în acest mod, poți să comuți între modul de 4 KB și cel de 16 KB printr-o repornire. Unele funcții vor fi dezactivate în aceste moduri, prin urmare este posibil ca unele aplicații să nu funcționeze. Pentru a readuce dispozitivul în modul de producție, trebuie să revii la modul pe 4 KB, apoi să blochezi OEM / bootloaderul dispozitivului (acțiune care aduce dispozitivul la setările din fabrică). Deblochează bootloaderul și încearcă din nou. Găsești instrucțiuni pentru acest proces la <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Se folosește modul pe 4 KB independent de dimensiunea paginii."</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Ești în modul pe 4 KB independent de dimensiunea paginii. Integritatea software-ului nu poate fi garantată în acest mod și toate datele stocate pe telefon cât timp bootloaderul este deblocat pot fi în pericol. Unele funcții vor fi dezactivate în aceste moduri, prin urmare este posibil ca unele aplicații să nu funcționeze. Pentru a intra din nou în modul de producție, trebuie să blochezi bootloaderul dispozitivului. Atinge pentru a citi mai multe."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Ești în modul pe 4 KB independent de dimensiunea paginii. Integritatea software-ului nu poate fi garantată în acest mod și toate datele stocate pe telefon cât timp bootloaderul este deblocat pot fi în pericol. Unele funcții vor fi dezactivate în aceste moduri, prin urmare este posibil ca unele aplicații să nu funcționeze. Pentru a intra din nou în modul de producție, trebuie să blochezi bootloaderul dispozitivului. Astfel, dispozitivul revine din nou la setările din fabrică și este restabilit la setările de producție. După ce dispozitivul pornește în sistemul Android, dezactivează deblocarea OEM în Opțiuni pentru dezvoltatori. Dacă dispozitivul nu pornește în sistemul Android sau este instabil, reinstalează cele mai recente configurații din fabrică pe dispozitiv de la <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> sau accesează <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> și selectează Wipe Device (Șterge datele de pe dispozitiv) > Lock Bootloader (Blochează bootloaderul) > Force Flash all partitions (Instalează forțat pe toate partițiile)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Se folosește modul pe 16 KB independent de dimensiunea paginii."</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Ești în modul pe 16 KB independent de dimensiunea paginii. Integritatea software-ului nu poate fi garantată în acest mod și toate datele stocate pe telefon cât timp bootloaderul este deblocat pot fi în pericol. Unele funcții vor fi dezactivate în aceste moduri, prin urmare este posibil ca unele aplicații să nu funcționeze. Pentru a intra din nou în modul de producție, trebuie să revii la modul pe 4 KB, apoi să blochezi bootloaderul dispozitivului. Atinge pentru a citi mai multe."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Ești în modul pe 16 KB independent de dimensiunea paginii. Integritatea software-ului nu poate fi garantată în acest mod și toate datele stocate pe telefon cât timp bootloaderul este deblocat pot fi în pericol. Unele funcții vor fi dezactivate în aceste moduri, prin urmare este posibil ca unele aplicații să nu funcționeze. Pentru a intra din nou în modul de producție, trebuie să revii la modul pe 4 KB, apoi să blochezi bootloaderul dispozitivului. Astfel, dispozitivul revine din nou la setările din fabrică și este restabilit la setările de producție. După ce dispozitivul pornește în sistemul Android, dezactivează deblocarea OEM în Opțiuni pentru dezvoltatori. Dacă dispozitivul nu pornește în sistemul Android sau este instabil, reinstalează cele mai recente configurații din fabrică pe dispozitiv de la <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> sau accesează <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> și selectează Wipe Device (Șterge datele de pe dispozitiv) > Lock Bootloader (Blochează bootloaderul) > Force Flash all partitions (Instalează forțat pe toate partițiile)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modul pe 16 KB independent de dimensiunea paginii"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Citește mai multe"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Handler pentru rapoartele de eroare"</string>
@@ -5010,7 +5074,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Folosește fixarea aplicațiilor"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Folosește opțiuni pentru dezvoltatori"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Folosește serviciul de printare"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Permite utilizatori multipli"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"permite, mai mulți, utilizatori, acceptă, mulți"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"multipli, utilizatori, profiluri, persoane, conturi, schimbă, mulți"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Folosește remedierea erorilor wireless"</string>
@@ -5354,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index 9f7d302..b90cc23 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Сон"</item>
+ <item msgid="4152450357280759894">"Вождение"</item>
+ <item msgid="7096549258219399423">"Погружение"</item>
+ <item msgid="2760716776980432977">"Управление"</item>
+ <item msgid="601734478369121764">"Звезда"</item>
+ <item msgid="6243809315432780521">"Календарь"</item>
+ <item msgid="4913577903148415331">"Время"</item>
+ <item msgid="3653377604690057780">"Театр"</item>
+ <item msgid="3843711267408385410">"Цветок"</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 f1e32b5..cca5d8d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Настройки слуховых аппаратов"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Быстрый запуск, совместимость со слуховыми аппаратами"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Набор настроек"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Нет наборов настроек от сурдолога"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Не удалось обновить набор настроек."</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудиовыход"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"О выводе звука"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Подробнее о разблокировке с помощью часов…"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Добавить часы"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Удалить часы"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Отпечаток пальца и фейсконтроль"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Фейсконтроль и отпечаток пальца"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Фейсконтроль и отпечаток пальца для работы"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Требуется настройка"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Добавлено лицо и отпечатки пальцев"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Перезапустить устройство?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Подробный журнал NFC ведется только в целях разработки. Дополнительные данные NFC будут включены в отчеты об ошибках и могут содержать конфиденциальную информацию. Чтобы изменить этот параметр, перезапустите устройство."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Перезапустить"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Трансляция"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"дублирование"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Включить"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Адаптивная регулировка"</string>
<string name="brightness" msgid="6216871641021779698">"Яркость"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Адаптивная яркость"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Об адаптивной яркости"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Яркость экрана будет настраиваться автоматически в зависимости от окружающих условий и ваших действий. Дополнительно ее можно регулировать вручную, чтобы система учитывала ваши предпочтения."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Включено"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Отключено"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Продолжить"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Отмена"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Настройки увеличения"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Перемещение одним пальцем"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Проведите пальцем, чтобы переместить лупу"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Для перемещения по экрану проведите пальцем."</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Для перемещения зоны увеличения используется один палец"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Для перемещения зоны увеличения используются два пальца"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Недоступно при увеличении только части экрана"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Чтобы увеличить масштаб, нажмите кнопку"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Быстрое увеличение масштаба."</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Чтобы увеличить масштаб:</b><br/> {0,number,integer}. Выполните действие быстрого запуска для перехода в режим увеличения.<br/> {1,number,integer}. Коснитесь экрана.<br/> {2,number,integer}. Если нужно, перетащите область увеличения двумя пальцами.<br/> {3,number,integer}. Чтобы скорректировать масштаб, сведите или разведите два пальца.<br/> {4,number,integer}. Чтобы выйти из режима увеличения, выполните действие быстрого запуска.<br/><br/> <b>Чтобы временно увеличить масштаб:</b><br/> {0,number,integer}. Убедитесь, что выбран режим увеличения \"Весь экран\".<br/> {1,number,integer}. Выполните действие быстрого запуска для перехода в режим увеличения.<br/> {2,number,integer}. Коснитесь любой области экрана и удерживайте палец.<br/> {3,number,integer}. Если нужно, перетащите область увеличения.<br/> {4,number,integer}. Чтобы вернуть исходный масштаб, уберите палец с экрана."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Чтобы увеличить масштаб:</b><br/> {0,number,integer}. Выполните действие быстрого запуска для перехода в режим увеличения.<br/> {1,number,integer}. Коснитесь экрана.<br/> {2,number,integer}. Перетащите область увеличения двумя пальцами.<br/> {3,number,integer}. Чтобы скорректировать масштаб, сведите два пальца вместе.<br/> {4,number,integer}. Чтобы выйти из режима увеличения, выполните действие быстрого запуска.<br/><br/> Вы также можете временно увеличивать масштаб и выполнять другие команды."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Чтобы увеличить масштаб:</b><br/> {0,number,integer}. Выполните действие быстрого запуска для перехода в режим увеличения.<br/> {1,number,integer}. Коснитесь экрана.<br/> {2,number,integer}. Перетащите область увеличения одним или двумя пальцами.<br/> {3,number,integer}. Чтобы скорректировать масштаб, сведите два пальца вместе.<br/> {4,number,integer}. Чтобы выйти из режима увеличения, выполните действие быстрого запуска.<br/><br/> Вы также можете временно увеличивать масштаб и выполнять другие команды."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Благодаря функции увеличения вы сможете приближать изображение на экране.\n\n"<b>"Если вы хотите увеличить изображение"</b>", включите функцию и нажмите на экран в любом месте.\n"<ul><li>"Для прокрутки проведите двумя пальцами."</li>\n<li>"Чтобы изменить масштаб, сведите два пальца вместе или разведите их."</li></ul>\n\n<b>"Если нужно временно увеличить масштаб"</b>", включите функцию увеличения, коснитесь экрана и удерживайте.\n"<ul><li>"Для обзора проведите по экрану."</li>\n<li>"Чтобы уменьшить масштаб, отпустите палец."</li></ul>\n\n"Эти жесты не работают на клавиатуре и панели навигации."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Страница <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">"Кнопка быстрого доступа к специальным возможностям"</string>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Нет настроенных расписаний}=1{Настроено 1 расписание}one{Настроено # расписание}few{Настроено # расписания}many{Настроено # расписаний}other{Настроено # расписания}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Не беспокоить"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Режимы приоритета"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Получать уведомления только от важных людей и приложений."</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Выбрать тип активации"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Время"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Например, 9:30–17:00"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Календарь"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Например, \"Личный календарь\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Отключение уведомлений"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Удалить расписания"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Удалить"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Добавить в календарь"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Использовать календарь"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Расписание"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Создайте расписание"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Расписание"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Отключать звук в заданное время"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Разрешить звуки"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Блокировка визуального оповещения"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Включить визуальное оповещение"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Разрешенные уведомления"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Фильтрация уведомлений"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Дополнительные действия"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Настройки экрана"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Параметры отображения"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"использовать темную тему"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Показывать светлый текст на темном фоне в ОС и приложениях. Такой режим значительно экономит заряд батареи на некоторых устройствах и может быть более комфортным для глаз."</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} и ещё # изменение}few{{effect_1}, {effect_2} и ещё # изменения}many{{effect_1}, {effect_2} и ещё # изменений}other{{effect_1}, {effect_2} и ещё # изменения}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Фильтровать уведомления"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Уведомления не фильтруются"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Показать неиспользуемые категории"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Скрыть неиспользуемые категории"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"Все"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Активировать режим \"Только будильник\" на один час до {time}}one{Активировать режим \"Только будильник\" на # час до {time}}few{Активировать режим \"Только будильник\" на # часа до {time}}many{Активировать режим \"Только будильник\" на # часов до {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Переименовать"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Изменить значок"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Изменение значка"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Уведомление"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Закрыть"</string>
<string name="device_feedback" msgid="5351614458411688608">"Отправить отзыв об устройстве"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Прежде чем использовать параметр для разработчиков и менять размер страницы памяти на 16 КБ, преобразуйте раздел данных на этом устройстве в файловую систему ext4. После этого гарантировать целостность программного обеспечения будет невозможно. Любые данные, сохраненные на телефоне, пока загрузчик операционной системы разблокирован, могут быть под угрозой. При выполнении процедуры устройство нужно будет перезагрузить ещё раз. В этом режиме для переключения между размерами страницы памяти (4 КБ и 16 КБ) требуется одна перезагрузка. Некоторые функции будут отключены, поэтому отдельные приложения могут не работать. Чтобы сбросить настройки и вернуть устройство в производственный режим, вновь уменьшите размер страницы памяти до 4 КБ и заблокируйте загрузчик операционной системы. После успешного запуска Android отключите разблокировку загрузчика в разделе \"Для разработчиков\". При подтверждении данные с вашего устройства будут удалены, а файловая система будет изменена на ext4. Затем снова увеличьте размер страницы памяти до 16 КБ."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Удалить все данные"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Не удалось отформатировать раздел данных и сменить файловую систему на ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Чтобы изменить размер страницы памяти на 16 кБ, разблокируйте загрузчик операционной системы"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Прежде чем использовать параметр для разработчиков и менять размер страницы памяти на 16 кБ, разблокируйте загрузчик операционной системы на этом устройстве. После этого гарантировать целостность программного обеспечения будет невозможно. Любые данные, сохраненные на телефоне, пока загрузчик операционной системы разблокирован, могут быть под угрозой. При повышении размера до 16 кБ все пользовательские данные и настройки будут удалены. После разблокировки загрузчика операционной системы потребуется перезагрузить устройство два раза. В этом режиме для переключения между размерами страницы памяти (4 кБ и 16 кБ) требуется одна перезагрузка. Некоторые функции будут отключены, поэтому отдельные приложения могут не работать. Чтобы сбросить настройки и вернуть устройство в производственный режим, вновь уменьшите размер до 4 кБ и заблокируйте загрузчик операционной системы. Разблокируйте загрузчик и повторите попытку. Сведения о том, как это сделать, опубликованы на странице <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Режим, который не зависит от страниц, с ядром 4 KБ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Вы используете режим работы, который не зависит от страниц, с размером страницы 4 КБ. Гарантировать целостность программного обеспечения при этом невозможно. Любые данные, сохраненные на телефоне, пока загрузчик операционной системы разблокирован, могут быть под угрозой. Некоторые функции будут отключены, поэтому отдельные приложения могут не работать. Чтобы вернуться в производственный режим, заблокируйте загрузчик операционной системы. Нажмите, чтобы узнать подробности."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Вы используете режим работы, который не зависит от страниц, с размером страницы 4 КБ. Гарантировать целостность программного обеспечения при этом невозможно. Любые данные, сохраненные на телефоне, пока загрузчик операционной системы разблокирован, могут быть под угрозой. Некоторые функции будут отключены, поэтому отдельные приложения могут не работать. Чтобы вернуться в производственный режим, заблокируйте загрузчик операционной системы. Настройки устройства при этом сбросятся. После успешного запуска Android отключите разблокировку загрузчика в разделе \"Для разработчиков\". Перепрошейте устройство, если оно работает нестабильно или Android на нем не запускается. Для этого используйте последние заводские образы с сайта <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> или <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a&gt. Затем нажмите \"Удалить данные с устройства\", \"Заблокировать загрузчик операционной системы\" и \"Принудительно прошить все разделы\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Используется режим работы, который не зависит от страниц, с размером страницы 16 кБ."</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Вы используете режим работы, который не зависит от страниц памяти, с размером страницы 16 кБ. Гарантировать целостность программного обеспечения при этом невозможно. Любые данные, сохраненные на телефоне, пока загрузчик операционной системы разблокирован, могут быть под угрозой. Некоторые функции будут отключены, поэтому отдельные приложения могут не работать. Чтобы вернуться в производственный режим, вновь уменьшите размер страницы памяти до 4 кБ и заблокируйте загрузчик операционной системы. Нажмите, чтобы узнать подробности."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Вы используете режим работы, который не зависит от страниц памяти, с размером страницы 16 кБ. Гарантировать целостность программного обеспечения при этом невозможно. Любые данные, сохраненные на телефоне, пока загрузчик операционной системы разблокирован, могут быть под угрозой. Некоторые функции будут отключены, поэтому отдельные приложения могут не работать. Чтобы вернуться в производственный режим, вновь уменьшите размер страницы памяти до 4 кБ и заблокируйте загрузчик операционной системы. Настройки устройства при этом сбросятся. После успешного запуска Android отключите разблокировку загрузчика в разделе \"Для разработчиков\". Перепрошейте устройство, если оно работает нестабильно или Android на нем не запускается. Для этого используйте последние заводские образы с сайта <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> или <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a&gt. Затем нажмите \"Удалить данные с устройства\", \"Заблокировать загрузчик операционной системы\" и \"Принудительно прошить все разделы\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Режим работы, который не зависит от страниц, с размером страницы 16 кБ."</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Ещё"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Обработчик отчетов об ошибках"</string>
@@ -5011,7 +5071,8 @@
<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="6686858308083037810">"Разрешить добавлять несколько пользователей"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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">"Использовать отладку по Wi-Fi"</string>
@@ -5355,4 +5416,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-si/arrays.xml b/res/values-si/arrays.xml
index d51a1c0..52e499a 100644
--- a/res/values-si/arrays.xml
+++ b/res/values-si/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"නින්දට යන වේලාව"</item>
+ <item msgid="4152450357280759894">"රිය ධාවනය"</item>
+ <item msgid="7096549258219399423">"ගිලෙන සුළු"</item>
+ <item msgid="2760716776980432977">"කළමනාකරණය කළ"</item>
+ <item msgid="601734478369121764">"තරුව"</item>
+ <item msgid="6243809315432780521">"දින දර්ශනය"</item>
+ <item msgid="4913577903148415331">"වේලාව"</item>
+ <item msgid="3653377604690057780">"රඟහල"</item>
+ <item msgid="3843711267408385410">"මල"</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 a30c2f3..6c9f0b8 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"ශ්රවණ උපකරණ සැකසීම්"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"කෙටිමඟ, ශ්රවණාධාරක අනුකූලත්වය"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"පෙරසැකසුම"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ඔබේ ශ්රව්ය විද්යාඥයා විසින් වැඩසටහන්ගත කළ පෙර සැකසීම් නොමැත"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"පෙර සැකසීම යාවත්කාලීන කළ නොහැකි විය"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ශබ්ද ප්රතිදානය"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ශ්රව්ය ප්රතිදානය පිළිබඳව"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ඔරලෝසුව අගුලු හැරීම ගැන තව දැන ගන්න"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"ඔරලෝසුව එක් කරන්න"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"ඔරලෝසුව ඉවත් කරන්න"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"ඇඟිලි සලකුණ සහ මුහුණෙන් අගුළු හැරීම"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"මුහුණ සහ ඇඟිලි සලකුණු අගුළු හැරීම"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"වැඩ සඳහා මුහුණු සහ ඇඟිලි සලකුණු අගුළු හැරීම"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"පිහිටුවීම අවශ්යයි"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"මුහුණ සහ ඇඟිලි සලකුණු එක් කරන ලදි"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"උපාංගය යළි අරඹන්න ද?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"විස්තර NFC ලොග් කිරීම සංවර්ධන අරමුණු සඳහා පමණක් අදහස් කරයි. පෞද්ගලික තොරතුරු අඩංගු විය හැකි, දෝෂ වාර්තාවල අතිරේක NFC දත්ත ඇතුළත් වේ. මෙම සැකසීම වෙනස් කිරීමට ඔබේ උපාංගය යළි අරඹන්න."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"යළි අරඹන්න"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"දර්පණය"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"රැහැන් රහිත දර්ශනය සබල කරන්න"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"අනුවර්තී"</string>
<string name="brightness" msgid="6216871641021779698">"දීප්ති මට්ටම"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"අනුවර්තක දීප්තිය"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"අනුවර්තී දීප්තිය පිළිබඳව"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"ඔබේ තිරයේ දීප්තිය ස්වයංක්රියව ඔබගේ පරිසරයට සහ ක්රියාකාරකම්වලට ගළපනු ඇත. අනුවර්තන දීප්තියට ඔබේ මනාප දැන ගැනීමට උදවු වීමට ඔබට ස්ලයිඩරය හස්තීයව ගෙන යාමට හැකිය."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ක්රියාත්මකයි"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ක්රියාවිරහිතයි"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"කෙසේ වෙතත් ඉදිරියට යන්න"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"අවලංගු කරන්න"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"විශාලන සැකසීම්"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"එක ඇඟිල්ලකින් පෑන් කිරීම"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"එක ඇඟිල්ලක් ඇදීමෙන් විශාලන ප්රදේශය එහා මෙහා කරන්න."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ඇඟිලි දෙකක් ඇදීමෙන් විශාලන ප්රදේශය එහා මෙහා කරන්න."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"තිරයේ කොටසක් පමණක් විශාලනය කරන අතරේ ලබා ගත නොහැක"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"විශාලනය කිරීමට බොත්තමක් තට්ටු කරන්න"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"අන්තර්ගතය වඩා විශාල කිරීමට තිරය මත ඉක්මනින් විශාලනය කරන්න"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>විශාලනය වැඩි කිරීමට:</b><br/> {0,number,integer}. විශාලනය කිරීම ආරම්භ කිරීමට කෙටිමග භාවිත කරන්න<br/> {1,number,integer}. තිරය තට්ටු කරන්න<br/> {2,number,integer}. තිරය වටා යාමට ඇඟිලි 2කින් අදින්න<br/> {3,number,integer}. විශාලනය සීරුමාරු කිරීමට ඇඟිලි 2කින් පින්ච් කරන්න<br/> {4,number,integer}. විශාලනය කිරීම නතර කිරීමට කෙටි මග භාවිත කරන්න<br/><br/> <b>තාවකාලිකව විශාලනය වැඩි කිරීමට:</b><br/> {0,number,integer}. ඔබගේ විශාලන වර්ගය පූර්ණ තිරයට සකසා ඇති බවට සහතික කර ගන්න<br/> {1,number,integer}. විශාලනය කිරීම ආරම්භ කිරීමට කෙටිමග භාවිත කරන්න<br/> {2,number,integer}. තිරයේ ඕනෑම තැනක ස්පර්ශ කර අල්ලා ගන්න<br/> {3,number,integer}. තිරය වටා යාමට ඇඟිල්ල අදින්න<br/> {4,number,integer}. විශාලනය කිරීම නතර කිරීමට ඇඟිල්ල ඔසවන්න"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"විශාලනය ක්රියාත්මක කර ඇති විට, ඔබට ඔබේ තිරයේ දී විශාලනය වැඩි කළ හැකිය.\n\n"<b>"විශාලනය කිරීමට"</b>", විශාලනය ආරම්භ කර, අනතුරුව තිරයේ ඕනෑම තැනක තට්ටු කරන්න.\n"<ul><li>"අනුචලනය කිරීමට ඇඟිලි 2ක් හෝ ඊට වැඩි ගණනක් අදින්න"</li>\n<li>"විශාලනය සීරුමාරු කිරීමට ඇඟිලි 2ක් හෝ ඊට වැඩි ගණනක් කොනහන්න"</li></ul>\n\n<b>"තාවකාලිකව විශාලනය කිරීමට"</b>", විශාලනය ආරම්භ කර, අනතුරුව තිරයේ ඕනෑම තැනක ස්පර්ශ කර & අල්ලාගෙන සිටින්න.\n"<ul><li>"තිරය වටා චලනය කිරීමට අදින්න"</li>\n<li>"විශාලනය අඩු කිරීමට ඇඟිල්ල ඔසවන්න"</li></ul>\n\n"ඔබට යතුරු පුවරුවේ හෝ සංචාලන තීරුවේ දී විශාලනය වැඩි කළ නොහැකිය."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> න් <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> පිටුව"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"ප්රවේශ්යතා බොත්තම් කෙටිමඟ"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{කිසිත් නැත}=1{කාලසටහන් 1ක් සකසන ලදී}one{කාලසටහන් #ක් සකසන ලදී}other{කාලසටහන් #ක් සකසන ලදී}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"බාධා නොකරන්න"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"ප්රමුඛතා ප්රකාර"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"වැදගත් පුද්ගලයන් සහ යෙදුම් විසින් පමණක් දැනුම් දෙනු ලැබේ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"සක්රිය කිරීමේ වර්ගය තෝරන්න"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"වේලාව"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"උදා. \"9:30 – ප.ව. 5:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"දින දර්ශනය"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"උදා. \"පුද්ගලික දින දර්ශනය\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"බාධා සීමා කරන්න"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"කාල සටහන් මකන්න"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"මකන්න"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"දින දර්ශනයක් එක් කරන්න"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ඔබේ දින දර්ශනය භාවිතා කරන්න"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"කාල සටහන"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"කාලසටහනක් සකසන්න"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"කාල සටහන"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"නිශ්චිත වේලාවලදී දුරකථනය නිහඬ කරන්න"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ශබ්දය ඇති කරන බාධා කිරීම්වලට ඉඩ දෙන්න"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"දෘශ්ය බාධක අවහිර කරන්න"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"දෘශ්ය සංඥාවලට ඉඩ දෙන්න"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"ඔබට ළඟා විය හැකි දැනුම්දීම්"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"අවධානයෙන් සිටින්න"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"අමතර ක්රියා"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"සංදර්ශක සැකසීම්"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"සංදර්ශක විකල්ප"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"අඳුරු තේමාව සබල කරන්න"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"අඳුරු පසුබිමක ආලෝක පාඨයට කැමති වීමට OS සහ යෙදුම් මාරු කරන්න, එය ඇස්වලට ඉතා පහසු විය හැකි අතර සමහර උපාංග මත සැලකිය යුතු බැටරි සුරැකුම් ලබා දිය හැක"</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="mode_notification_filter_title" msgid="443728483176031977">"පෙරහන් බාධා"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"බාධා කිරීම් පෙරහන් කරනු නොලැබේ"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"පෙරන ලද දැනුම්දීම් සඳහා විකල්ප සංදර්ශන කරන්න"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Do Not Disturb ක්රියාත්මක වන්නේ මොන වේලාවටද"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"දැනුම්දීම් වෙතින් හඬ නැත"</string>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"භාවිතයට නොගත් ප්රවර්ග පෙන්වන්න"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"භාවිතයට නොගත් ප්රවර්ග සඟවන්න"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"සියලු"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{{time} දක්වා පැයක් සඳහා පමණක් එලාම වෙත වෙනස් කරන්න}one{{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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"නැවත නම් කරන්න"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"නිරූපකය වෙනස් කරන්න"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"නිරූපකය වෙනස් කරන්න"</string>
<string name="warning_button_text" msgid="1274234338874005639">"අවවාදයයි"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"වසන්න"</string>
<string name="device_feedback" msgid="5351614458411688608">"මෙම උපාංගය පිළිබඳ ප්රතිපෝෂණ යවන්න"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB සංවර්ධක විකල්පය භාවිත කිරීමට පෙර මෙම උපාංගයේ දත්ත කොටස ext4 වෙත පරිවර්තනය කළ යුතු ය. මෙම ප්රකාරයේ දී මෘදුකාංග අඛණ්ඩතාව සහතික කළ නොහැකි අතර, ආරම්භකය අගුළු හැර ඇති විට දුරකථනයේ ගබඩා කර ඇති ඕනෑම දත්තයක් අවදානමට ලක් විය හැක. 16KB විකල්පය සක්රිය කිරීමට මෙයින් පසු තවත් එක් නැවත පණගැන්වීමක් අවශ්ය වේ. ඔබ මෙම ප්රකාරයට පැමිණි පසු, ඔබට තනි නැවත පණ ගැන්වීමකින් 4KB සහ 16KB ප්රකාරය අතර මාරු විය හැක. මෙම ප්රකාර තුළ සමහර විශේෂාංග ක්රියාවිරහිත වනු ඇත, එබැවින් සමහර යෙදුම් ක්රියා නොකරනු ඇත. උපාංගය නිෂ්පාදන ප්රකාරයට ආපසු යාමට, ඔබට නැවත 4KB ප්රකාරයට මාරු වීමට අවශ්ය වන අතර පසුව උපාංගය කර්මාන්තශාලා යළි සකසන ආරම්භකය අගුළු දැමිය යුතු ය. උපාංගය සාර්ථකව Android සමග ආරම්භ වූ පසු, සංවර්ධක විකල්ප තුළ OEM අගුළු හැරීම ක්රියාවිරහිත කරන්න. උපාංගය මකා දමන අතර තහවුරු කිරීමෙන් පසු ගොනු පද්ධතිය ext4 වෙත වෙනස් කරනු ඇත. මෙය සම්පූර්ණ වූ පසු, කරුණාකර නැවත 16KB සබල කිරීමට ආපසු එන්න."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"සියලු දත්ත මකන්න"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ext4 වෙත දත්ත කොටස් යළි ෆෝමැට් කිරීම සහ පිස දැමීම අසමත් විය."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB ප්රකාරය සඳහා ආරම්භක අගුළු හැරීම අවශ්ය වේ"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"මෙම උපාංගයට 16KB සංවර්ධක විකල්පය භාවිත කිරීමට පෙර ආරම්භකය අගුළු හැර තිබිය යුතු ය. මෙම ප්රකාරයේ දී මෘදුකාංග අඛණ්ඩතාව සහතික කළ නොහැකි අතර, ආරම්භකය අගුළු හැර ඇති විට දුරකථනයේ ගබඩා කර ඇති ඕනෑම දත්තයක් අවදානමට ලක් විය හැක. 16KB ප්රකාරය සක්රිය කරන විට සියලුම පරිශීලක දත්ත සහ සැකසුම් මකා දමනු ලැබේ. ආරම්භකය අගුළු හැරීමෙන් පසු, 16KB විකල්පය සක්රිය කිරීමට නැවත පණ ගැන්වීම් දෙකක් අවශ්ය වේ. ඔබ මෙම ප්රකාරයට පැමිණි පසු, ඔබට තනි නැවත පණ ගැන්වීමකින් 4KB සහ 16KB ප්රකාරය අතර මාරු විය හැක. මෙම ප්රකාර තුළ සමහර විශේෂාංග ක්රියාවිරහිත වනු ඇත, එබැවින් සමහර යෙදුම් ක්රියා නොකරනු ඇත. උපාංගය නිෂ්පාදන ප්රකාරයට ආපසු යාමට, ඔබට නැවත 4KB ප්රකාරයට මාරු කිරීමට අවශ්ය වන අතර පසුව OEM/අගුළු ආරම්භකය (මෙම කර්මාන්තශාලාව යළි සකසන) අගුළු දැමීම අවශ්ය වේ. කරුණාකර ආරම්භකය අගුළු ඇර නැවත උත්සාහ කරන්න. <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> හි දී ඔබට මෙය කරන ආකාරය ගැන උපදෙස් බැලිය හැක"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB පිටු-දෘෂ්ටික ප්රකාරය භාවිත කරමින්"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"ඔබ සිටින්නේ පිටු-දෘෂ්ටික ප්රකාරයේ 4KB ප්රකාරයේ ය. මෙම ප්රකාරයේ දී මෘදුකාංග අඛණ්ඩතාව සහතික කළ නොහැකි අතර, ආරම්භකය අගුළු හැර ඇති විට දුරකථනයේ ගබඩා කර ඇති ඕනෑම දත්තයක් අවදානමට ලක් විය හැක. මෙම ප්රකාර තුළ සමහර විශේෂාංග ක්රියාවිරහිත වනු ඇත, එබැවින් සමහර යෙදුම් ක්රියා නොකරනු ඇත. නිෂ්පාදන ප්රකාරය නැවත ඇතුල් කිරීම සඳහා, ඔබ උපාංගයේ ආරම්භකය අගුළු දැමිය යුතු ය. වැඩිදුර කියවීමට තට්ටු කරන්න."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"ඔබ සිටින්නේ පිටු-දෘෂ්ටික ප්රකාරයේ 4KB ප්රකාරයේ ය. මෙම ප්රකාරයේ දී මෘදුකාංග අඛණ්ඩතාව සහතික කළ නොහැකි අතර, ආරම්භකය අගුළු හැර ඇති විට දුරකථනයේ ගබඩා කර ඇති ඕනෑම දත්තයක් අවදානමට ලක් විය හැක. මෙම ප්රකාර තුළ සමහර විශේෂාංග ක්රියාවිරහිත වනු ඇත, එබැවින් සමහර යෙදුම් ක්රියා නොකරනු ඇත. නිෂ්පාදන ප්රකාරය නැවත ඇතුල් කිරීම සඳහා, ඔබ උපාංගයේ ආරම්භකය අගුළු දැමිය යුතු ය. මෙමඟින් උපාංගයට නැවත කර්මාන්තශාලා යළි සැකසීම සිදු කරන අතර එය නිෂ්පාදන සැකසුම් වෙත ප්රතිසාධනය කරයි. උපාංගය සාර්ථකව Android සමග ආරම්භ වූ පසු, සංවර්ධක විකල්ප තුළ OEM අගුළු හැරීම ක්රියාවිරහිත කරන්න. උපාංගය Android වෙත පණ ගැන්වීමට අපොහොසත් වුවහොත් හෝ අස්ථායී නම්, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> වෙතින් නවතම කර්මාන්තශාලා පින්තූර සමග උපාංගය නැවත ෆ්ලෑෂ් කර; \'උපාංගය පිස දමන්න\', \'අගුළු ආරම්භකය\' සහ \'සියලුම කොටස් ෆ්ලෑෂ් කිරීමට බල කරන්න\' තෝරන්න."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB පිටු-දෘෂ්ටික ප්රකාරය භාවිත කරමින්"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"ඔබ සිටින්නේ පිටු-දෘෂ්ටික ප්රකාරයේ 16KB ප්රකාරයේ ය. මෙම ප්රකාරයේ දී මෘදුකාංග අඛණ්ඩතාව සහතික කළ නොහැකි අතර, ආරම්භකය අගුළු හැර ඇති විට දුරකථනයේ ගබඩා කර ඇති ඕනෑම දත්තයක් අවදානමට ලක් විය හැක. මෙම ප්රකාර තුළ සමහර විශේෂාංග ක්රියාවිරහිත වනු ඇත, එබැවින් සමහර යෙදුම් ක්රියා නොකරනු ඇත. නිෂ්පාදන ප්රකාරයට නැවත ඇතුළු වීමට, ඔබ 4K ප්රකාරයට ආපසු මාරු කර උපාංගයේ ආරම්භකය අගුළු දැමිය යුතු ය. වැඩිදුර කියවීමට තට්ටු කරන්න."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"ඔබ සිටින්නේ පිටු-දෘෂ්ටික ප්රකාරයේ 16KB ප්රකාරයේ ය. මෙම ප්රකාරයේ දී මෘදුකාංග අඛණ්ඩතාව සහතික කළ නොහැකි අතර, ආරම්භකය අගුළු හැර ඇති විට දුරකථනයේ ගබඩා කර ඇති ඕනෑම දත්තයක් අවදානමට ලක් විය හැක. මෙම ප්රකාර තුළ සමහර විශේෂාංග ක්රියාවිරහිත වනු ඇත, එබැවින් සමහර යෙදුම් ක්රියා නොකරනු ඇත. නිෂ්පාදන ප්රකාරයට නැවත ඇතුළු වීමට, ඔබ 4K ප්රකාරයට ආපසු මාරු කර උපාංගයේ ආරම්භකය අගුළු දැමිය යුතු ය. මෙමඟින් උපාංගයට නැවත කර්මාන්තශාලා යළි සැකසීම සිදු කරන අතර එය නිෂ්පාදන සැකසුම් වෙත ප්රතිසාධනය කරයි. උපාංගය සාර්ථකව Android සමග ආරම්භ වූ පසු, සංවර්ධක විකල්ප තුළ OEM අගුළු හැරීම ක්රියාවිරහිත කරන්න. උපාංගය Android වෙත පණ ගැන්වීමට අපොහොසත් වුවහොත් හෝ අස්ථායී නම්, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> වෙතින් නවතම කර්මාන්තශාලා පින්තූර සමග උපාංගය නැවත ෆ්ලෑෂ් කර; \'උපාංගය පිස දමන්න\', \'අගුළු ආරම්භකය\' සහ \'සියලුම කොටස් ෆ්ලෑෂ් කිරීමට බල කරන්න\' තෝරන්න."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB පිටු-දෘෂ්ටික ප්රකාරය"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"තව කියවන්න"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"දෝෂ වාර්තා හසුරුවනය"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"බහු පරිශීලකයින්ට ඉඩ දෙන්න"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
index f314f3f..a908bbe 100644
--- a/res/values-sk/arrays.xml
+++ b/res/values-sk/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Večierka"</item>
+ <item msgid="4152450357280759894">"Intenzívne"</item>
+ <item msgid="7096549258219399423">"Pútavé"</item>
+ <item msgid="2760716776980432977">"Spravované"</item>
+ <item msgid="601734478369121764">"Hviezda"</item>
+ <item msgid="6243809315432780521">"Kalendár"</item>
+ <item msgid="4913577903148415331">"Čas"</item>
+ <item msgid="3653377604690057780">"Kino"</item>
+ <item msgid="3843711267408385410">"Kvet"</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 841e761..2fab112 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Nastavenia načúvacieho zariadenia"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Skratka, kompatibilita s načúvadlami"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Predvoľba"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Váš audiológ nenaprogramoval žiadne predvoľby"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Predvoľbu sa nepodarilo aktualizovať"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Zvukový výstup"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Zvukový výstup"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Ďalšie informácie o odomknutí hodinkami"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Pridať hodinky"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Odstrániť hodinky"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Odomknutie odtlačkom prsta a tvárou"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Odomknutie tvárou a odtlačkom prsta"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Odomknutie tvárou a odtlačkom prsta pre prácu"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Vyžaduje sa nastavenie"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Bola pridaná tvár a odtlačky prsta"</string>
@@ -614,10 +615,8 @@
<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_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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Bude to chvíľu trvať"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Nastavuje sa súkromný priestor…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Chcete zariadenie reštartovať?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Podrobné zaznamenávanie údajov NFC je určené iba na účely vývoja. Ďalšie údaje NFC sú zahrnuté v hláseniach chýb, ktoré môžu obsahovať súkromné informácie. Ak chcete toto nastavenie zmeniť, reštartujte zariadenie."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Reštartovať"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Prenos"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"zrkadlenie"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Povoliť bezdrôtové zobrazenie"</string>
@@ -860,7 +889,7 @@
<string name="wifi_display_status_in_use" msgid="5904009697167947449">"Používa sa"</string>
<string name="wifi_display_status_not_available" msgid="8463750208946968594">"Nie je k dispozícii"</string>
<string name="wifi_display_options_title" msgid="7584326966240865043">"Možnosti bezdrôtového zobrazenia"</string>
- <string name="wifi_display_options_forget" msgid="3140558691112356024">"Odstrániť"</string>
+ <string name="wifi_display_options_forget" msgid="3140558691112356024">"Zabudnúť"</string>
<string name="wifi_display_options_done" msgid="7608851767701954020">"Hotovo"</string>
<string name="wifi_display_options_name" msgid="8181334945680312228">"Názov"</string>
<string name="wifi_band_24ghz" msgid="7322286660245127384">"2,4 GHz"</string>
@@ -1034,7 +1063,7 @@
<string name="wifi_connecting" msgid="7450277833386859724">"Pripája sa…"</string>
<string name="wifi_failed_connect_message" msgid="8538000546604347894">"Nepodarilo sa pripojiť k sieti"</string>
<string name="wifi_not_in_range_message" msgid="3885327464037574739">"Sieť nie je v dosahu"</string>
- <string name="wifi_forget" msgid="3485573280364015620">"Odstrániť"</string>
+ <string name="wifi_forget" msgid="3485573280364015620">"Zabudnúť"</string>
<string name="wifi_modify" msgid="5127926476383659412">"Upraviť"</string>
<string name="wifi_save" msgid="2312643132472226807">"Uložiť"</string>
<string name="wifi_failed_save_message" msgid="1830279872341387120">"Nepodarilo sa uložiť sieť"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptívne"</string>
<string name="brightness" msgid="6216871641021779698">"Úroveň jasu"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptácia jasu"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Informácie o adaptácii jasu"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Jas obrazovky sa automaticky prispôsobí prostrediu a aktivitám. Ručným posúvaním posúvača učíte adaptáciu jasu svoje preferované nastavenia."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Zapnuté"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Vypnuté"</string>
@@ -1383,7 +1413,7 @@
<string name="storage_menu_format_public" msgid="5567214442727034630">"Naformátovať ako prenosné"</string>
<string name="storage_menu_format_option" msgid="4886059624052908432">"Formátovať"</string>
<string name="storage_menu_migrate" msgid="2196088149560070193">"Migrovať dáta"</string>
- <string name="storage_menu_forget" msgid="5154017890033638936">"Odstrániť záznam"</string>
+ <string name="storage_menu_forget" msgid="5154017890033638936">"Zabudnúť"</string>
<string name="storage_menu_set_up" msgid="4401074025612064744">"Nastaviť"</string>
<string name="storage_menu_free" msgid="616100170298501673">"Uvoľniť miesto"</string>
<string name="storage_menu_manage" msgid="7465522758801346408">"Spravovať úložisko"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Vybrané používateľom: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Reč"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Rýchlosť kurzora"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Herné ovládače"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Presmerovať vibrácie"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Posielať vibrácie do herného ovládača, keď je pripojený"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Aj tak pokračovať"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Zrušiť"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Nastavenia priblíženia"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Presunutie jedným prstom"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Jedným prstom presuňte oblasť zväčšenia."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Dvoma prstami presuňte oblasť zväčšenia."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nie je k dispozícii iba pri zväčšovaní časti obrazovky"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Na priblíženie klepnite na tlačidlo"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Obrazovku si môžete rýchlo priblížiť, aby bol obsah väčší"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Priblíženie:</b><br/> {0,number,integer}. Skratkou spustite zväčšenie.<br/> {1,number,integer}. Klepnite na obrazovku.<br/> {2,number,integer}. Pohybujte sa po obrazovke presúvaním dvoch prstov.<br/> {3,number,integer}. Priblíženie upravte stiahnutím či roztiahnutím dvoch prstov.<br/> {4,number,integer}. Zväčšenie ukončíte skratkou.<br/><br/> <b>Dočasné priblíženie:</b><br/> {0,number,integer}. Skontrolujte, či je typ zväčšenia nastavený na celú obrazovku.<br/> {1,number,integer}. Skratkou spustite zväčšenie.<br/> {2,number,integer}. Pridržte ľubovoľné miesto na obrazovke.<br/> {3,number,integer}. Pohybujte sa po obrazovke presúvaním prsta.<br/> {4,number,integer}. Zväčšenie ukončíte zdvihnutím prsta."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Keď je priblíženie zapnuté, môžete si zväčšiť obsah obrazovky.\n\n"<b>"Urobíte to tak"</b>", že spustíte priblíženie a klepnete kamkoľvek na obrazovku.\n"<ul><li>"Zobrazenie posuniete presunutím dvoch alebo viacerých prstov."</li>\n<li>"Priblíženie upravíte stiahnutím dvoch alebo viacerých prstov."</li></ul>\n\n<b>"Ak chcete obsah priblížiť krátkodobo"</b>", spustite priblíženie a pridržte ľubovoľné miesto na obrazovke.\n"<ul><li>"Po obrazovke prechádzate presunutím."</li>\n<li>"Oddialite zdvihnutím prsta."</li></ul>\n\n"Nemôžete priblížiť klávesnicu ani navigačný panel."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. stránka z <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Skratka tlačidla dostupnosti"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Žiadne}=1{Bol nastavený 1 plán}few{Boli nastavené # plány}many{# schedules set}other{Bolo nastavených # plánov}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Režim bez vyrušení"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Režimy priority"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Prijímajte upozornenia iba od dôležitých ľudí a z dôležitých aplikácií"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Vybrať typ aktivácie"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Čas"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Napr. „9:30 – 17:00“."</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendár"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Napr. „Osobný kalendár“."</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Obmedzenie vyrušení"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Zapnite režim bez vyrušení"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Budíky a zvuky médií môžu vyrušiť"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Plány"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Odstrániť plány"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Odstrániť"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Upraviť"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Plány"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Plán"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Pridajte kalendár"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Použiť kalendár"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Rozpis"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Nastavte si plán"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Naplánovať"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Plán"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Stlmiť telefón v určitý čas"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Povolenie zvukových vyrušení"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokovať vizuálne vyrušenia"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Povoliť vizuálne signály"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Upozornenia, ku ktorým máte prístup"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Nerozptyľujte sa"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Ďalšie akcie"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Nastavenia obrazovky"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Možnosti zobrazenia"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"zapnutie tmavého motívu"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Prepnite operačný systém a aplikácie na preferovaný svetlý text na tmavom pozadí, čo môže byť menej namáhavé pre oči a významne prispeje k úspore batérie v niektorých zariadeniach"</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_notification_filter_title" msgid="443728483176031977">"Filtrovanie vyrušení"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nefiltrujú sa žiadne vyrušenia"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Možnosti obrazovky na filtrovanie upozornení"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Keď je zapnutý režim bez vyrušení"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Upozornenia bez zvuku"</string>
@@ -3665,6 +3726,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="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>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Vybrané aplikácie"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Žiadne"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Všetky"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Povoľte aplikáciám prekonávať nastavenia"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikácie, ktoré môžu vyrušiť"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Vyberte ďalšie aplikácie"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Zmena v budíkoch iba na hodinu do {time}}few{Zmena v budíkoch iba na # hodiny do {time}}many{Change to alarms only for # hours until {time}}other{Zmena v budíkoch iba na # hodín do {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Zmena na možnosť Iba budíky platná do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Zmena na možnosť Vždy prerušiť"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Premenovať"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Zmeniť ikonu"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Zmeniť ikonu"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Upozornenie"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Zavrieť"</string>
<string name="device_feedback" msgid="5351614458411688608">"Odoslať spätnú väzbu o zariadení"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Dátový oddiel tohto zariadenia je potrebné pred použitím možnosti 16 kB pre vývojárov konvertovať na ext4. V tomto režime nie je možné zaručiť integritu softvéru a všetky dáta uložené v telefóne môžu byť počas odomknutia zavádzacieho programu systému ohrozené. Aktivácia možnosti 16 kB si potom vyžiada ešte jedno reštartovanie. Keď budete v tomto režime, môžete prepínať medzi režimom 4 kB a 16 kB jedným reštartovaním. Niektoré funkcie budú v týchto režimoch vypnuté, takže niektoré aplikácie nemusia fungovať. Ak chcete zariadenie vrátiť do ostrého režimu, musíte prepnúť späť na režim 4 kB a potom uzamknúť zavádzací program systému, čím sa v zariadení obnovia výrobné nastavenia. Po úspešnom zapnutí Androidu v zariadení vypnite odomknutie OEM v sekcii Pre vývojárov. Zariadenie sa trvalo vymaže a systém súborov sa po potvrdení zmení na ext4. Po dokončení tohto kroku sa vráťte a znova zapnite režim 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Vymazať všetky údaje"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Nepodarilo sa zmeniť formát ani trvale vymazať oddiel dát na ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Režim 16 kB vyžaduje odomknutie zavádzacieho programu systému"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Toto zariadenie musí mať pred použitím možnosti pre vývojárov 16 kB odomknutý zavádzací program systému. V tomto režime nie je možné zaručiť integritu softvéru a všetky dáta uložené v telefóne môžu byť počas odomknutia zavádzacieho programu systému ohrozené. Pri aktivácii režimu 16 kB sa vymažú všetky dáta a nastavenia používateľa. Po odomknutí zavádzacieho programu systému si aktivácia možnosti 16 kB vyžiada dve reštartovania. Keď budete v tomto režime, môžete prepínať medzi režimom 4 kB a 16 kB jedným reštartovaním. Niektoré funkcie budú v týchto režimoch vypnuté, takže niektoré aplikácie nemusia fungovať. Ak chcete zariadenie vrátiť do ostrého režimu, musíte prepnúť späť na režim 4 kB a potom uzamknúť OEM alebo zavádzací program systému, čím sa v zariadení obnovia výrobné nastavenia. Odomknite zavádzací program systému a skúste to znova. Postup, ako to vykonať, nájdete na <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Používa sa režim 4 kB, ktorý nezohľadňuje stránkovanie"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Ste v režime 4 kB, ktorý nezohľadňuje stránkovanie. V tomto režime nie je možné zaručiť integritu softvéru a všetky dáta uložené v telefóne môžu byť počas odomknutia zavádzacieho programu systému ohrozené. Niektoré funkcie budú v týchto režimoch vypnuté, takže niektoré aplikácie nemusia fungovať. Ak chcete znova vstúpiť do ostrého režimu, musíte uzamknúť zavádzací program systému zariadenia. Klepnutím zobrazíte ďalšie informácie."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Ste v režime 4 kB, ktorý nezohľadňuje stránkovanie. V tomto režime nie je možné zaručiť integritu softvéru a všetky dáta uložené v telefóne môžu byť počas odomknutia zavádzacieho programu systému ohrozené. Niektoré funkcie budú v týchto režimoch vypnuté, takže niektoré aplikácie nemusia fungovať. Ak chcete znova vstúpiť do ostrého režimu, musíte uzamknúť zavádzací program systému zariadenia. Tým sa v zariadení znova obnovia výrobné nastavenia na nastavenia ostrého režimu. Po úspešnom zapnutí zariadenia do Androidu vypnite odomknutie OEM v sekcii Pre vývojárov. Ak sa zariadeniu nepodarí spustiť Android alebo bude nestabilné, znova nainštalujte najnovšie výrobné obrazy systému z webu <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> alebo prejdite na <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> a vyberte Wipe Device (Trvale vymazať zariadenie), Lock Bootloader (Uzamknúť zavádzací program systému) a Force Flash all partitions (Vynútiť inštaláciu obrazu systému vo všetkých oddieloch)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Používa sa režim 16 kB, ktorý nezohľadňuje stránkovanie"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Ste v režime 16 kB, ktorý nezohľadňuje stránkovanie. V tomto režime nie je možné zaručiť integritu softvéru a všetky dáta uložené v telefóne môžu byť počas odomknutia zavádzacieho programu systému ohrozené. Niektoré funkcie budú v týchto režimoch vypnuté, takže niektoré aplikácie nemusia fungovať. Ak chcete znova vstúpiť do ostrého režimu, musíte prepnúť späť do režimu 4 kB a potom uzamknúť zavádzací program systému zariadenia. Klepnutím zobrazíte ďalšie informácie."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Ste v režime 16 kB, ktorý nezohľadňuje stránkovanie. V tomto režime nie je možné zaručiť integritu softvéru a všetky dáta uložené v telefóne môžu byť počas odomknutia zavádzacieho programu systému ohrozené. Niektoré funkcie budú v týchto režimoch vypnuté, takže niektoré aplikácie nemusia fungovať. Ak chcete znova vstúpiť do ostrého režimu, musíte prepnúť späť do režimu 4 kB a potom uzamknúť zavádzací program systému zariadenia. Tým sa v zariadení znova obnovia výrobné nastavenia na nastavenia ostrého režimu. Po úspešnom zapnutí zariadenia do Androidu vypnite odomknutie OEM v sekcii Pre vývojárov. Ak sa zariadeniu nepodarí spustiť Android alebo bude nestabilné, znova nainštalujte najnovšie výrobné obrazy systému z webu <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> alebo prejdite na <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> a vyberte Wipe Device (Trvale vymazať zariadenie), Lock Bootloader (Uzamknúť zavádzací program systému) a Force Flash all partitions (Vynútiť inštaláciu obrazu systému vo všetkých oddieloch)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Režim 16 kB nezohľadňujúci stránkovanie"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Ďalšie informácie"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Obsluha hlásení chýb"</string>
@@ -5011,7 +5075,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Používať pripnutie aplikácie"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Používať nastavenia pre vývojárov"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Používať tlačovú službu"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Povoliť viacero používateľov"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"povoliť, viacero, používateľ, povolenie, veľa"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"viacerí, používatelia, profily, ľudia, účty, prepnúť, mnoho"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Používať bezdrôtové ladenie"</string>
@@ -5139,7 +5204,7 @@
<string name="bluetooth_details_audio_device_type_unknown" msgid="5299284975435974206">"Nenastavené"</string>
<string name="bluetooth_details_audio_device_type_speaker" msgid="3706227767994792124">"Reproduktor"</string>
<string name="bluetooth_details_audio_device_type_headphones" msgid="7644588291215033798">"Slúchadlá"</string>
- <string name="bluetooth_details_audio_device_type_hearing_aid" msgid="6311786545025321187">"Načúvacie zariadenie"</string>
+ <string name="bluetooth_details_audio_device_type_hearing_aid" msgid="6311786545025321187">"Načúvadlo"</string>
<string name="bluetooth_details_audio_device_type_carkit" msgid="1866236563013629394">"Auto"</string>
<string name="bluetooth_details_audio_device_type_other" msgid="7019481234617207563">"Iné"</string>
<string name="ingress_rate_limit_title" msgid="2106694002836274350">"Limit rýchlosti sťahovania v sieti"</string>
@@ -5355,4 +5420,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml
index 7257ead..bd9926a 100644
--- a/res/values-sl/arrays.xml
+++ b/res/values-sl/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Čas za spanje"</item>
+ <item msgid="4152450357280759894">"Vožnja"</item>
+ <item msgid="7096549258219399423">"Poglobljeno"</item>
+ <item msgid="2760716776980432977">"Upravljano"</item>
+ <item msgid="601734478369121764">"Zvezda"</item>
+ <item msgid="6243809315432780521">"Koledar"</item>
+ <item msgid="4913577903148415331">"Čas"</item>
+ <item msgid="3653377604690057780">"Gledališče"</item>
+ <item msgid="3843711267408385410">"Roža"</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 9c64e81..0f871be 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Nastavitve slušnega aparata"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Bližnjica, združljivost s slušnimi aparati"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Prednastavljeno"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Avdiolog ni programiral nobenih prednastavljenih vrednosti"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Prednastavljenih vrednosti ni bilo mogoče posodobiti"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Zvočni izhod"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"O zvočnem izhodu"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Preberite več o odklepanju z uro."</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Dodaj uro"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Odstranitev ure"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Odklepanje s prstnim odtisom in obrazom"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Odklepanje z obrazom in prstnim odtisom"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Odklepanje z obrazom in prstnim odtisom za delo"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Potrebna je nastavitev"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Obraz in prstni odtisi so dodani."</string>
@@ -614,10 +615,8 @@
<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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Zasebni prostori niso primerni za aplikacije, ki se morajo izvajati v ozadju ali pošiljajo nujna obvestila. Mednje sodijo na primer zdravstvene aplikacije. To je zato, ker so obvestila in dejavnost v ozadju ustavljeni, kadar je prostor zaklenjen.\n\nAplikacije v zasebnem prostoru ne bodo prikazane v upravitelju dovoljenj, na nadzorni plošči za zasebnost in v drugih nastavitvah, kadar je zasebni prostor zaklenjen.\n\nZasebnega prostora ni mogoče premakniti v novo napravo. Če želite zasebni prostor uporabljati v drugi napravi, morate nastaviti novega.\n\nVsakdo, ki vašo napravo poveže z računalnikom ali v napravo namesti škodljive aplikacije, bo morda lahko dostopal do vašega zasebnega prostora."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Zasebni prostori niso primerni za aplikacije, ki se morajo izvajati v ozadju ali pošiljajo nujna obvestila. Mednje sodijo na primer zdravstvene aplikacije. To je zato, ker so obvestila in dejavnost v ozadju ustavljeni, kadar je prostor zaklenjen.\n\nAplikacije v zasebnem prostoru ne bodo prikazane v upravitelju dovoljenj, na nadzorni plošči za zasebnost in v drugih nastavitvah, kadar je zasebni prostor zaklenjen.\n\nZasebnega prostora ni mogoče obnoviti v novo napravo. Če želite zasebni prostor uporabljati v drugi napravi, morate nastaviti novega.\n\nVsakdo, ki vašo napravo poveže z računalnikom ali v napravo namesti zlonamerne aplikacije, bo morda lahko dostopal do vašega zasebnega prostora."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Preberite več o zasebnem prostoru"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"To bo trajalo nekaj trenutkov"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Nastavljanje zasebnega prostora …"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vnovični zagon?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Podrobno zapisovanje dnevnika za NFC je namenjeno samo za razvoj. Dodatni podatki NFC so vključeni v poročilih o napakah, ki morda vsebujejo zasebne podatke. Če želite spremeniti to nastavitev, znova zaženite napravo."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Zaženi znova"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Predvajanje"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"zrcaljenje"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Omogočanje brezžičnega zaslona"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Prilagodljive"</string>
<string name="brightness" msgid="6216871641021779698">"Raven svetlosti"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Prilagodljiva svetlost"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"O prilagodljivi svetlosti"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Svetlost zaslona se bo samodejno prilagajala glede na okolje in dejavnosti. Če želite, da funkcija za prilagodljivo svetlost hitreje spozna vaše želje, lahko ročno premaknete drsnik."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Vklopljeno"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Izklopljeno"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Uporabniško izbrano: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Govor"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Hitrost kazalca"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Krmilnik za igre"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Preusmeritev vibriranja"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Pošiljanje vibriranja v krmilnik za igre, ko je povezan"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Vseeno nadaljuj"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Prekliči"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Nastavitve povečave"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Pomikanje z enim prstom"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Območje povečave premikajte z vlečenjem enega prsta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Območje povečave premikajte z vlečenjem dveh prstov."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ni na voljo pri povečavi samo dela zaslona"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Če želite povečati, se dotaknite gumba"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Hitro povečajte zaslon za povečavo vsebine."</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Če želite povečati:</b><br/> {0,number,integer}. Z bližnjico vklopite povečavo.<br/> {1,number,integer}. Dotaknite se zaslona.<br/> {2,number,integer}. Po zaslonu se pomikajte z vlečenjem dveh prstov.<br/> {3,number,integer}. Stopnjo povečave prilagodite tako, da prsta razmaknete ali primaknete.<br/> {4,number,integer}. Z bližnjico izklopite povečavo.<br/><br/> <b>Povečavo začasno vklopite tako:</b><br/> {0,number,integer}. Prepričajte se, da je vrsta povečave nastavljena na celozaslonski način.<br/> {1,number,integer}. Z bližnjico vklopite povečavo.<br/> {2,number,integer}. Dotaknite se poljubne točke na zaslonu in jo pridržite.<br/> {3,number,integer}. Po zaslonu se pomikajte z vlečenjem prsta.<br/> {4,number,integer}. Dvignite prst, da izklopite povečavo."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Ko je povečava vklopljena, lahko povečate prikaz na zaslonu.\n\n"<b>"Če želite povečati prikaz"</b>", zaženite povečavo, nato pa se dotaknite poljubnega mesta na zaslonu.\n"<ul><li>"Povlecite z dvema ali več prsti po zaslonu, če se želite pomikati."</li>\n<li>"Primaknite ali razmaknite dva ali več prstov, če želite prilagoditi povečavo."</li></ul>\n\n<b>"Če želite začasno povečati prikaz"</b>", zaženite povečavo ter se dotaknite poljubnega mesta na zaslonu in ga pridržite.\n"<ul><li>"Povlecite, če se želite premikati po zaslonu."</li>\n<li>"Dvignite prst, če želite zmanjšati povečavo."</li></ul>\n\n"Povečava ni mogoča na tipkovnici ali v vrstici za krmarjenje."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. stran od <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Bližnjica gumba za dostopnost"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Noben}=1{Nastavljen je 1 razpored}one{Nastavljen je # razpored}two{Nastavljena sta # razporeda}few{Nastavljeni so # razporedi}other{Nastavljenih je # razporedov}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ne moti"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prednostni načini"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Prejemajte samo obvestila pomembnih oseb in aplikacij."</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Izbira vrste aktiviranja"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Čas"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Primer: »9.30–17.00«"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Koledar"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Primer: »Osebni koledar«"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Omejitev prekinitev"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Vklop načina »Ne moti«"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmi in zvoki predstavnosti lahko preglasijo"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Časovni razporedi"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Izbriši razporede"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Izbriši"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Uredi"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Razporedi"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Razpored"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Dodajte koledar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Uporabite koledar"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Razpored"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Nastavitev razporeda"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Razpored"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Časovni razpored"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Utišanje telefona ob določenih urah"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Dovoljene zvočne motnje"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blokiranje vizualnih motenj"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Dovoli vizualne znake"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Obvestila, za katera ste dosegljivi"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Ostanite zbrani"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Dodatna dejanja"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Nastavitve zaslona"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Možnosti prikaza"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"omogoči temno temo"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Preklopite nastavitev operacijskega sistema in aplikacij na svetlo besedilo na temnem ozadju, saj je to manj naporno za oči in v nekaterih napravah bistveno prispeva k varčevanju z energijo baterije"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Brez sprememb prikaza}=1{{effect_1}}=2{{effect_1} in {effect_2}}=3{{effect_1}, {effect_2} in {effect_3}}one{{effect_1}, {effect_2} in še #}two{{effect_1}, {effect_2} in še #}few{{effect_1}, {effect_2} in še #}other{{effect_1}, {effect_2} in še #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtriraj prekinitve"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nobene prekinitve niso filtrirane"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Možnosti prikaza za filtrirana obvestila"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Ko je vklopljen način »Ne moti«"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Brez zvočnega opozarjanja na obvestila"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorije"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Drugo"</string>
<string name="no_channels" msgid="4716199078612071915">"Ta aplikacija ni objavila nobenih obvestil."</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Pokaži neuporabljene kategorije"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Dodatne nastavitve v aplikaciji"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Pokaži neuporabljene kategorije"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Skrij neuporabljene kategorije"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Izbrane aplikacije"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Nobena"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Vse"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Aplikacijam dovoli preglasitev"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikacije, ki lahko preglasijo"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Izberite več aplikacij"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Sprememba na samo alarme za eno uro do {time}}one{Sprememba na samo alarme za # uro do {time}}two{Sprememba na samo alarme za # uri do {time}}few{Sprememba na samo alarme za # ure do {time}}other{Sprememba na samo alarme za # ur do {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Sprememba na samo alarme do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Sprememba na vedno prekini"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Preimenuj"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Spremeni ikono"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Spremeni ikono"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Opozorilo"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Zapri"</string>
<string name="device_feedback" msgid="5351614458411688608">"Povratne informacije o tej napravi"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Preden začnete uporabljati 16-kilobajtno možnost za razvijalce, je treba podatkovno particijo te naprave pretvoriti v sistem ext4. Celovitosti programske opreme v tem načinu ni mogoče zajamčiti in vsi podatki, shranjeni v telefonu, medtem ko je zagonski nalagalnik odklenjen, so morda ogroženi. Aktiviranje 16-kilobajtne možnosti bo po tem vnovičnem zagonu terjalo še enega. Ko ste v tem načinu, lahko preklapljate med 4-kilobajtnim in 16-kilobajtnim načinom z enim vnovičnim zagonom. V teh načinih bodo nekatere funkcije onemogočene, zato nekatere aplikacije morda ne bodo delovale. Če želite napravo povrniti v način za splošno razpoložljivost, morate preklopiti nazaj na 4-kilobajtni način in zakleniti zagonski nalagalnik, s čimer ponastavite napravo na tovarniške nastavitve. Ko se naprava uspešno zažene v sistemu Android, v možnostih za razvijalce onemogočite odklepanje OEM. Podatki v napravi bodo izbrisani in podatkovni sistem bo po potrditvi spremenjen v sistem ext4. Ko se to dokonča, se vrnite in znova omogočite 16-kilobajtni način."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Izbriši vse podatke"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Formatiranje v sistem ext4 in brisanje particije s podatki ni uspelo."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Za 16-kilobajtni način je obvezno odklepanje zagonskega nalagalnika"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Preden začnete uporabljati 16-kilobajtno možnost za razvijalce, morate v tej napravi odkleniti zagonski nalagalnik. Celovitosti programske opreme v tem načinu ni mogoče zajamčiti in vsi podatki, shranjeni v telefonu, medtem ko je zagonski zaganjalnik odklenjen, so morda ogroženi. Vsi podatki uporabnika in nastavitve bodo pri aktiviranju 16-kilobajtnega načina izbrisani. Ko je zagonski nalagalnik odklenjen, aktiviranje 16-kilobajtne možnosti terja dva vnovična zagona. Ko ste v tem načinu, lahko preklapljate med 4-kilobajtnim in 16-kilobajtnim načinom z enim vnovičnim zagonom. V teh načinih bodo nekatere funkcije onemogočene, zato nekatere aplikacije morda ne bodo delovale. Če želite napravo povrniti v način za splošno razpoložljivost, morate preklopiti nazaj na 4-kilobajtni način in nato napravo zakleniti z zaklepanjem OEM oziroma v napravi zakleniti zagonski nalagalnik (s čimer se sproži ponastavitev na tovarniške nastavitve). Odklenite zagonski nalagalnik in poskusite znova. Navodila za ta postopek so na voljo na <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Uporaba 4-kilobajtnega načina, neodvisnega od velikosti strani"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Ste v 4-kilobajtnem načinu, neodvisnem od velikosti strani. Celovitosti programske opreme v tem načinu ni mogoče zajamčiti in vsi podatki, shranjeni v telefonu, medtem ko je zagonski nalagalnik odklenjen, so morda ogroženi. V teh načinih bodo nekatere funkcije onemogočene, zato nekatere aplikacije morda ne bodo delovale. Če želite znova v način za splošno razpoložljivost, morate zakleniti zagonski nalagalnik naprave. Dotaknite se, če želite prebrati več."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Ste v 4-kilobajtnem načinu, neodvisnem od velikosti strani. Celovitosti programske opreme v tem načinu ni mogoče zajamčiti in vsi podatki, shranjeni v telefonu, medtem ko je zagonski nalagalnik odklenjen, so morda ogroženi. V teh načinih bodo nekatere funkcije onemogočene, zato nekatere aplikacije morda ne bodo delovale. Če želite znova v način za splošno razpoložljivost, morate zakleniti zagonski nalagalnik naprave. S tem znova ponastavite napravo na tovarniške nastavitve in jo povrnete na nastavitve za splošno razpoložljivost. Ko se naprava uspešno zažene v sistemu Android, v možnostih za razvijalce onemogočite odklepanje OEM. Če se napravi ne uspe zagnati v sistemu Android ali ni stabilna, jo znova posodobite z najnovejšimi tovarniškimi slikami z naslova <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ali uporabite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> in izberite možnosti »Wipe Device«, »Lock Bootloader« in »Force Flash all partitions.«"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Uporaba 16-kilobajtnega načina, neodvisnega od velikosti strani"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Ste v 16-kilobajtnem načinu, neodvisnem od velikosti strani. Celovitosti programske opreme v tem načinu ni mogoče zajamčiti in vsi podatki, shranjeni v telefonu, medtem ko je zagonski nalagalnik odklenjen, so morda ogroženi. V teh načinih bodo nekatere funkcije onemogočene, zato nekatere aplikacije morda ne bodo delovale. Če želite znova v način za splošno razpoložljivost, morate preklopiti nazaj na 4-kilobajtni način, nato pa morate zakleniti zagonski nalagalnik naprave. Dotaknite se, če želite prebrati več."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Ste v 16-kilobajtnem načinu, neodvisnem od velikosti strani. Celovitosti programske opreme v tem načinu ni mogoče zajamčiti in vsi podatki, shranjeni v telefonu, medtem ko je zagonski zaganjalnik odklenjen, so morda ogroženi. V teh načinih bodo nekatere funkcije onemogočene, zato nekatere aplikacije morda ne bodo delovale. Če želite znova v tovarniški način, morate preklopiti nazaj na 4-kilobajtni način, nato pa morate zakleniti zagonski nalagalnik naprave. S tem znova ponastavite napravo na tovarniške nastavitve. Ko se naprava uspešno zažene v sistemu Android, v možnostih za razvijalce onemogočite odklepanje OEM. Če se napravi ne uspe zagnati v sistemu Android ali ni stabilna, jo znova posodobite z najnovejšimi tovarniškimi slikami z naslova <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ali uporabite <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> in izberite možnosti »Wipe Device«, »Lock Bootloader« in »Force Flash all partitions.«"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16-kilobajtni način za neodvisno velikost strani"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Več o tem"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Rutina za obravnavo poročila o napakah"</string>
@@ -5011,7 +5075,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Uporabi pripenjanje aplikacije"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Uporabi možnosti za razvijalce"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Uporabi storitev tiskanja"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Dovoli več uporabnikov"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"dovoli, več, uporabnik, dovoljenje"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"več, uporabniki, profili, osebe, računi, preklopi, veliko"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Uporabi brezžično odpravljanje napak"</string>
@@ -5355,4 +5420,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-sq/arrays.xml b/res/values-sq/arrays.xml
index c1adaba..e034cc0 100644
--- a/res/values-sq/arrays.xml
+++ b/res/values-sq/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Orari i gjumit"</item>
+ <item msgid="4152450357280759894">"Udhëtim me makinë"</item>
+ <item msgid="7096549258219399423">"Përfshirës"</item>
+ <item msgid="2760716776980432977">"I menaxhuar"</item>
+ <item msgid="601734478369121764">"Yll"</item>
+ <item msgid="6243809315432780521">"Kalendari"</item>
+ <item msgid="4913577903148415331">"Koha"</item>
+ <item msgid="3653377604690057780">"Teatri"</item>
+ <item msgid="3843711267408385410">"Lule"</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 4667216..9568e81 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -77,6 +77,8 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Cilësimet e pajisjes ndihmëse për dëgjimin"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shkurtore, përputhshmëria me aparatet e dëgjimit"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Paravendosja"</string>
+ <!-- no translation found for bluetooth_hearing_aids_presets_empty_list_message (4240241268432643259) -->
+ <skip />
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Paravendosja nuk mund të përditësohej"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Dalja e audios"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Rreth daljes së audios"</string>
@@ -437,7 +439,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Mëso më shumë rreth \"Shkyçjes me orë\""</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Shto orën"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Hiq orën"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Shkyçja me gjurmë gishti dhe me fytyrë"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Shkyçja me fytyrë dhe me gjurmën e gishtit"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Shkyçja me fytyrë dhe gjurmë gishti për profilin e punës"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Nevojitet konfigurimi"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Fytyra dhe gjurmët e gishtave u shtuan"</string>
@@ -614,10 +616,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Instalo aplikacionet"</b>\n"Instalo aplikacionet që dëshiron t\'i mbash private në hapësirën tënde"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Ki parasysh"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Aplikacionet ndalojnë kur ti e kyç hapësirën"</b>\n"Kur e kyç hapësirën, aplikacionet në hapësirën tënde ndalojnë dhe nuk do të marrësh njoftime nga ato"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Hapësirat private nuk janë të përshtatshme për aplikacionet që ekzekutohen në sfond ose që dërgojnë njoftime kritike, si p.sh. për aplikacionet mjekësore. Kjo ndodh sepse njoftimet dhe aktiviteti në sfond ndalojnë kur hapësira jote kyçet.\n\nAplikacionet në hapësirën tënde private nuk do të shfaqen te menaxheri i lejeve, paneli i privatësisë dhe cilësime të tjera kur hapësira jote private kyçet.\n\nHapësira jote private nuk mund të zhvendoset në një pajisje të re. Do të duhet të konfigurosh një hapësirë tjetër private nëse dëshiron ta përdorësh atë në një pajisje tjetër.\n\nÇdo person që e lidh pajisjen tënde me një kompjuter ose instalon aplikacione të dëmshme në pajisjen tënde mund të jetë në gjendje që të qaset në hapësirën tënde private."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Hapësirat private nuk janë të përshtatshme për aplikacionet që ekzekutohen në sfond ose që dërgojnë njoftime kritike, si p.sh. për aplikacionet mjekësore. Kjo ndodh sepse njoftimet dhe aktiviteti në sfond ndalojnë kur hapësira jote kyçet.\n\nAplikacionet në hapësirën tënde private nuk do të shfaqen te menaxheri i lejeve, paneli i privatësisë dhe cilësime të tjera kur hapësira private kyçet.\n\nHapësira jote private nuk mund të restaurohet në një pajisje të re. Do të duhet të konfigurosh një hapësirë tjetër nëse dëshiron ta përdorësh atë në një pajisje tjetër.\n\nÇdo person që e lidh pajisjen tënde me një kompjuter ose instalon aplikacione keqdashëse në pajisjen tënde mund të jetë në gjendje që të qaset në hapësirën tënde private."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Mëso më shumë rreth hapësirës private"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Kjo do të zgjasë disa minuta"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Hapësira private po konfigurohet…"</string>
@@ -851,6 +851,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Të riniset pajisja?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Regjistrimi i detajuar i lidhjes NFC është i planifikuar vetëm për qëllime zhvillimi. Të dhënat shtesë të lidhjes NFC përfshihen në raportet e defekteve në kod, të cilat mund të përmbajnë informacione private. Rinise pajisjen tënde për ta ndryshuar këtë cilësim."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Rinis"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Transmetimi"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"pasqyro"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Aktivizo ekranin wireless"</string>
@@ -1192,6 +1222,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Me përshtatje"</string>
<string name="brightness" msgid="6216871641021779698">"Niveli i ndriçimit"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Ndriçimi me përshtatje"</string>
+ <!-- no translation found for auto_brightness_content_description_title (237734599617077375) -->
+ <skip />
<string name="auto_brightness_description" msgid="6807117118142381193">"Ndriçimi i ekranit tënd do t\'i përshtatet automatikisht mjedisit dhe aktiviteteve të tua. Mund ta lëvizësh rrëshqitësin manualisht për të ndihmuar ndriçimin me përshtatje që të mësojë preferencat e tua."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Aktiv"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Joaktiv"</string>
@@ -1972,6 +2004,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Zgjedhur nga përdoruesi: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Ligjërimi"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Shpejtësia e treguesit"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Kontrolluesi i lojës"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Ridrejto dridhjen"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Dërgoji dridhjet te kontrolluesi i lojës kur të lidhet"</string>
@@ -2094,7 +2132,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Vazhdo gjithsesi"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Anulo"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Cilësimet e zmadhimit"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Zgjerimi me një gisht"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Zhvendos zonë e zmadhimit duke zvarritur një gisht."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Zhvendos zonën e zmadhimit duke zvarritur dy gishta."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Nuk ofrohet kur zmadhohet vetëm një pjesë e ekranit"</string>
@@ -2118,6 +2159,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Trokit te një buton për të zmadhuar"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zmadho me shpejtësi në ekran për ta bërë përmbajtjen më të madhe"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Për të zmadhuar:</b><br/> {0,number,integer}. Përdor shkurtoren për të filluar zmadhimin<br/> {1,number,integer}. Trokit në ekran<br/> {2,number,integer}. Zvarrit 2 gishta për të lëvizur nëpër ekran<br/> {3,number,integer}. Bashko 2 gishta për të rregulluar zmadhimin<br/> {4,number,integer}. Përdor shkurtoren për të ndaluar zmadhimin<br/><br/><b>Për ta zmadhuar përkohësisht:</b><br/> {0,number,integer}. Sigurohu që lloji i zmadhimit të jetë caktuar në ekran të plotë<br/> {1,number,integer}. Përdor shkurtoren për të filluar zmadhimin<br/> {2,number,integer}. Prek dhe mbaj shtypur diku në ekran<br/> {3,number,integer}. Zvarrit gishtin për të lëvizur nëpër ekran<br/> {4,number,integer}. Ngrije gishtin për të ndaluar zmadhimin"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kur aktivizohet zmadhimi, mund të zmadhosh mbi ekranin tënd.\n\n"<b>"Për të zmadhuar"</b>", nis zmadhimin, më pas trokit diku në ekran.\n"<ul><li>"Zvarrit 2 ose më shumë gishta për të lëvizur"</li>\n<li>"Afro 2 ose më shumë gishta për të rregulluar zmadhimin"</li></ul>\n\n<b>"Për të zmadhuar përkohësisht"</b>", nis zmadhimin dhe më pas prek dhe mbaj të shtypur diku në ekran.\n"<ul><li>"Zvarrit për të lëvizur nëpër ekran"</li>\n<li>"Ngri gishtin për të zvogëluar"</li></ul>\n\n"Nuk mund të zmadhosh te tastiera ose shiriti i navigimit."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Faqja <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> nga <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Shkurtorja e butonit të qasshmërisë"</string>
@@ -3323,13 +3368,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Asnjë}=1{1 orar i caktuar}other{# orare të caktuara}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Mos shqetëso"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Modalitetet e përparësisë"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Merr njoftime vetëm nga aplikacionet dhe personat e rëndësishëm"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Zgjidh llojin e aktivizimit"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Ora"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Për shembull, \"9:30 - 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendari"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Për shembull, \"Kalendari personal\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Kufizo ndërprerjet"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Aktivizo \"Mos shqetëso\""</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarmet dhe tingujt e medias mund ta ndërpresin"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Oraret"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Fshi oraret"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Fshi"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Redakto"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Oraret"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Orari"</string>
@@ -3337,11 +3399,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Shto një kalendar"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Përdor kalendarin tënd"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Orari"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Cakto një orar"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Orari"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Vendose telefonin në heshtje në kohë të caktuara"</string>
@@ -3352,7 +3413,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Lejo ndërprerjet që lëshojnë tinguj"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blloko shqetësimet vizuale"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Lejo sinjalet vizuale"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Njoftimet që mund të marrësh"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Ruaj përqendrimin"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Veprime të tjera"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Cilësimet e ekranit"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Opsionet e paraqitjes"</string>
@@ -3369,6 +3430,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"aktivizo temën e errët"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Bëj që sistemi operativ dhe aplikacionet të preferojnë tekstin e ndriçuar mbi sfond të errët, gjë që mund të jetë më e lehtë për sytë dhe të mundësojë një kursim të konsiderueshëm të baterisë në disa pajisje"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Asnjë ndryshim i paraqitjes}=1{{effect_1}}=2{{effect_1} dhe {effect_2}}=3{{effect_1}, {effect_2} dhe {effect_3}}other{{effect_1}, {effect_2} dhe # të tjera}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtro ndërprerjet"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Nuk filtrohet asnjë ndërprerje"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Opsionet e paraqitjes për njoftimet e filtruara"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kur modaliteti \"Mos shqetëso\" është aktiv"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Asnjë tingull nga njoftimet"</string>
@@ -3665,6 +3728,8 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategoritë"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Të tjera"</string>
<string name="no_channels" msgid="4716199078612071915">"Ky aplikacion nuk ka postuar asnjë njoftim"</string>
+ <!-- no translation found for no_recent_channels (5068574296267584043) -->
+ <skip />
<string name="app_settings_link" msgid="6725453466705333311">"Cilësime shtesë në aplikacion"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Shfaq kategoritë e papërdorura"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Fshih kategoritë e papërdorura"</string>
@@ -3774,6 +3839,8 @@
<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_all_apps" msgid="705700582778445484">"Të gjitha"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Lejo aplikacionet ta anulojnë"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Aplikacionet që mund ta ndërpresin"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Zgjidh më shumë aplikacione"</string>
@@ -3810,12 +3877,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Ndrysho vetëm tek alarmet për një orë deri në {time}}other{Ndrysho vetëm tek alarmet për # orë deri në {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ndrysho në gjendjen \"vetëm alarmet\" deri në <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Ndrysho te \"ndërprit gjithmonë\""</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Riemërto"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Ndrysho ikonën"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Ndrysho ikonën"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Paralajmërim"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Mbyll"</string>
<string name="device_feedback" msgid="5351614458411688608">"Dërgo komente për këtë pajisje"</string>
@@ -4870,14 +4934,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Ndarja e të dhënave të kësaj pajisjeje duhet të konvertohet në ext4 para se të përdoret opsioni i zhvilluesit 16 KB. Integriteti i softuerit nuk mund të garantohet në këtë modalitet dhe mund të rrezikohet çdo e dhënë e ruajtur në telefon kur ngarkuesi i fillimit është i shkyçur. Aktivizimi i opsioni 16 KB do të kërkojë një rinisje tjetër pas kësaj. Pasi të jesh në këtë modalitet, mund t\'i ndërrosh modalitetet 4 KB dhe 16 KB me vetëm një rinisje. Disa veçori do të çaktivizohen në këto modalitete, kështu që disa aplikacione mund të mos funksionojnë. Për ta kthyer pajisjen në modalitetin e prodhimit, do të duhet që të kthehesh përsëri në modalitetin 4 KB dhe të kyçësh më pas ngarkuesin e fillimit, i cili e rivendos pajisjen në gjendje fabrike. Pasi pajisja të niset me sukses në Android, çaktivizo shkyçjen e OEM-së tek \"Opsionet e zhvilluesit\". Pajisja do të pastrohet dhe sistemi i skedarëve do të ndryshohet në ext4 pas konfirmimit. Pasi të përfundojë kjo, kthehu për të aktivizuar përsëri 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Spastro të gjitha të dhënat"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Riformatimi dhe pastrimi i ndarjes së të dhënave në ext4 dështoi."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Shkyçja e ngarkuesit të fillimit kërkohet për modalitetin 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Kjo pajisje duhet ta ketë të shkyçur ngarkuesin e fillimit para se të përdoret opsioni i zhvilluesit 16 KB. Integriteti i softuerit nuk mund të garantohet në këtë modalitet dhe mund të rrezikohet çdo e dhënë e ruajtur në telefon kur ngarkuesi i fillimit është i shkyçur. Të gjitha të dhënat dhe cilësimet e përdoruesit do të pastrohen kur të aktivizohet modaliteti 16 KB. Kur të shkyçet ngarkuesi i fillimit, aktivizimi i opsionit 16 KB do të kërkojë dy rinisje. Pasi të jesh në këtë modalitet, mund t\'i ndërrosh modalitetet 4 KB dhe 16 KB me vetëm një rinisje. Disa veçori do të çaktivizohen në këto modalitete, kështu që disa aplikacione mund të mos funksionojnë. Për ta kthyer pajisjen në modalitetin e prodhimit, do të duhet që të kthehesh përsëri në modalitetin 4 KB dhe më pas të kyçësh OEM-në/ngarkuesin e fillimit (që e rivendos pajisjen në gjendje fabrike). Shkyçe ngarkuesin e fillimit dhe provo përsëri. Mund t\'i shikosh udhëzimet se si ta bësh këtë në <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Po përdor modalitetin 4 KB të pavarësisë nga madhësia e faqes"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Je në modalitetin 4 KB të modalitetit të pavarësisë nga madhësia e faqes. Integriteti i softuerit nuk mund të garantohet në këtë modalitet dhe mund të rrezikohet çdo e dhënë e ruajtur në telefon kur ngarkuesi i fillimit është i shkyçur. Disa veçori do të çaktivizohen në këto modalitete, kështu që disa aplikacione mund të mos funksionojnë. Për të hyrë përsëri në modalitetin e prodhimit, duhet të kyçësh ngarkuesin e fillimit të pajisjes. Trokit për të lexuar më shumë."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Je në modalitetin 4 KB të modalitetit të pavarësisë nga madhësia e faqes. Integriteti i softuerit nuk mund të garantohet në këtë modalitet dhe mund të rrezikohet çdo e dhënë e ruajtur në telefon kur ngarkuesi i fillimit është i shkyçur. Disa veçori do të çaktivizohen në këto modalitete, kështu që disa aplikacione mund të mos funksionojnë. Për të hyrë përsëri në modalitetin e prodhimit, duhet të kyçësh ngarkuesin e fillimit të pajisjes. Ky veprim do ta rivendosë pajisjen në gjendje fabrike dhe do ta restaurojë te cilësimet e prodhimit. Pasi pajisja të niset me sukses në Android, çaktivizo shkyçjen e OEM-së tek \"Opsionet e zhvilluesit\". Nëse pajisja nuk arrin të niset në Android ose është e paqëndrueshme, riinstalo në pajisje imazhet më të fundit të fabrikës nga <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ose përdor <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> dhe zgjidh \"Pastro pajisjen\", \"Kyç ngarkuesin e fillimit\" dhe \"Riinstalo me forcë të gjitha ndarjet\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Po përdor modalitetin 16 KB të pavarësisë nga madhësia e faqes"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Je në modalitetin 16 KB të modalitetit të pavarësisë nga madhësia e faqes. Integriteti i softuerit nuk mund të garantohet në këtë modalitet dhe mund të rrezikohet çdo e dhënë e ruajtur në telefon kur ngarkuesi i fillimit është i shkyçur. Disa veçori do të çaktivizohen në këto modalitete, kështu që disa aplikacione mund të mos funksionojnë. Për të hyrë përsëri në modalitetin e prodhimit, duhet të kthehesh përsëri në modalitetin 4 KB dhe më pas të kyçësh ngarkuesin e fillimit të pajisjes. Trokit për të lexuar më shumë."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Je në modalitetin 16 KB të modalitetit të pavarësisë nga madhësia e faqes. Integriteti i softuerit nuk mund të garantohet në këtë modalitet dhe mund të rrezikohet çdo e dhënë e ruajtur në telefon kur ngarkuesi i fillimit është i shkyçur. Disa veçori do të çaktivizohen në këto modalitete, kështu që disa aplikacione mund të mos funksionojnë. Për të hyrë përsëri në modalitetin e prodhimit, duhet të kthehesh përsëri në modalitetin 4 KB dhe më pas të kyçësh ngarkuesin e fillimit të pajisjes. Ky veprim do ta rivendosë pajisjen në gjendje fabrike dhe do ta restaurojë te cilësimet e prodhimit. Pasi pajisja të niset me sukses në Android, çaktivizo shkyçjen e OEM-së tek \"Opsionet e zhvilluesit\". Nëse pajisja nuk arrin të niset në Android ose është e paqëndrueshme, riinstalo në pajisje imazhet më të fundit të fabrikës nga <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> ose përdor <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> dhe zgjidh \"Pastro pajisjen\", \"Kyç ngarkuesin e fillimit\" dhe \"Riinstalo me forcë të gjitha ndarjet\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Modaliteti 16 KB i pavarësisë nga madhësia e faqes"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Lexo më shumë"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Administruesi i raportit të defekteve në kod"</string>
@@ -5009,7 +5076,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Përdor gozhdimin e aplikacionit"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Përdor opsionet e zhvilluesit"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Përdor shërbimin e printimit"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Lejo disa përdorues"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"lejo, disa, përdorues, leje, shumë"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"disa, përdorues, profile, persona, llogari, shumë"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Përdor korrigjimin përmes Wi-Fi"</string>
@@ -5353,4 +5421,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml
index ad421a1..c85ed85 100644
--- a/res/values-sr/arrays.xml
+++ b/res/values-sr/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Време за спавање"</item>
+ <item msgid="4152450357280759894">"Вожња"</item>
+ <item msgid="7096549258219399423">"Имерзивно"</item>
+ <item msgid="2760716776980432977">"Управљано"</item>
+ <item msgid="601734478369121764">"Звезда"</item>
+ <item msgid="6243809315432780521">"Календар"</item>
+ <item msgid="4913577903148415331">"Време"</item>
+ <item msgid="3653377604690057780">"Позориште"</item>
+ <item msgid="3843711267408385410">"Цвет"</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 146d148..622ea6a 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Подешавања слушног апарата"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Пречица, компатибилност са слушним апаратима"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Задата подешавања"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Не постоје задата подешавања која је програмирао аудиолог"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Ажурирање задатих подешавања није успело"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудио излаз"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"О аудио излазу"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Сазнајте више о откључавању сата"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Додај сат"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Уклони сат"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Отисак прста и откључавање лицем"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Откључавање лицем и отиском прста"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Откључавање лицем и отиском прста за посао"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Треба да подесите"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Лице и отисци прста су додати"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Желите да рестартујете уређај?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"NFC евидентирање детаља је намењено само у сврхе програмирања. Додатни NFC подаци уврштени су у извештаје о грешкама, који могу да садрже приватне податке. Рестартујте уређај да бисте променили ово подешавање."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Рестартуј"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Пребацивање"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"пресликати"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Омогући бежични приказ"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Прилагодљиво"</string>
<string name="brightness" msgid="6216871641021779698">"Ниво осветљености"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Прилагодљива осветљеност"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"О приладољивој осветљености"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Осветљеност екрана ће се аутоматски прилагођавати окружењу и активностима. Можете ручно да померате клизач да би прилагодљиво подешавање осветљености научило шта вам одговара."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Укључено"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Искључено"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Ипак настави"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Откажи"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Подешавања увећања"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Померање једним прстом"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Померајте област за увећање превлачењем једног прста."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Померајте област за увећање превлачењем два прста."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Није доступно када се увећава само део екрана"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Додирните дугме да бисте зумирали"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Брзо увећајте екран да би садржај био већи"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Да бисте увећали:</b><br/> {0,number,integer}. Користите пречицу да бисте покренули увећање<br/> {1,number,integer}. Додирните екран<br/> {2,number,integer}. Превлачите помоћу 2 прста да бисте се кретали по екрану<br/> {3,number,integer}. Скупите 2 прста да бисте прилагодили зумирање<br/> {4,number,integer}. Користите пречицу да бисте зауставили увећање<br/><br/> <b>Да бисте привремено увећали:</b><br/> {0,number,integer}. Уверите се да је тип увећања подешен на цео екран<br/> {1,number,integer}. Користите пречицу да бисте покренули увећање<br/> {2,number,integer}. Додирните и задржите било који део екрана<br/> {3,number,integer}. Превлачите прст да бисте се кретали по екрану<br/> {4,number,integer}. Подигните прст да бисте зауставили увећање"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Када је увећање укључено, можете да увећате екран.\n\n"<b>"Да бисте зумирали"</b>", покрените увећање, па додирните било који део екрана.\n"<ul><li>"Превлачите помоћу 2 или више прстију да бисте померали приказ"</li>\n<li>"Скупите 2 или више прстију да бисте прилагодили зумирање"</li></ul>\n\n<b>"За привремено зумирање"</b>" покрените увећање, па додирните и задржите било који део екрана.\n"<ul><li>"Превлачите да бисте се кретали по екрану"</li>\n<li>"Подигните прст да бисте умањили приказ"</li></ul>\n\n"Не можете да увећавате тастатуру или траку за навигацију."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<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">"Пречица за дугме Приступачност"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Ниједан}=1{1 распоред је подешен}one{# распоред је подешен}few{# распореда су подешена}other{# распореда је подешено}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Не узнемиравај"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Приоритетни режими"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Добијајте обавештења само од важних особа и апликација"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Изаберите тип активирања"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Време"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"На пример „9:30–17:00“"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Календар"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"На пример „Лични календар“"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Ограничите прекиде"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Избриши распореде"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Избриши"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Додајте календар"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Користите свој календар"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Распоред"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Подесите распоред"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Распоред"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Утишајте телефон у одређено време"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Омогућите прекиде који производе звук"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Блокирај визуелна ометања"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Дозволи визуелне сигнале"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Обавештења која дозвољавате"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Будите присутни"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Додатне радње"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Подешавања приказа"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Опције приказа"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"омогући тамну тему"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Пребаците ОС и апликације на светао текст на тамној позадини. То може да буде лакше за очи и доводи до знатне уштеде батерије на неким уређајима"</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} и још #}few{{effect_1}, {effect_2} и још #}other{{effect_1}, {effect_2} и још #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Филтрирај прекиде"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Ниједан прекид се не филтрира"</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>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Категорије"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Другo"</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>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Све"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Пређите само на аларме на један сат све до {time}}one{Пређите само на аларме на # сат све до {time}}few{Пређите само на аларме на # сата све до {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Преименуј"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Промени икону"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Промени икону"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Упозорење"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Затвори"</string>
<string name="device_feedback" msgid="5351614458411688608">"Шаљи повратне информације о уређају"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Да би овај уређај могао да користи опцију за програмера од 16 kB, његова партиција података треба да се конвертује у ext4. У овом режиму не може да се гарантује интегритет софтвера, па подаци који сe чувају на телефону док је покретачки програм откључан могу да буду угрожени. Активирање опције од 16 kB захтева још једно рестартовање. Када будете у овом режиму, моћи ћете да прелазите са режима од 4 kB на режим од 16 kB и обратно уз једно рестартовање. Неке функције су онемогућене у овим режимима, што значи да неке апликације можда неће радити. Да бисте уређај вратили на производни режим, треба да га вратите на режим од 4 kB и закључате покретачки програм, чиме ће се уређај ресетовати на фабричка подешавања. Када се на уређају укључи Android, онемогућите OEM откључавање у Опцијама за програмера. Уређај ће после потврде бити обрисан, а систем фајлова промењен на ext4. Када се то заврши, вратите се овде да бисте поново омогућили режим од 16 kB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Обриши све податке"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Реформатирање и брисање партиције података на ext4 није успело."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Треба да откључате покретачки програм да бисте користили 16 KB режим"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Да би овај уређај могао да користи опцију за програмера од 16 kB, на њему треба да буде откључан покретачки програм. У овом режиму не може да се гарантује интегритет софтвера, па могу бити угрожени подаци који сe чувају на телефону док је покретачки програм откључан. Када се активира режим од 16 kB, сви подаци и подешавања корисника ће бити избрисани. Када се покретачки програм откључа, активирање опције од 16 kB захтева два рестартовања. Када будете у овом режиму, моћи ћете да прелазите са режима од 4 kB на режим од 16 kB и обратно уз једно рестартовање. Неке функције су онемогућене у овим режимима, што значи да неке апликације можда неће радити. Да бисте уређај вратили на производни режим, треба да га вратите на режим од 4 kB и закључате OEM или покретачки програм на уређају (што ће га ресетовати на фабричка подешавања). Откључајте покретачки програм и пробајте поново. Упутства како то да урадите потражите на <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Користите режим од 4 kB независан од величине странице"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Користите режим од 4 kB у оквиру режима независног од величине странице. У овом режиму не може да се гарантује интегритет софтвера, па подаци који сe чувају на телефону док је покретачки програм откључан могу да буду угрожени. Неке функције су онемогућене у овим режимима, што значи да неке апликације можда неће радити. Да бисте уређај поново вратили у производни режим, морате да закључате покретачки програм уређаја. Додирните да бисте прочитали више."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Користите режим од 4 kB у оквиру режима независног од величине странице. У овом режиму не може да се гарантује интегритет софтвера, па могу бити угрожени подаци који сe чувају на телефону док је покретачки програм откључан. Неке функције су онемогућене у овим режимима, што значи да неке апликације можда неће радити. Да бисте уређај поново вратили у производни режим, морате да закључате покретачки програм уређаја. То ће поново ресетовати уређај на фабричка подешавања и вратити га на производна подешавања. Када се на уређају укључи Android, онемогућите OEM откључавање у Опцијама за програмера. Ако је уређај нестабилан или се на њему не укључи Android, поново га флешујте користећи најновије слике са фабричким подешавањима са <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Можете и да користите <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> и изаберете Обриши уређај, Закључај покретачки програм и Принудно флешуј све партиције."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Користите режим од 16 kB независан од величине странице"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Користите режим од 16 kB у оквиру режима независног од величине странице. У овом режиму не може да се гарантује интегритет софтвера, па подаци који сe чувају на телефону док је покретачки програм откључан могу да буду угрожени. Неке функције су онемогућене у овим режимима, што значи да неке апликације можда неће радити. Да бисте уређај поново вратили у производни режим, морате да га вратите на режим од 4 kB и закључате покретачки програм уређаја. Додирните да бисте прочитали више."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Користите режим од 16 kB у оквиру режима независног од величине странице. У овом режиму не може да се гарантује интегритет софтвера, па подаци који сe чувају на телефону док је покретачки програм откључан могу да буду угрожени. Неке функције су онемогућене у овим режимима, што значи да неке апликације можда неће радити. Да бисте уређај поново вратили у производни режим, морате да га вратите на режим од 4 kB и закључате покретачки програм уређаја. То ће поново ресетовати уређај на фабричка подешавања и вратити га на производна подешавања. Када се на уређају укључи Android, онемогућите OEM откључавање у Опцијама за програмера. Ако је уређај нестабилан или се на њему не укључи Android, поново га флешујте користећи најновије слике са фабричким подешавањима са <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>. Можете и да користите <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> и изаберете Обриши уређај, Закључај покретачки програм и Принудно флешуј све партиције."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Режим од 16 kB независан од величине странице"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Прочитајте више"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Обрађивач извештаја о грешци"</string>
@@ -5010,7 +5074,8 @@
<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="6686858308083037810">"Дозволи више корисника"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5354,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index c7693ec..8a6fb94 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Läggdags"</item>
+ <item msgid="4152450357280759894">"Körläge"</item>
+ <item msgid="7096549258219399423">"Uppslukande"</item>
+ <item msgid="2760716776980432977">"Hanterade"</item>
+ <item msgid="601734478369121764">"Stjärna"</item>
+ <item msgid="6243809315432780521">"Kalender"</item>
+ <item msgid="4913577903148415331">"Tid"</item>
+ <item msgid="3653377604690057780">"Teater"</item>
+ <item msgid="3843711267408385410">"Blomma"</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 d7dc9ce..818da4b 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Inställningar för hörapparat"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Genväg, kompatibilitet med hörapparat"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Förinställning"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Inga förinställningar har gjorts av din audionom"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Det gick inte att uppdatera förinställningen"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Ljudutgång"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Om ljudutgång"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Läs mer om upplåsning med klockan"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Lägg till klocka"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Ta bort klockan"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Fingeravtryck och ansiktslås"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Ansikts- och fingeravtryckslås"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ansikts- och fingeravtryckslås för jobbprofilen"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Konfigurering krävs"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Ansikte och fingeravtryck har lagts till"</string>
@@ -614,10 +615,8 @@
<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_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 område"</b>\n"När du låser ditt privata område stoppas apparna i området och du får inga aviseringar från dem"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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 område 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 område till en ny enhet. Du måste ställa in ett nytt privat område 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 område."</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 område 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 område 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 område."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Läs mer om privat område"</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 område …"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Vill du starta om enheten?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Detaljerad NFC-loggning är endast avsedd för utvecklingssyfte. Ytterligare NFC-data ingår i felrapporterna, vilka kan innehålla privata uppgifter. Starta om enheten för att ändra den här inställningen."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Starta om"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Casta"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"spegling"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Aktivera wifi-skärmdelning"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Anpassade"</string>
<string name="brightness" msgid="6216871641021779698">"Ljusstyrka"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Anpassad ljusstyrka"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Om anpassad ljusstyrka"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Skärmens ljusstyrka justeras automatiskt efter miljö och aktivitet. Du kan träna Anpassad ljusstyrka med dina egna inställningar genom att flytta reglaget manuellt."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"På"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Av"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Användaren valde <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Tal"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Markörens hastighet"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Spelkontroller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Omdirigera vibration"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Styr vibrationer till spelkontrollen när en sådan är ansluten"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Fortsätt ändå"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Avbryt"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Inställningar för förstoring"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Panorering med ett finger"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Flytta förstoringsområdet genom att dra med ett finger."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Flytta förstoringsområdet genom att dra med två fingrar."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Inte tillgänglig när bara förstoringsdelen av skärmen visas"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Tryck på en knapp för att zooma"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Zooma in snabbt så att innehåll på skärmen förstoras"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Så här zoomar du in:</b><br/> {0,number,integer}. Starta förstoring med genvägen<br/> {1,number,integer}. Tryck på skärmen<br/> {2,number,integer}. Navigera på skärmen genom att dra med två fingrar<br/> {3,number,integer}. Nyp med två fingrar för att justera zoomnivån<br/> {4,number,integer}. Stoppa förstoringen med genvägen<br/><br/> <b>Så här zoomar du in tillfälligt:</b><br/> {0,number,integer}. Kontrollera att förstoringstyp är inställd som helskärm<br/> {1,number,integer}. Starta förstoring med genvägen<br/> {2,number,integer}. Tryck länge var som helst på skärmen<br/> {3,number,integer}. Navigera på skärmen genom att dra med fingret<br/> {4,number,integer}. Stoppa förstoringen genom att lyfta fingret"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"När förstoring har aktiverats kan du zooma in på skärmen.\n\n"<b>"Om du vill zooma"</b>" aktiverar du förstoring och trycker var som helst på skärmen.\n"<ul><li>"Scrolla genom att dra med minst två fingrar."</li>\n<li>"Justera zoomen genom att nypa med minst två fingrar."</li></ul>\n\n<b>"Om du vill zooma tillfälligt"</b>" aktiverar du förstoring och trycker länge var som helst på skärmen.\n"<ul><li>"Flytta runt på skärmen genom att dra."</li>\n<li>"Zooma ut genom att lyfta fingret."</li></ul>\n\n"Det går inte att zooma in på tangentbordet eller navigeringsfältet."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Sida <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> av <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Kortkommando med tillgänglighetsknappen"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Inga}=1{1 schema har ställts in}other{# scheman har ställts in}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Stör ej"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Prioriterade lägen"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Få bara aviseringar från viktiga personer och appar"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Välj aktiveringstyp"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Tid"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Exempel: 9.30–17.00"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalender"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Exempel: Personlig kalender"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Begränsa antalet avbrott"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Aktivera Stör ej."</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Alarm och medieljud får avbryta"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Scheman"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Radera scheman"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Radera"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Redigera"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Scheman"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Schema"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Lägg till en kalender"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Använd kalendern"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Schemalägg"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Ställ in ett schema"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Schemalägg"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Schemalägg"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Stäng av mobilljud vid vissa tider"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Tillåt avbrott med ljud"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Blockera synliga störningar"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Tillåt synliga signaler"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Aviseringar som kan nå dig"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Håll ett öga på omgivningen"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Fler åtgärder"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Visningsinställningar"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Skärmalternativ"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"aktivera mörkt tema"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Ändra så att operativsystemet och apparna föredrar ljus text på en mörk bakgrund, vilket kan vara snällare för ögonen och gör så att batteriet sparas på vissa enheter."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Inga skärmändringar}=1{{effect_1}}=2{{effect_1} och {effect_2}}=3{{effect_1}, {effect_2} och {effect_3}}other{{effect_1}, {effect_2} och # till}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Filtrera avbrott"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Inga avbrott filtreras"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Skärmalternativ för filtrerade aviseringar"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"När Stör ej har aktiverats"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Aviseringar hörs inte"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategorier"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Övrigt"</string>
<string name="no_channels" msgid="4716199078612071915">"Den här appen har inte skickat några aviseringar"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Visa oanvända kategorier"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Fler inställningar i appen"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Visa oanvända kategorier"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Dölj oanvända kategorier"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Alla"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Tillåt att appar åsidosätter funktionen"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Appar som får störa dig"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Välj fler appar"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Ändra till endast alarm i en timme tills {time}}other{Ändra till endast alarm i # timmar tills {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Ändra till endast alarm fram till kl. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Ändra till avbryt alltid"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Byt namn"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Ändra ikon"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Ändra ikon"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Varning"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Stäng"</string>
<string name="device_feedback" msgid="5351614458411688608">"Skicka feedback om den här enheten"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Du måste konvertera enhetens datapartition till ext4 innan du använder utvecklaralternativet för 16 kB. Det går inte att garantera mjukvarans integritet i detta läge och all data som lagras på telefonen när starthanteraren är olåst kan vara i farozonen. Om du aktiverar 16 kB-alternativet måste du starta om en gång till efteråt. När läget är aktiverat kan du byta fram och tillbaka mellan 4 kB och 16 kB genom att starta om. En del funktioner inaktiveras i dessa lägen. Det kan innebära att vissa program inte fungerar. Om du vill återställa produktionsläget på enheten måste du byta tillbaka till 4 kB-läget och låsa starthanteraren. Enheten återställs då till standardinställningarna. När enheten startas med Android ska du inaktivera OEM-upplåsning i utvecklaralternativen. Enheten rensas och filsystemet ändras till ext4 när du har bekräftat. När det är klart kommer du tillbaka för att aktivera 16 kB igen."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Radera all data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Det gick inte att formatera om och rensa datapartionen till ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Starthanteraren måste vara upplåst för 16 kB-läge"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Starthanteraren måste vara upplåst på den här enheten innan du kan använda utvecklaralternativet för 16 kB. Det går inte att garantera mjukvarans integritet i detta läge och all data som lagras på telefonen när starthanteraren är olåst kan vara i farozonen. Alla användaruppgifter och inställningar rensas när 16 kB-läget aktiveras. När starthanteraren har låsts upp krävs två omstarter för att aktivera 16 kB-alternativet. När läget är aktiverat kan du byta fram och tillbaka mellan 4 kB och 16 kB genom att starta om. En del funktioner inaktiveras i dessa lägen. Det kan innebära att vissa program inte fungerar. Om du vill återställa produktionsläget på enheten måste du byta tillbaka till 4 kB-läget och låsa OEM/starthanteraren. Enheten återställs då till standardinställningarna. Lås upp starthanteraren och försök igen. Du hittar anvisningar om hur du gör detta på <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 kB-versionen av det sidagnostiska läget används"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Du använder 4 kB-versionen av det sidagnostiska läget. Det går inte att garantera mjukvarans integritet i detta läge och all data som lagras på telefonen när starthanteraren är olåst kan vara i farozonen. En del funktioner inaktiveras i dessa lägen. Det kan innebära att vissa program inte fungerar. Om du vill återgå till produktionsläget måste du låsa starthanteraren på enheten. Tryck för att läsa mer."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Du använder 4 kB-versionen av det sidagnostiska läget. Det går inte att garantera mjukvarans integritet i detta läge och all data som lagras på telefonen när starthanteraren är olåst kan vara i farozonen. En del funktioner inaktiveras i dessa lägen. Det kan innebära att vissa program inte fungerar. Om du vill återgå till produktionsläget måste du låsa starthanteraren på enheten. Detta återställer enheten till produktionsinställningarna igen. När enheten startas med Android ska du inaktivera OEM-upplåsning i utvecklaralternativen. Om det inte går att starta enheten med Android eller om den inte är stabil flashar du om enheten med de senaste systemavbildningarna från <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> och väljer Rensa enhet, Lås starthanteraren och Tvångsflasha alla partitioner."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 kB-versionen av det sidagnostiska läget används"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Du använder 16 kB-versionen av det sidagnostiska läget. Det går inte att garantera mjukvarans integritet i detta läge och all data som lagras på telefonen när starthanteraren är olåst kan vara i farozonen. En del funktioner inaktiveras i dessa lägen. Det kan innebära att vissa program inte fungerar. Om du vill återgå till produktionsläget måste du byta tillbaka till 4 kB-läget och sedan låsa starthanteraren på enheten. Tryck för att läsa mer."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Du använder 16 kB-versionen av det sidagnostiska läget. Det går inte att garantera mjukvarans integritet i detta läge och all data som lagras på telefonen när starthanteraren är olåst kan vara i farozonen. En del funktioner inaktiveras i dessa lägen. Det kan innebära att vissa program inte fungerar. Om du vill återgå till produktionsläget måste du byta tillbaka till 4 kB-läget och sedan låsa starthanteraren på enheten. Detta återställer enheten till produktionsinställningarna igen. När enheten startas med Android ska du inaktivera OEM-upplåsning i utvecklaralternativen. Om det inte går att starta enheten med Android eller om den inte är stabil flashar du om enheten med de senaste systemavbildningarna från <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> och väljer Rensa enhet, Lås starthanteraren och Tvångsflasha alla partitioner."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 kB-versionen av det sidagnostiska läget"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Läs mer"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Felrapportshanterare"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Använd fästa appar"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Använd utvecklaralternativ"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Använd utskriftstjänst"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Tillåt flera användare"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"tillåt, flera, användare, godkänn, många"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"flera, användare, profiler, personer, konton, byta, många"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Använd trådlös felsökning"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml
index 2bfad67..cd23759 100644
--- a/res/values-sw/arrays.xml
+++ b/res/values-sw/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Wakati wa kulala"</item>
+ <item msgid="4152450357280759894">"Kuendesha gari"</item>
+ <item msgid="7096549258219399423">"Kwa kina"</item>
+ <item msgid="2760716776980432977">"Inadhibitiwa"</item>
+ <item msgid="601734478369121764">"Nyota"</item>
+ <item msgid="6243809315432780521">"Kalenda"</item>
+ <item msgid="4913577903148415331">"Muda"</item>
+ <item msgid="3653377604690057780">"Ukumbi"</item>
+ <item msgid="3843711267408385410">"Ua"</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 ffb704e..474eaef 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Mipangilio ya vifaa vya kusikilizia"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Njia ya mkato, uoanifu wa kifaa cha kusaidia kusikia"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Mipangilio iliyowekwa mapema"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Hakuna mipangilio iliyowekwa mapema na audiolojia wako"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Imeshindwa kusasisha mipangilio iliyowekwa mapema"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Vifaa vya kutoa sauti"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Kuhusu vifaa vya kutoa sauti"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Pata maelezo zaidi kuhusu Kufungua Kupitia Saa"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Weka saa"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Ondoa saa"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Alama ya Kidole na Kufungua kwa Uso"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Kufungua kwa Alama ya Kidole na Uso"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Kazini: Kufungua kwa Uso na Alama ya Kidole"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Unahitaji kuweka mipangilio"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Uso na alama za vidole zimeongezwa"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Weka programu"</b>\n"Weka programu ambazo ungependa ziwe za faragha katika sehemu yako ya faragha"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Kumbuka"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Programu huacha kufanya kazi ukifunga sehemu yako ya faragha"</b>\n"Ukifunga sehemu yako ya faragha, programu zilizo katika sehemu hiyo zitaacha kufanya kazi na hazitakutumia arifa"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Sehemu za faragha hazifai kwa programu zinazohitaji kutumika chinichini au kutuma arifa muhimu, kama vile programu za matibabu. Hii ni kwa sababu arifa na shughuli za chinichini hukomeshwa wakati sehemu yako imefungwa.\n\nProgramu zilizo kwenye sehemu yako ya faragha hazitaonekana kwenye kidhibiti cha ruhusa, dashibodi ya faragha na mipangilio mingine wakati sehemu yako ya faragha imefungwa.\n\nSehemu yako ya faragha haiwezi kuhamishiwa kwenye kifaa kipya. Utahitaji kuweka mipangilio ya sehemu nyingine ya faragha iwapo ungependa kuitumia kwenye kifaa kingine.\n\nYeyote anayeunganisha kifaa chako na kompyuta au anayeweka programu hatari kwenye kifaa chako huenda akafikia sehemu yako ya faragha."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Sehemu za faragha hazifai kwa programu zinazohitaji kutumika chinichini au kutuma arifa muhimu, kama vile programu za matibabu. Hii ni kwa sababu arifa na shughuli za chinichini hukomeshwa wakati sehemu yako imefungwa.\n\nProgramu zilizo kwenye sehemu yako ya faragha hazitaonekana kwenye kidhibiti cha ruhusa, dashibodi ya faragha na mipangilio mingine wakati sehemu ya faragha imefungwa.\n\nSehemu yako ya faragha haiwezi kurejeshwa kwenye kifaa kipya. Utahitaji kuweka mipangilio ya sehemu nyingine ya faragha iwapo ugependa kuitumia kwenye kifaa kingine.\n\nYeyote anayeunganisha kifaa chako na kompyuta au kuweka programu hasidi kwenye kifaa chako huenda akafikia sehemu yako ya faragha."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Pata maelezo kuhusu sehemu ya faragha"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Hatua hii itachukua dakika chache"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Inaweka mipangilio ya sehemu ya faragha…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Ungependa kuzima kisha uwashe kifaa?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Uwekaji maelezo ya kumbukumbu ya NFC ni kwa madhumuni ya usanidi pekee. Vilevile data ya NFC inajumuishwa katika ripoti za hitilafu ambazo huenda zikawa na taarifa ya faragha. Zima kisha uwashe kifaa chako ili ubadili mipangilio hii."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Zima kisha uwashe"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Tuma"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"kioo"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Washa kuonyesha skrini bila kutumia waya"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Inayojirekebisha"</string>
<string name="brightness" msgid="6216871641021779698">"Kiwango cha mwangaza"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Mwangaza unaojirekebisha"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Kuhusu mwangaza unaojirekebisha"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Itarekebisha mwangaza wa skrini kiotomatiki ili uendane na mazingira na shughuli zako. Unaweza kusogeza kitelezi mwenyewe ili kusaidia kipengele cha mwangaza unaojirekebisha kijifunze mapendeleo yako."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Umewashwa"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Kimezimwa"</string>
@@ -1923,7 +1953,7 @@
<string name="trackpad_bottom_right_tap_title" msgid="6275428879042702880">"Mguso wa chini kulia"</string>
<string name="trackpad_bottom_right_tap_summary" msgid="8734094086900680674">"Gusa kona ya upande wa chini kulia wa padi ya kugusa kwa chaguo zaidi"</string>
<string name="trackpad_pointer_speed" msgid="7786579408631352625">"Kasi ya kiashiria"</string>
- <string name="pointer_fill_style" msgid="8413840032931637595">"Muundo wa kielekezi"</string>
+ <string name="pointer_fill_style" msgid="8413840032931637595">"Rangi ya kielekezi"</string>
<string name="pointer_fill_style_black_button" msgid="4540815366995820960">"Badilisha kielekezi kiwe cheusi"</string>
<string name="pointer_fill_style_green_button" msgid="3731413496528067979">"Badilisha kielekezi kiwe cha kijani"</string>
<string name="pointer_fill_style_yellow_button" msgid="5025969961559379024">"Badilisha kielekezi kiwe cha njano"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Uliochaguliwa na mtumiaji: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Kutamka"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Kasi ya kiashiria"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Kidhibiti cha Mchezo"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Elekeza mtetemo"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Elekeza mitetemo kwenye kidhibiti cha mchezo wakati kimeunganishwa"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Endelea tu"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Ghairi"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Mipangilio ya ukuzaji"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Kubuta kwa kidole kimoja"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Sogeza sehemu ya ukuzaji kwa kuburuta kwa kidole kimoja."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Sogeza sehemu ya ukuzaji kwa kuburuta kwa vidole viwili."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Haipatikani unapokuza tu sehemu fulani ya skrini"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Gusa kitufe ili ukuze"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Vuta karibu kwa haraka kwenye skrini ili ufanye maudhui yawe makubwa"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Ili uvute karibu:</b><br/> {0,number,integer}. Tumia njia ya mkato ili uanze kukuza<br/> {1,number,integer}. Gusa skrini<br/> {2,number,integer}. Buruta vidole viwili ili usogeze kwenye skrini<br/> {3,number,integer}. Bana kwa vidole viwili ili ubadilishe ukuzaji<br/> {4,number,integer}. Tumia njia ya mkato ili uache kukuza<br/><br/><b>Ili uvute karibu kwa muda:</b><br/> {0,number,integer}. Hakikisha umechagua aina ya ukuzaji kuwa skrini nzima<br/> {1,number,integer}. Tumia njia ya mkato ili uanze kukuza<br/> {2,number,integer}. Gusa na ushikilie mahali popote kwenye skrini<br/> {3,number,integer}. Buruta kidole ili usogeze kwenye skrini<br/> {4,number,integer}. Inua kidole ili uache kukuza"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Ukiwasha ukuzaji, unaweza kuvuta karibu kwenye skrini yako.\n\n"<b>"Ili ukuze"</b>", anzisha ukuzaji kisha uguse mahali popote kwenye skrini.\n"<ul><li>"Buruta vidole 2 au zaidi ili usogeze"</li>\n<li>"Bana vidole 2 au zaidi ili urekebishe ukuzaji"</li></ul>\n\n<b>"Ili ukuze kwa muda"</b>", anzisha ukuzaji kisha uguse na ushikilie mahali popote kwenye skrini.\n"<ul><li>"Buruta ili usogeze kwenye skrini"</li>\n<li>"Inua kidole ili usogeze mbali"</li></ul>\n\n"Huwezi kuvuta karibu kwenye kibodi au sehemu ya viungo muhimu."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Ukurasa wa <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> kati ya <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Njia ya mkato ya kitufe cha zana za ufikivu"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"Hali za Kipaumbele"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Pata arifa za watu na programu muhimu pekee"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Chagua aina ya kuwezesha"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Muda"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"K.m. \"Saa 3:30 asubuhi hadi saa 11:00 jioni\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"K.m. \"Kalenda binafsi\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Punguza usumbufu"</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_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>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Badilisha"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Ratiba"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Ratiba"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Weka kalenda"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Tumia kalenda yako"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Ratiba"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Weka ratiba"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Ratiba"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"Saa <xliff:g id="HOURS">%1$d</xliff:g>, dak <xliff:g id="MINUTES">%2$d</xliff:g>"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ratibu"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Zima simu katika vipindi fulani"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Ruhusu ukatizwe na vipengele vinavyotoa sauti"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Zuia ukatizaji wa maonyesho"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Ruhusu ishara zinazoonekena"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Arifa zinazoweza kukufikia"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Kuwa makini"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Vitendo vya ziada"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Mipangilio ya kuonyesha"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Chaguo za kuonyesha"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"washa mandhari meusi"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Badili mfumo wa uendeshaji na programu uwe katika hali ya napendelea maandishi mepesi kwenye mandharinyuma meusi\", ambayo yanaweza kuonekana kwa urahisi na yanapelekea uokoaji mkubwa wa betri kwenye baadhi ya vifaa."</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Hakuna mabadiliko kwenye skrini}=1{{effect_1}}=2{{effect_1} na {effect_2}}=3{{effect_1}, {effect_2} na {effect_3}}other{{effect_1}, {effect_2} na # zaidi}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Chuja matukio ya kukatiza"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Hakuna matukio ya kukatiza yaliyochujwa"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Chaguo za kuonyesha arifa zilizochujwa"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Wakati umewasha kipengele cha Usinisumbue"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Arifa zisitoe sauti"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Aina"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Nyingine"</string>
<string name="no_channels" msgid="4716199078612071915">"Programu hii haijachapisha arifa zozote"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Onyesha aina ambazo hazijatumika"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Mipangilio ya ziada katika programu"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Onyesha aina zisizotumika"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Ficha aina zisizotumika"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Programu zilizochaguliwa"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Hamna"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Zote"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Ruhusu programu zibatilishe hali"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Programu zinazoweza kukatiza"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Chagua programu zaidi"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Badilisha utumie kengele pekee kwa saa moja hadi {time}}other{Badilisha utumie kengele pekee kwa saa # hadi {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Badilisha utumie kengele pekee hadi <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Badilisha utumie hali ya katiza wakati wote"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Badilisha jina"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Badilisha aikoni"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Badilisha aikoni"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Onyo"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Funga"</string>
<string name="device_feedback" msgid="5351614458411688608">"Tuma maoni kuhusu kifaa hiki"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Sehemu ya data ya kifaa hiki inahitaji kugeuzwa kuwa ext4 kabla ya kutumia chaguo la wasanidi programu la KB 16. Hatuwezi kukuhakikishia uadilifu wa programu katika hali hii na huenda data yoyote iliyohifadhiwa kwenye simu wakati programu ya kuwasha mfumo wa uendeshaji imefunguliwa ikawa katika hatari. Hatua ya kuwasha chaguo la KB 16 itahitaji kifaa kiwashwe tena baada ya hatua hii. Ukiwa katika hali hii, unaweza kubadilisha kati ya hali za KB 4 na KB 16 kwa kuwasha tena kifaa. Baadhi ya vipengele vitazimwa katika hali hizi, kwa hivyo huenda baadhi ya programu zisifanye kazi. Ili urudishe kifaa kwenye hali ya toleo la umma, utahitaji kurudi kwenye hali ya KB 4 kisha ufunge programu ya kuwasha mfumo wa uendeshaji, hatua itakayorejesha mipangilio ambayo kifaa kilitoka nayo kiwandani. Baada ya kifaa kuwashwa katika Android, zima mipangilio ya kufungua OEM katika Chaguo za wasanidi programu. Data na mipangilio yote ya kifaa itafutwa na mfumo wa faili utabadilishwa kuwa ext4 baada ya uthibitishaji. Baada ya hili kukamilika, tafadhali rudi ili uwashe tena hali ya KB 16."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Futa data yote"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Imeshindwa kubadilisha muundo na kufuta sehemu ya data kuwa ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Unahitaji Kufungua Programu ya Kuwasha Mfumo wa Uendeshaji katika Hali ya KB 16"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Kifaa hiki kinahitaji programu ya kuwasha mfumo wa uendeshaji ifunguliwe kabla ya kutumia chaguo la wasanidi programu la KB 16. Hatuwezi kukuhakikishia uadilifu wa programu katika hali hii na huenda data yoyote iliyohifadhiwa kwenye simu wakati programu ya kuwasha mfumo wa uendeshaji imefunguliwa ikawa katika hatari. Mipangilio na data yote ya mtumiaji itafutwa hali ya KB 16 ikiwashwa. Baada ya programu ya kuwasha mfumo wa uendeshaji kufunguliwa, hatua ya kuwasha chaguo la KB 16 itahitaji kifaa kuwashwa tena mara mbili. Ukiwa katika hali hii, unaweza kubadilisha kati ya hali za KB 4 na KB 16 kwa kuwasha tena kifaa. Baadhi ya vipengele vitazimwa katika hali hizi, kwa hivyo huenda baadhi ya programu zisifanye kazi. Ili urejeshe kifaa kwenye hali ya toleo la umma, utahitaji kurudi kwenye hali ya KB 4 kisha ufunge programu ya kuwasha mfumo wa uendeshaji au urejeshe mipangilio ya kampuni halisi iliyotengeneza kifaa (OEM), (hatua itakayorejesha mipangilio ambayo kifaa kilitoka nayo kiwandani). Tafadhali fungua programu ya kuwasha mfumo wa uendeshaji kisha ujaribu tena. Unaweza kuona maagizo kuhusu jinsi ya kufanya hivyo katika <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Kutumia hali isiyotegemea ukurasa ya KB 4"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Unatumia hali ya KB 4 kwenye hali isiyotegemea ukurasa. Hatuwezi kukuhakikishia uadilifu wa programu katika hali hii na huenda data yoyote iliyohifadhiwa kwenye simu wakati programu ya kuwasha mfumo wa uendeshaji imefunguliwa ikawa katika hatari. Baadhi ya vipengele vitazimwa katika hali hizi, kwa hivyo huenda baadhi ya programu zisifanye kazi. Ili uingie tena katika hali ya toleo la umma, lazima ufunge programu ya kuwasha mfumo wa uendeshaji kwenye kifaa. Gusa ili uendelee kusoma."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Unatumia hali ya KB 4 kwenye hali isiyotegemea ukurasa. Hatuwezi kukuhakikishia uadilifu wa programu katika hali hii na huenda data yoyote iliyohifadhiwa kwenye simu wakati programu ya kuwasha mfumo wa uendeshaji imefunguliwa ikawa katika hatari. Baadhi ya vipengele vitazimwa katika hali hizi, kwa hivyo huenda baadhi ya programu zisifanye kazi. Ili uingie tena katika hali ya toleo la umma, lazima ufunge programu ya kuwasha mfumo wa uendeshaji kwenye kifaa. Hatua hii itarejesha tena mipangilio ambayo kifaa kilitoka nayo kiwandani na kuirejesha katika mipangilio ya toleo la umma. Baada ya kifaa kuwashwa katika Android, zima mipangilio ya kufungua OEM katika Chaguo za wasanidi programu. Iwapo kifaa kitashindwa kuwaka katika Android au si thabiti, weka upya data ya kifaa ukitumia faili mpya kabisa za kiwandani kutoka <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> or use <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> kisha uchague \'Futa Data Yote ya Kifaa\', \'Funga Programu ya Kuwasha Mfumo wa Uendeshaji\' na \'Lazimisha Kuweka kwenye sehemu zote\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Kutumia hali ya KB 16 isiyotegemea ukurasa"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Unatumia hali ya KB 16 kwenye hali isiyotegemea ukurasa. Hatuwezi kukuhakikishia uadilifu wa programu katika hali hii na huenda data yoyote iliyohifadhiwa kwenye simu wakati programu ya kuwasha mfumo wa uendeshaji imefunguliwa ikawa katika hatari. Baadhi ya vipengele vitazimwa katika hali hizi, kwa hivyo huenda baadhi ya programu zisifanye kazi. Ili uingie tena katika hali ya toleo la umma, lazima urudi katika hali ya 4K kisha ufunge programu ya kuwasha mfumo wa uendeshaji kwenye kifaa. Gusa ili uendelee kusoma."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Unatumia hali ya KB 16 kwenye hali isiyotegemea ukurasa. Hatuwezi kukuhakikishia uadilifu wa programu katika hali hii na huenda data yoyote iliyohifadhiwa kwenye simu wakati programu ya kuwasha mfumo wa uendeshaji imefunguliwa ikawa katika hatari. Baadhi ya vipengele vitazimwa katika hali hizi, kwa hivyo huenda baadhi ya programu zisifanye kazi. Ili uingie tena katika hali ya toleo la umma, lazima urudi katika hali ya KB 4 kisha ufunge programu ya kuwasha mfumo wa uendeshaji kwenye kifaa. Hatua hii itarejesha tena mipangilio ambayo kifaa kilitoka nayo kiwandani na kuirejesha katika mipangilio ya toleo la umma. Baada ya kifaa kuwashwa katika Android, zima mipangilio ya kufungua OEM katika Chaguo za wasanidi programu. Iwapo kifaa kitashindwa kuwaka katika Android au si thabiti, weka upya data ya kifaa ukitumia faili mpya kabisa za kiwandani kutoka <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> au utumie <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> kisha uchague \'Futa Data Yote ya Kifaa\', \'Funga Programu ya Kuwasha Mfumo wa Uendeshaji\' na \'Lazimisha Kuweka kwenye sehemu zote\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Hali ya KB 16 Isiyotegemea Ukurasa"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Endelea kusoma"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Kidhibiti cha ripoti ya hitilafu"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Tumia kipengele cha kubandika programu"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Tumia chaguo za wasanidi programu"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Tumia huduma ya kuchapisha"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Ruhusu watumiaji wengi"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"ruhusu, kadhaa, mtumiaji, idhinisha, wengi"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"wengi, watumiaji, wasifu, watu, akaunti, badilisha, nyingi"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Tumia kipengele cha utatuzi usiotumia waya"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ta/arrays.xml b/res/values-ta/arrays.xml
index 7d00713..35442ce 100644
--- a/res/values-ta/arrays.xml
+++ b/res/values-ta/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"உறக்கநேரம்"</item>
+ <item msgid="4152450357280759894">"வாகனம் ஓட்டுதல்"</item>
+ <item msgid="7096549258219399423">"ஈடுபடவைப்பவை"</item>
+ <item msgid="2760716776980432977">"நிர்வகிக்கப்பட்டது"</item>
+ <item msgid="601734478369121764">"ஸ்டார்"</item>
+ <item msgid="6243809315432780521">"கேலெண்டர்"</item>
+ <item msgid="4913577903148415331">"நேரம்"</item>
+ <item msgid="3653377604690057780">"திரையரங்கம்"</item>
+ <item msgid="3843711267408385410">"பூ"</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 4bb9743..d5ca718 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"செவித்துணைச் சாதன அமைப்புகள்"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ஷார்ட்கட், செவித்துணைக் கருவியுடனான இணக்கத்தன்மை"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"முன்னமைவு"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"முன்னமைவுகள் எதையும் உங்கள் ஆடியாலஜிஸ்ட் திட்டமிடவில்லை"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"முன்னமைவைப் புதுப்பிக்க முடியவில்லை"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ஆடியோ வெளியீடு"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ஆடியோ அவுட்புட் - அறிமுகம்"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"வாட்ச் அன்லாக் அம்சம் குறித்து மேலும் அறிக"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"வாட்ச்சைச் சேர்"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"வாட்ச்சை அகற்றும்"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"கைரேகை & முகம் காட்டித் திறத்தல்"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"முகம் & கைரேகை அன்லாக்"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"பணிக்கான முகம் & கைரேகை அன்லாக்"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"அமைவு தேவை"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"முகமும் கைரேகைகளும் சேர்க்கப்பட்டன"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"சாதனத்தை மீண்டும் தொடங்கவா?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"விரிவான NFC பதிவானது மேம்பாட்டு நோக்கங்களுக்காக மட்டுமே உருவாக்கப்பட்டது. பிழை அறிக்கைகளில் கூடுதல் NFC தரவு சேர்க்கப்பட்டுள்ளது. இவற்றில் தனிப்பட்ட தகவல்கள் இருக்கக்கூடும். இந்த அமைப்பை மாற்ற உங்கள் சாதனத்தை மீண்டும் தொடங்கவும்."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"மீண்டும் தொடங்கு"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"அலைபரப்பு"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"பிரதிபலித்தல்"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"வயர்லெஸ் காட்சியை இயக்கு"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"சூழலுக்கேற்றது"</string>
<string name="brightness" msgid="6216871641021779698">"ஒளிர்வு நிலை"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"சூழலுக்கேற்ற ஒளிர்வு"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"சூழலுக்கேற்ற ஒளிர்வு குறித்த அறிமுகம்"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"நீங்கள் இருக்கும் சூழலுக்கும், செய்யும் வேலைகளுக்கும் ஏற்றவாறு, தானாகவே உங்களின் திரை ஒளிர்வு கூடும், குறையும். நீங்கள் எவ்வளவு வெளிச்சத்தை விரும்புகிறீர்கள் என்பதைச் சூழலுக்கேற்ற ஒளிர்வு தெரிந்துகொள்ள, ஸ்லைடரைக் கைமுறையாக நகர்த்தலாம்."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ஆன்"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ஆஃப்"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"பரவாயில்லை, தொடர்க"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ரத்துசெய்"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"பெரிதாக்கல் அமைப்புகள்"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ஒரு விரலால் நகர்த்துதல்"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ஒரு விரலால் இழுத்து பெரிதாக்கல் பகுதியை நகர்த்தலாம்."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"இரண்டு விரல்களால் இழுத்து பெரிதாக்கல் பகுதியை நகர்த்தலாம்."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"திரையின் ஒரு பகுதியை மட்டும் பெரிதாக்கும்போது இருக்காது"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"திரையைப் பெரிதாக்க, பட்டனைத் தட்டவும்"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"உள்ளடக்கத்தை மேலும் தெளிவாகக் காட்ட திரையைப் பெரிதாக்கலாம்"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>பெரிதாக்க:</b><br/> {0,number,integer}. பெரிதாக்கத் தொடங்குவதற்கு ஷார்ட்கட்டைப் பயன்படுத்தவும்<br/> {1,number,integer}. திரையைத் தட்டவும்<br/> {2,number,integer}. திரையில் நகர்த்த இரு விரல்களால் இழுக்கவும்<br/> {3,number,integer}. அளவை மாற்ற இரு விரல்களால் பின்ச் செய்யவும்<br/> {4,number,integer}. பெரிதாக்குவதை நிறுத்த ஷார்ட்கட்டைப் பயன்படுத்தவும்<br/><br/> <b>தற்காலிகமாகப் பெரிதாக்க:</b><br/> {0,number,integer}. பெரிதாக்கல் வகை முழுத்திரைக்கு அமைக்கப்பட்டிருப்பதை உறுதிசெய்து கொள்ளவும்<br/> {1,number,integer}. பெரிதாக்கத் தொடங்குவதற்கு ஷார்ட்கட்டைப் பயன்படுத்தவும்<br/> {2,number,integer}. திரையில் எங்கேனும் தொட்டுப் பிடித்திருக்கவும்<br/> {3,number,integer}. திரையில் எங்கேனும் செல்ல விரலை நகர்த்தவும்<br/> {4,number,integer}. பெரிதாக்குவதை நிறுத்த விரலைத் திரையிலிருந்து எடுக்கவும்"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"’பெரிதாக்கல்’ அம்சம் ஆன் செய்யப்பட்டுள்ளபோது திரையைப் பெரிதாக்கிப் பார்க்கலாம்.\n\n"<b>"அதற்கு "</b>", இந்த அம்சத்தைத் தொடங்கி திரையில் எங்கு வேண்டுமானாலும் தட்டவும்.\n"<ul><li>"ஸ்க்ரோல் செய்ய இரண்டு அல்லது மேற்பட்ட விரல்களில் இழுக்கவும்"</li>\n<li>"அளவை மாற்ற இரண்டு அல்லது மேற்பட்ட விரல்களில் பின்ச் செய்யவும்"</li></ul>\n\n<b>"தற்காலிகமாகப் பெரிதாக்க"</b>", இந்த அம்சத்தைத் தொடங்கி திரையில் எங்கு வேண்டுமானாலும் தொட்டுப் பிடிக்கவும்.\n"<ul><li>"திரையில் எங்கு வேண்டுமானாலும் செல்ல இழுக்கவும்"</li>\n<li>"சிறிதாக்க விரல்களால் பின்ச் செய்து மேலே இழுக்கவும்"</li></ul>\n\n"கீபோர்டிலோ வழிசெலுத்தல் பட்டியையோ பெரிதாக்க இயலாது."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"பக்கம் <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">"அணுகல்தன்மை பட்டனுக்கான ஷார்ட்கட்"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"முன்னுரிமைப் பயன்முறைகள்"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"முக்கியமான நபர்கள் மற்றும் ஆப்ஸிலிருந்து மட்டும் அறிவிப்புகளைப் பெறுங்கள்"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"செயல்படுத்துதல் வகையைத் தேர்ந்தெடுங்கள்"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"நேரம்"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"எ.கா. \"9:30 AM – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"கேலெண்டர்"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"எ.கா. \"தனிப்பட்ட கேலெண்டர்\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"குறுக்கீடுகளைக் குறைத்தல்"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"திட்டமிட்டவைகளை நீக்கு"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"நீக்கு"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"கேலெண்டரைச் சேருங்கள்"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"உங்கள் கேலெண்டரைப் பயன்படுத்துங்கள்"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"திட்டமிடுதல்"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"திட்ட அட்டவணையை அமையுங்கள்"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"நேர அட்டவணை"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"குறிப்பிட்ட நேரத்தில் ஒலி முடக்கு"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"ஒலியுடன் உள்ள குறுக்கீடுகளை அனுமதி"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"விஷுவல் குறுக்கீடுகளைத் தடு"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"விஷுவல் சிக்னல்களை அனுமதி"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"உங்களுக்கு வரும் அறிவிப்புகள்"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"கவனமாக இருங்கள்"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"கூடுதல் செயல்கள்"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"டிஸ்பிளே அமைப்புகள்"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"டிஸ்பிளே விருப்பங்கள்"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"டார்க் தீமினை இயக்கு"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"டார்க் பின்னணியில் பிரகாசமான வார்த்தைகளைப் பார்ப்பதற்கு ஏற்றவாறு OS மற்றும் ஆப்ஸை மாற்றவும். இது கண்களுக்கான சிரமத்தைக் குறைக்கலாம் மற்றும் சில சாதனங்களில் கணிசமான பேட்டரி சேமிப்பையும் வழங்கலாம்."</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="mode_notification_filter_title" msgid="443728483176031977">"அறிவிப்புகளை ஃபில்டர் செய்தல்"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"அறிவிப்புகள் எதுவும் ஃபில்டர் செய்யப்படவில்லை"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"பயன்படுத்தப்படாத வகைகளைக் காட்டு"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"பயன்படுத்தப்படாத வகைகளை மறை"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"அனைத்தும்"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"பெயர் மாற்று"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"ஐகானை மாற்று"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"ஐகானை மாற்றுதல்"</string>
<string name="warning_button_text" msgid="1274234338874005639">"எச்சரிக்கும்"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"மூடுக"</string>
<string name="device_feedback" msgid="5351614458411688608">"சாதனம் பற்றி கருத்தை அனுப்புக"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 கி.பை. டெவெலப்பர் விருப்பத்தைப் பயன்படுத்தும் முன்பு இந்தச் சாதனத்தின் தரவுப் பிரிப்பு ext4 ஃபைல் அமைப்பிற்கு மாற்றப்பட வேண்டும். இந்தப் பயன்முறையில் மென்பொருளின் முழுமைத்தன்மைக்கு உத்திரவாதம் இல்லை. அத்துடன் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்கும்போது மொபைலில் சேமிக்கப்பட்ட அனைத்துத் தரவும் ஆபத்தில் இருக்கக்கூடும். 16 கி.பை. விருப்பத்தைச் செயல்படுத்த, இதற்குப் பின் மீண்டும் ஒருமுறை மறுபடி தொடங்க வேண்டும். இந்தப் பயன்முறையில் இருக்கும்போது, ஒருமுறை மறுபடி தொடங்கி 4 கி.பை. மற்றும் 16 கி.பை. இடையே முன்னும் பின்னும் மாறிக்கொள்ளலாம். இந்தப் பயன்முறைகளில் சில அம்சங்கள் முடக்கப்படும் என்பதால் சில ஆப்ஸ் வேலை செய்யாமல் போகக்கூடும். தயாரிப்புப் பயன்முறைக்குச் சாதனத்தை அமைக்க 4 கி.பை. பயன்முறைக்கு மாறி பூட்லோடரைப் பூட்டுங்கள், இது சாதனத்தை ஆரம்பநிலைக்கு மீட்டமைக்கும். சாதனம் Androidல் தொடங்கியதும், டெவெலப்பர் விருப்பங்களில் OEM அன்லாக்கை முடக்கவும். சாதனம் படிக்க முடியாதபடி செய்யப்படும் மற்றும் உறுதிசெய்த பின் ஃபைல் அமைப்பு ext4 ஃபைல் அமைப்பிற்கு மாற்றப்படும். இது முடிந்ததும், மீண்டும் வந்து 16 கி.பை பயன்முறையை இயக்க வேண்டும்."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"அனைத்துத் தரவையும் அழி"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"தரவுப் பிரிப்பை ext4 ஃபைல் அமைப்பிற்கு மாற்றியமைக்கவும் படிக்க முடியாதபடி செய்யவும் முடியவில்லை."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 கி.பை. பயன்முறை வேண்டுமெனில் பூட்லோடர் அன்லாக் செய்யப்பட வேண்டும்"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 கி.பை. டெவெலப்பர் விருப்பத்தைப் பயன்படுத்தத் தொடங்கும் முன் இந்தச் சாதனத்தில் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்க வேண்டும். இந்தப் பயன்முறையில் மென்பொருளின் முழுமைத்தன்மைக்கு உத்திரவாதம் இல்லை. அத்துடன் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்கும்போது மொபைலில் சேமிக்கப்பட்ட அனைத்துத் தரவும் ஆபத்தில் இருக்கக்கூடும். 16 கி.பை. பயன்முறையைச் செயல்படுத்தும்போது அனைத்துப் பயனர் தரவும் அமைப்புகளும் படிக்க முடியாதபடி செய்யப்படும். பூட்லோடர் அன்லாக் செய்யப்பட்டதும், 16 கி.பை. விருப்பத்தைச் செயல்படுத்த இருமுறை மறுபடி தொடங்க வேண்டும். இந்தப் பயன்முறையில் இருக்கும்போது, ஒருமுறை மறுபடி தொடங்கி 4 கி.பை. மற்றும் 16 கி.பை. இடையே முன்னும் பின்னும் மாறிக்கொள்ளலாம். இந்தப் பயன்முறைகளில் சில அம்சங்கள் முடக்கப்படும் என்பதால் சில ஆப்ஸ் வேலை செய்யாமல் போகக்கூடும். தயாரிப்புப் பயன்முறைக்குச் சாதனத்தை அமைக்க 4 கி.பை. பயன்முறைக்கு மாற்ற வேண்டும். பின்பு OEM/பூட்லோடர் (சாதனத்தை ஆரம்பநிலைக்கு மீட்டமைக்கும்) சாதனத்தைப் பூட்டும். பூட்லோடரை அன்லாக் செய்து மீண்டும் முயலவும். இங்கே இதைச் செய்யும் வழிமுறையைப் பார்க்கலாம்: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 கி.பை. பக்கம் சாராத பயன்முறையைப் பயன்படுத்துகிறது"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"4 கி.பை. இல் இயங்கும் பக்கம் சாராத பயன்முறையில் உள்ளீர்கள். இந்தப் பயன்முறையில் மென்பொருளின் முழுமைத்தன்மைக்கு உத்திரவாதம் இல்லை. அத்துடன் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்கும்போது மொபைலில் சேமிக்கப்பட்ட அனைத்துத் தரவும் ஆபத்தில் இருக்கக்கூடும். இந்தப் பயன்முறைகளில் சில அம்சங்கள் முடக்கப்படும் என்பதால் சில ஆப்ஸ் வேலை செய்யாமல் போகக்கூடும். தயாரிப்புப் பயன்முறைக்குத் திரும்ப, சாதனத்தின் பூட்லோடரைப் பூட்ட வேண்டும். மேலும் படிக்க தட்டவும்."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"4 கி.பை. இல் இயங்கும் பக்கம் சாராத பயன்முறையில் உள்ளீர்கள். இந்தப் பயன்முறையில் மென்பொருளின் முழுமைத்தன்மைக்கு உத்திரவாதம் இல்லை. அத்துடன் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்கும்போது மொபைலில் சேமிக்கப்பட்ட அனைத்துத் தரவும் ஆபத்தில் இருக்கக்கூடும். இந்தப் பயன்முறைகளில் சில அம்சங்கள் முடக்கப்படும் என்பதால் சில ஆப்ஸ் வேலை செய்யாமல் போகக்கூடும். தயாரிப்புப் பயன்முறைக்குத் திரும்ப, சாதனத்தின் பூட்லோடரைப் பூட்ட வேண்டும். இது சாதனத்தை மீண்டும் ஆரம்பநிலைக்கு மீட்டமைக்கும் மற்றும் தயாரிப்பு அமைப்புகளுக்கு மீட்டெடுக்கும். சாதனம் Androidல் தொடங்கியதும், டெவெலப்பர் விருப்பங்களில் OEM அன்லாக்கை முடக்கவும். சாதனம் Androidல் தொடங்கவில்லை அல்லது நிலையற்றதாக இருந்தால் <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> பக்கத்தில் இருந்து சமீபத்திய ஃபேக்டரி பிரதியுடன் சாதனத்தை மீண்டும் ஃபிளாஷ் செய்யவும் அல்லது <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> இணைப்பைப் பயன்படுத்தி \'சாதனத்தைப் படிக்க முடியாதபடி செய்\', \'பூட்லோடரைப் பூட்டு\' மற்றும் \'அனைத்துப் பிரிப்பையும் வேகமாக ஃபிளாஷ் செய்\' என்பதைத் தேர்ந்தெடுக்கவும்."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 கி.பை. பக்கம் சாராத பயன்முறையைப் பயன்படுத்துகிறது"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"16 கி.பை. இல் இயங்கும் பக்கம் சாராத பயன்முறையில் உள்ளீர்கள். இந்தப் பயன்முறையில் மென்பொருளின் முழுமைத்தன்மைக்கு உத்திரவாதம் இல்லை. அத்துடன் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்கும்போது மொபைலில் சேமிக்கப்பட்ட அனைத்துத் தரவும் ஆபத்தில் இருக்கக்கூடும். இந்தப் பயன்முறைகளில் சில அம்சங்கள் முடக்கப்படும் என்பதால் சில ஆப்ஸ் வேலை செய்யாமல் போகக்கூடும். தயாரிப்புப் பயன்முறைக்குத் திரும்ப, 4K பயன்முறைக்கு அமைத்து சாதனத்தின் பூட்லோடரைப் பூட்ட வேண்டும். மேலும் படிக்க தட்டவும்."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"16 கி.பை. இல் இயங்கும் பக்கம் சாராத பயன்முறையில் உள்ளீர்கள். இந்தப் பயன்முறையில் மென்பொருளின் முழுமைத்தன்மைக்கு உத்திரவாதம் இல்லை. அத்துடன் பூட்லோடர் அன்லாக் செய்யப்பட்டிருக்கும்போது மொபைலில் சேமிக்கப்பட்ட அனைத்துத் தரவும் ஆபத்தில் இருக்கக்கூடும். இந்தப் பயன்முறைகளில் சில அம்சங்கள் முடக்கப்படும் என்பதால் சில ஆப்ஸ் வேலை செய்யாமல் போகக்கூடும். தயாரிப்புப் பயன்முறைக்குத் திரும்ப, 4K பயன்முறைக்கு அமைத்து சாதனத்தின் பூட்லோடரைப் பூட்ட வேண்டும். இது சாதனத்தை மீண்டும் ஆரம்பநிலைக்கு மீட்டமைக்கும் மற்றும் தயாரிப்பு அமைப்புகளுக்கு மீட்டெடுக்கும். சாதனம் Androidல் தொடங்கியதும், டெவெலப்பர் விருப்பங்களில் OEM அன்லாக்கை முடக்கவும். சாதனம் Androidல் தொடங்கவில்லை அல்லது நிலையற்றதாக இருந்தால் <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> பக்கத்தில் இருந்து சமீபத்திய ஃபேக்டரி பிரதியுடன் சாதனத்தை மீண்டும் ஃபிளாஷ் செய்யவும் அல்லது <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> இணைப்பைப் பயன்படுத்தி \'சாதனத்தைப் படிக்க முடியாதபடி செய்\', \'பூட்லோடரைப் பூட்டு\' மற்றும் \'அனைத்துப் பிரிப்பையும் வேகமாக ஃபிளாஷ் செய்\' என்பதைத் தேர்ந்தெடுக்கவும்."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 கி.பை. பக்கம் சாராத பயன்முறை"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"மேலும் காட்டு"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"பிழை அறிக்கை ஹேண்ட்லர்"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"பல பயனர்களை அனுமதித்தல்"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-te/arrays.xml b/res/values-te/arrays.xml
index 81b0df0..81f5c39 100644
--- a/res/values-te/arrays.xml
+++ b/res/values-te/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"నిద్రించే సమయం"</item>
+ <item msgid="4152450357280759894">"డ్రైవింగ్"</item>
+ <item msgid="7096549258219399423">"లీనమయ్యే"</item>
+ <item msgid="2760716776980432977">"మేనేజ్ చేయబడిన ఇమేజ్లు"</item>
+ <item msgid="601734478369121764">"స్టార్ పెట్టండి"</item>
+ <item msgid="6243809315432780521">"క్యాలెండర్"</item>
+ <item msgid="4913577903148415331">"సమయం"</item>
+ <item msgid="3653377604690057780">"థియేటర్"</item>
+ <item msgid="3843711267408385410">"పువ్వు"</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 a15b48e..2405062 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"వినికిడి పరికర సెట్టింగ్లు"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"షార్ట్కట్, వినికిడి పరికరంతో అనుకూలత"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ప్రీసెట్"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"మీ ఆడియాలజిస్ట్ ప్రోగ్రామ్ చేసిన ప్రీసెట్లు ఏవీ లేవు"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ప్రీసెట్ను అప్డేట్ చేయడం సాధ్యపడలేదు"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"ఆడియో అవుట్పుట్"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"ఆడియో అవుట్పుట్ గురించి"</string>
@@ -134,11 +135,11 @@
<string name="connected_device_bluetooth_turned_on_toast" msgid="144664089794199928">"బ్లూటూత్ ఆన్ చేయబడింది"</string>
<string name="previous_connected_see_all" msgid="7759413145713251328">"అన్నీ చూడండి"</string>
<string name="connected_device_fast_pair_device_see_all" msgid="4898279230458128620">"అన్నింటినీ చూడండి"</string>
- <string name="stylus_device_details_title" msgid="7618295136015480864">"స్టైలస్"</string>
- <string name="stylus_default_notes_app" msgid="4165657465911764628">"స్టైలస్ బటన్ను నొక్కండి"</string>
+ <string name="stylus_device_details_title" msgid="7618295136015480864">"స్టయిలస్"</string>
+ <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>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"వాచ్ అన్లాక్ గురించి మరింత తెలుసుకోండి"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"వాచ్ను జోడించండి"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"వాచ్ను తీసివేయండి"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"వేలిముద్ర & ఫేస్ అన్లాక్"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"ఫేస్ & వేలిముద్ర అన్లాక్"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"వర్క్ ప్రొఫైల్ కోసం ముఖం & వేలిముద్ర అన్లాక్"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"సెటప్ అవసరం"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"ముఖం, వేలిముద్రలు జోడించబడ్డాయి"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"పరికరాన్ని రీస్టార్ట్ చేయాలా?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"వివరణాత్మక NFC లాగింగ్ అనేది, యాప్ డెవలప్మెంట్ ప్రయోజనాల కోసం మాత్రమే ఉద్దేశించబడింది. బగ్ రిపోర్ట్లలో అదనపు NFC డేటా చేర్చబడుతుంది, ఇందులో ప్రైవేట్ సమాచారం ఉండవచ్చు. ఈ సెట్టింగ్ను మార్చడానికి మీ పరికరాన్ని రీస్టార్ట్ చేయండి."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"రీస్టార్ట్ చేయండి"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"ప్రసారం చేయండి"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"మిర్రర్"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"వైర్లెస్ ప్రదర్శనను ప్రారంభించండి"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"అనుకూలం"</string>
<string name="brightness" msgid="6216871641021779698">"ప్రకాశం స్థాయి"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"పరిసర అనుకూల ప్రకాశం"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"పరిసర అనుకూల ప్రకాశం గురించి పరిచయం"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"మీ స్క్రీన్ బ్రైట్నెస్, ఆటోమేటిక్గా మీ పరిసరాలకు, యాక్టివిటీలకు అనుగుణంగా అడ్జస్ట్ అవుతుంది. మీ ప్రాధాన్యతలను అర్థం చేసుకోవడంలో అనుకూల ప్రకాశానికి సహాయపడటం కోసం స్లయిడర్ను మీరు మాన్యువల్గా లాగవచ్చు."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"ఆన్"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ఆఫ్"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ఏదేమైనా కొనసాగించండి"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"రద్దు చేయండి"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"మ్యాగ్నిఫికేషన్ సెట్టింగ్లు"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ఒక వేలుతో ఫ్యాన్ చేయడం"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"మ్యాగ్నిఫయర్ను 1 వేలితో కదపండి"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"స్క్రీన్ చుట్టూ కదిలేందుకు 1 వేలితో లాగండి"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ఒక వేలును లాగడం ద్వారా జూమ్ ప్రాంతాన్ని తరలించండి."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"రెండు వేళ్లతో లాగడం ద్వారా జూమ్ ప్రాంతాన్ని తరలించండి."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"స్క్రీన్లో కొంత భాగాన్ని మాత్రమే మాగ్నిఫై చేస్తున్నప్పుడు అందుబాటులో ఉండదు"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"జూమ్ చేయడం కోసం బటన్ని నొక్కండి"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"కంటెంట్ను పెద్దదిగా చేయడానికి స్క్రీన్పై త్వరగా జూమ్ - ఇన్ చేయండి"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>జూమ్ చేయడానికి:</b><br/> {0,number,integer}. మ్యాగ్నిఫికేషన్ను ప్రారంభించడానికి షార్ట్కట్ను ఉపయోగించండి<br/> {1,number,integer}. స్క్రీన్ను ట్యాప్ చేయండి<br/> {2,number,integer}. స్క్రీన్ చుట్టూ కదిలేందుకు 2 వేళ్లతో లాగండి<br/> {3,number,integer}. జూమ్ చేయడాన్ని సర్దుబాటు చేయడానికి 2 వేళ్లతో స్క్రీన్ను నియంత్రించండి<br/> {4,number,integer}. మ్యాగ్నిఫికేషన్ను ఆపివేయడానికి షార్ట్కట్ను ఉపయోగించండి<br/><br/><b>తాత్కాలికంగా జూమ్ చేయడానికి:</b><br/> {0,number,integer}. మీ మ్యాగ్నిఫికేషన్ రకం ఫుల్ స్క్రీన్కు సెట్ చేయబడిందని నిర్ధారించుకోండి<br/> {1,number,integer}. మ్యాగ్నిఫికేషన్ను ప్రారంభించడానికి షార్ట్కట్ను ఉపయోగించండి<br/> {2,number,integer}. స్క్రీన్పై ఎక్కడైనా తాకి & హోల్డ్ చేయండి<br/> {3,number,integer}. స్క్రీన్ చుట్టూ కదిలేందుకు వేలితో లాగండి<br/> {4,number,integer}. మ్యాగ్నిఫికేషన్ను ఆపివేయడానికి వేలును స్క్రీన్పై నుండి తీసివేయండి"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>జూమ్ - ఇన్ చేయడానికి:</b><br/> {0,number,integer}. మాగ్నిఫికేషన్ను ప్రారంభించడానికి షార్ట్కట్ను ఉపయోగించండి<br/> {1,number,integer}. స్క్రీన్ను ట్యాప్ చేయండి<br/> {2,number,integer}. స్క్రీన్ చుట్టూ కదిలేందుకు 2 వేళ్లతో లాగండి<br/> {3,number,integer}. జూమ్ చేయడాన్ని సర్దుబాటు చేయడానికి 2 వేళ్లతో స్క్రీన్ను నియంత్రించండి<br/> {4,number,integer}. మ్యాగ్నిఫికేషన్ను ఆపడానికి షార్ట్కట్ను ఉపయోగించండి<br/><br/> మీరు తాత్కాలికంగా కూడా జూమ్ - ఇన్ చేయవచ్చు, ఇంకా మరిన్ని చేయవచ్చు."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>జూమ్ - ఇన్ చేయడానికి:</b><br/> {0,number,integer}. మాగ్నిఫికేషన్ను ప్రారంభించడానికి షార్ట్కట్ను ఉపయోగించండి<br/> {1,number,integer}. స్క్రీన్ను ట్యాప్ చేయండి<br/> {2,number,integer}. స్క్రీన్ చుట్టూ కదిలేందుకు 1 వేలితో లేదా 2 వేళ్లతో లాగండి<br/> {3,number,integer}. జూమ్ చేయడాన్ని సర్దుబాటు చేయడానికి 2 వేళ్లతో స్క్రీన్ను నియంత్రించండి<br/> {4,number,integer}. మ్యాగ్నిఫికేషన్ను ఆపడానికి షార్ట్కట్ను ఉపయోగించండి<br/><br/> మీరు తాత్కాలికంగా కూడా జూమ్ - ఇన్ చేయవచ్చు, ఇంకా మరిన్ని చేయవచ్చు."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"మ్యాగ్నిఫికేషన్ను ఆన్ చేసినప్పుడు, మీ స్క్రీన్పైన దగ్గరకు జూమ్ చేయవచ్చు.\n\n"<b>"జూమ్ చేయడానికి"</b>", మ్యాగ్నిఫికేషన్ను ప్రారంభించి, తర్వాత స్క్రీన్పై ఎక్కడైనా నొక్కండి.\n"<ul><li>"స్క్రోల్ చేయడానికి 2 లేదా అంతకంటే ఎక్కువ వేళ్లతో లాగండి"</li>\n<li>"జూమ్ను సర్దుబాటు చేయడానికి 2 లేదా అంతకంటే ఎక్కువ వేళ్లను దగ్గరకు లేదా దూరానికి లాగండి"</li></ul>\n\n<b>"తాత్కాలికంగా జూమ్ చేయడానికి"</b>", మ్యాగ్నిఫికేషన్ను ప్రారంభించి, తర్వాత స్క్రీన్ను ఎక్కడైనా తాకి & పట్టుకోండి.\n"<ul><li>"స్క్రీన్ పైన కదలడానికి లాగండి"</li>\n<li>"దూరంగా జూమ్ చేయడానికి వేలిని పైకి ఎత్తండి"</li></ul>\n\n"కీబోర్డ్లో లేదా నావిగేషన్ బార్లో మీరు దగ్గరగా జూమ్ చేయలేరు."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g>లో <xliff:g id="CURRENT_PAGE">%1$d</xliff:g>వ పేజీ"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"యాక్సెసిబిలిటీ బటన్ షార్ట్కట్"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"ముఖ్యమైన ఫైల్స్ మోడ్స్"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"ముఖ్యమైన వ్యక్తులు, యాప్ల నుంచి వచ్చే నోటిఫికేషన్లను మాత్రమే అందించు"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"యాక్టివేషన్ రకాన్ని ఎంచుకోండి"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"సమయం"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"ఉదా. \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"క్యాలెండర్"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"ఉదా. \"వ్యక్తిగత క్యాలెండర్\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"అంతరాయాలను పరిమితం చేయండి"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"షెడ్యూళ్లను తొలగించండి"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"తొలగించండి"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"క్యాలెండర్ను జోడించండి"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"మీ క్యాలెండర్ను ఉపయోగించండి"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"షెడ్యూల్"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"షెడ్యూల్ను సెట్ చేయండి"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"షెడ్యూల్"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"కొన్ని సమయాల్లో ఫోన్ని నిశ్శబ్దంగా ఉంచు"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"శబ్దాలు చేసే అంతరాయాలను అనుమతించండి"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"దృశ్య అంతరాయాలను బ్లాక్ చేయండి"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"విజిబిలిటీ సంకేతాలను అనుమతించండి"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"మిమ్మల్ని రీచ్ అవ్వగల నోటిఫికేషన్లు"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"ఫోకస్ పెట్టండి"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"అదనపు చర్యలు"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"డిస్ప్లే సెట్టింగ్లు"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"డిస్ప్లే ఆప్షన్లు"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"డార్క్ థీమ్ను ఎనేబుల్ చేయండి"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"డార్క్ బ్యాక్గ్రౌండ్లో లైట్ టెక్స్ట్ కోసం OSను, యాప్లను మార్చండి. దీనివల్ల కంటికి హాయిగా ఉండే అవకాశం ఉంది. కొన్ని పరికరాలలో బ్యాటరీ గణనీయంగా సేవ్ అవుతుంది"</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="mode_notification_filter_title" msgid="443728483176031977">"ఫిల్టర్ అంతరాయాలు"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"అంతరాయాలు ఏవీ ఫిల్టర్ చేయబడవు"</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>
@@ -3523,7 +3580,7 @@
<string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"గోప్యమైన వర్క్ ప్రొఫైల్ నోటిఫికేషన్లు"</string>
<string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"లాక్ అయినప్పుడు గోప్యమైన వర్క్ ప్రొఫైల్ కంటెంట్ను చూపుతుంది"</string>
<string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"మొత్తం నోటిఫికేషన్ కంటెంట్ను చూపించండి"</string>
- <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"గోప్యమైన కంటెంట్ను అన్లాక్లో మాత్రమే చూపండి"</string>
+ <string name="lock_screen_notifications_summary_hide" msgid="7837303171531166789">"గోప్యమైన కంటెంట్ను అన్లాక్లో మాత్రమే చూపుతుంది"</string>
<string name="lock_screen_notifications_summary_disable" msgid="3388290397947365744">"ఎలాంటి నోటిఫికేషన్లను చూపవద్దు"</string>
<string name="lock_screen_notifications_interstitial_message" msgid="6326229471276829730">"మీ లాక్ స్క్రీన్ ఏమి చూపాలని మీరు కోరుకుంటున్నారు?"</string>
<string name="lock_screen_notifications_interstitial_title" msgid="1360388192096354315">"లాక్ స్క్రీన్"</string>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"ఉపయోగించని కేటగిరీలను చూడండి"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ఉపయోగించని కేటగిరీలను దాచండి"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"అన్నీ"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"పేరు మార్చండి"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"చిహ్నాన్ని మార్చండి"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"చిహ్నాన్ని మార్చండి"</string>
<string name="warning_button_text" msgid="1274234338874005639">"హెచ్చరిక"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"మూసివేయండి"</string>
<string name="device_feedback" msgid="5351614458411688608">"ఈ పరికరంపై ఫీడ్బ్యాక్ ఇవ్వండి"</string>
@@ -4499,8 +4556,8 @@
<string name="enable_gnss_raw_meas_full_tracking" msgid="1206679951510243341">"శక్తివంతమైన GNSS కొలతలు"</string>
<string name="enable_gnss_raw_meas_full_tracking_summary" msgid="3841463141138247167">"డ్యూటీ సైక్లింగ్ లేకుండా అన్ని GNSS నక్షత్రరాశులను మరియు ఫ్రీక్వెన్సీలను ట్రాక్ చేయండి"</string>
<string name="input_method_category" msgid="2252659253631639005">"ఇన్పుట్ విధానం"</string>
- <string name="stylus_handwriting" msgid="2154591374132794563">"స్టైలస్ చేతిరాత"</string>
- <string name="stylus_handwriting_summary" msgid="6333425895172696950">"ఎనేబుల్ అయినప్పుడు, ఎడిటర్ ఫోకస్ చేస్తే, ప్రస్తుత ఇన్పుట్ విధానం స్టైలస్ MotionEventను అందుకుంటుంది."</string>
+ <string name="stylus_handwriting" msgid="2154591374132794563">"స్టయిలస్ చేతిరాత"</string>
+ <string name="stylus_handwriting_summary" msgid="6333425895172696950">"ఎనేబుల్ అయినప్పుడు, ఎడిటర్ ఫోకస్ చేస్తే, ప్రస్తుత ఇన్పుట్ విధానం స్టయిలస్ MotionEventను అందుకుంటుంది."</string>
<string name="device_theme" msgid="5027604586494772471">"పరికర రూపం"</string>
<string name="default_theme" msgid="4815428567082263639">"ఆటోమేటిక్"</string>
<string name="show_operator_name_title" msgid="3355910331531144028">"నెట్వర్క్ పేరు"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB డెవలపర్ ఆప్షన్ను ఉపయోగించే ముందు ఈ పరికరం తాలూకు డేటా పార్టిషన్ను ext4కి మార్చాలి. ఈ మోడ్లో సాఫ్ట్వేర్ ఖచ్చితత్వానికి హామీ ఇవ్వబడదు, బూట్లోడర్ అన్లాక్ చేయబడినప్పుడు ఫోన్లో స్టోర్ చేయబడిన ఏదైనా డేటా ప్రమాదంలో ఉండవచ్చు. 16KB ఆప్షన్ను యాక్టివేట్ చేయడానికి దీని తర్వాత మరొక సారి రీబూట్ చేయాల్సిన అవసరం ఉంది. మీరు ఈ మోడ్లో ఉన్న తర్వాత, మీరు ఒకసారి రీబూట్ చేయడం ద్వారా 4KB, 16KB మోడ్ల మధ్య ముందుకు వెనుకకు మారవచ్చు. ఈ మోడ్లలో కొన్ని ఫీచర్లు డిజేబుల్ చేయబడతాయి, కాబట్టి కొన్ని అప్లికేషన్లు పని చేయకపోవచ్చు. పరికరాన్ని ప్రొడక్షన్ మోడ్కు అందించడానికి, మీరు 4KB మోడ్కు స్విచ్ అవ్వాలి, ఆపై పరికరాన్ని ఫ్యాక్టరీ రీసెట్ చేసే బూట్లోడర్ను లాక్ చేయాలి. పరికరం విజయవంతంగా Androidలోకి బూట్ అయిన తర్వాత, డెవలపర్ ఆప్షన్లలో OEM అన్లాకింగ్ను డిజేబుల్ చేయండి. నిర్ధారించిన తర్వాత పరికరం పూర్తిగా తొలగించబడుతుంది, ఫైల్సిస్టమ్ ext4కి మార్చబడుతుంది. ఇది పూర్తయిన తర్వాత, దయచేసి 16KBని మళ్లీ ఎనేబుల్ చేయడానికి తిరిగి రండి."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"మొత్తం డేటాను ఫ్యాక్టరీ రీసెట్ చేయండి"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"డేటా పార్టిషన్ను ext4కి రీఫార్మాట్ చేయడం, పూర్తిగా తొలగించడం విఫలమైంది."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB మోడ్ కోసం బూట్లోడర్ను అన్లాక్ చేయడం అవసరం"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"ఈ పరికరంలో 16KB డెవలపర్ ఆప్షన్ను ఉపయోగించే ముందు దాని బూట్లోడర్ను అన్లాక్ చేసి ఉండాలి. ఈ మోడ్లో సాఫ్ట్వేర్ ఖచ్చితత్వానికి హామీ ఉండదు, బూట్లోడర్ అన్లాక్ అయినప్పుడు ఫోన్లో స్టోర్ అయిన ఏదైనా డేటా ప్రమాదంలో ఉండవచ్చు. 16KB మోడ్ను యాక్టివేట్ చేసినప్పుడు మొత్తం యూజర్ డేటా, సెట్టింగ్లు పూర్తిగా తొలగించబడతాయి. ఒక్కసారి బూట్లోడర్ను అన్లాక్ చేసిన తర్వాత, 16KB ఆప్షన్ను యాక్టివేట్ చేయడానికి రెండుసార్లు రీబూట్ చేయాల్సిన అవసరం ఉంది. మీరు ఈ మోడ్లో ఉన్న తర్వాత, ఒకసారి రీబూట్ చేయడం ద్వారా 4KB, 16KB మోడ్ల మధ్య ముందుకు వెనుకకు మారవచ్చు. ఈ మోడ్లలో కొన్ని ఫీచర్లు డిజేబుల్ అవుతాయి, కాబట్టి కొన్ని అప్లికేషన్లు పని చేయకపోవచ్చు. పరికరాన్ని ప్రొడక్షన్ మోడ్కు అందించడానికి, మీరు 4KB మోడ్కు స్విచ్ అవ్వాలి, ఆపై పరికరాన్ని OEM/బూట్లోడర్ లాక్ చేయాలి (తద్వారా ఇది ఫ్యాక్టరీ రీసెట్ అవుతుంది). దయచేసి బూట్లోడర్ను అన్లాక్ చేసి, మళ్లీ ట్రై చేయండి. దీన్ని ఎలా చేయాలో తెలిపే సూచనలను <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> లింక్లో చూడవచ్చు"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB పేజీ అగ్నోస్టిక్ మోడ్ను ఉపయోగించడం"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"మీరు పేజీ అగ్నోస్టిక్ మోడ్కు సంబంధించిన 4KB మోడ్లో ఉన్నారు. ఈ మోడ్లో సాఫ్ట్వేర్ ఖచ్చితత్వానికి హామీ ఇవ్వబడదు, బూట్లోడర్ అన్లాక్ చేయబడినప్పుడు ఫోన్లో స్టోర్ చేయబడిన ఏదైనా డేటా ప్రమాదంలో ఉండవచ్చు. ఈ మోడ్లలో కొన్ని ఫీచర్లు డిజేబుల్ చేయబడతాయి, కాబట్టి కొన్ని అప్లికేషన్లు పని చేయకపోవచ్చు. ప్రొడక్షన్ మోడ్లోకి మళ్లీ ఎంటర్ అవ్వడానికి, మీరు తప్పనిసరిగా పరికరం తాలూకు బూట్లోడర్ను లాక్ చేయాలి. మరింత చదవడానికి ట్యాప్ చేయండి."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"మీరు పేజీ అగ్నోస్టిక్ మోడ్కు సంబంధించిన 4KB మోడ్లో ఉన్నారు. ఈ మోడ్లో సాఫ్ట్వేర్ ఖచ్చితత్వానికి హామీ ఇవ్వబడదు, బూట్లోడర్ అన్లాక్ చేయబడినప్పుడు ఫోన్లో స్టోర్ చేయబడిన ఏదైనా డేటా ప్రమాదంలో ఉండవచ్చు. ఈ మోడ్లలో కొన్ని ఫీచర్లు డిజేబుల్ చేయబడతాయి, కాబట్టి కొన్ని అప్లికేషన్లు పని చేయకపోవచ్చు. ప్రొడక్షన్ మోడ్లోకి మళ్లీ ఎంటర్ అవ్వడానికి, మీరు తప్పనిసరిగా పరికరం తాలూకు బూట్లోడర్ను లాక్ చేయాలి. ఇది పరికరాన్ని మళ్లీ ఫ్యాక్టరీ రీసెట్ చేసి, ప్రొడక్షన్ సెట్టింగ్లకు రీస్టోర్ చేస్తుంది. పరికరం విజయవంతంగా Androidలోకి బూట్ అయిన తర్వాత, డెవలపర్ ఆప్షన్లలో OEM అన్లాకింగ్ను డిజేబుల్ చేయండి. పరికరం Androidలో బూట్ చేయడంలో విఫలమైతే లేదా స్థిరంగా లేకపోతే, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> వెబ్సైట్ నుండి తాజా ఫ్యాక్టరీ ఫర్మ్వేర్ ఇమేజ్లతో పరికరాన్ని మళ్లీ ఫ్లాష్ చేయండి లేదా <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> వెబ్సైట్ను ఉపయోగించండి, అలాగే \'పరికరాన్ని పూర్తిగా తొలగించండి\', \'బూట్లోడర్ను లాక్ చేయండి\', \'అన్ని పార్టిషన్లను బలవంతంగా ఫ్లాష్ చేయండి\' వంటి ఆప్షన్లను ఎంచుకోండి."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB పేజీ అగ్నోస్టిక్ మోడ్ను ఉపయోగించడం"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"మీరు పేజీ అగ్నోస్టిక్ మోడ్కు సంబంధించిన 16KB మోడ్లో ఉన్నారు. ఈ మోడ్లో సాఫ్ట్వేర్ ఖచ్చితత్వానికి హామీ ఇవ్వబడదు, బూట్లోడర్ అన్లాక్ చేయబడినప్పుడు ఫోన్లో స్టోర్ చేయబడిన ఏదైనా డేటా ప్రమాదంలో ఉండవచ్చు. ఈ మోడ్లలో కొన్ని ఫీచర్లు డిజేబుల్ చేయబడతాయి, కాబట్టి కొన్ని అప్లికేషన్లు పని చేయకపోవచ్చు. ప్రొడక్షన్ మోడ్లోకి మళ్లీ ఎంటర్ అవ్వడానికి, మీరు తప్పనిసరిగా 4K మోడ్కు స్విచ్ అవ్వాలి, ఆపై పరికరం తాలూకు బూట్లోడర్ను లాక్ చేయాలి. మరింత చదవడానికి ట్యాప్ చేయండి."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"మీరు పేజీ అగ్నోస్టిక్ మోడ్కు సంబంధించిన 16KB మోడ్లో ఉన్నారు. ఈ మోడ్లో సాఫ్ట్వేర్ ఖచ్చితత్వానికి హామీ ఇవ్వబడదు, బూట్లోడర్ అన్లాక్ చేయబడినప్పుడు ఫోన్లో స్టోర్ చేయబడిన ఏదైనా డేటా ప్రమాదంలో ఉండవచ్చు. ఈ మోడ్లలో కొన్ని ఫీచర్లు డిజేబుల్ చేయబడతాయి, కాబట్టి కొన్ని అప్లికేషన్లు పని చేయకపోవచ్చు. ప్రొడక్షన్ మోడ్లోకి మళ్లీ ఎంటర్ అవ్వడానికి, మీరు తప్పనిసరిగా 4K మోడ్కు స్విచ్ అవ్వాలి, ఆపై పరికరం తాలూకు బూట్లోడర్ను లాక్ చేయాలి. ఇది పరికరాన్ని మళ్లీ ఫ్యాక్టరీ రీసెట్ చేసి, ప్రొడక్షన్ సెట్టింగ్లకు రీస్టోర్ చేస్తుంది. పరికరం విజయవంతంగా Androidలోకి బూట్ అయిన తర్వాత, డెవలపర్ ఆప్షన్లలో OEM అన్లాకింగ్ను డిజేబుల్ చేయండి. పరికరం Androidలో బూట్ చేయడంలో విఫలమైతే లేదా స్థిరంగా లేకపోతే, <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> వెబ్సైట్ నుండి తాజా ఫ్యాక్టరీ ఫర్మ్వేర్ ఇమేజ్లతో పరికరాన్ని మళ్లీ ఫ్లాష్ చేయండి లేదా <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> వెబ్సైట్ను ఉపయోగించండి, అలాగే \'పరికరాన్ని పూర్తిగా తొలగించండి\', \'బూట్లోడర్ను లాక్ చేయండి\', \'అన్ని పార్టిషన్లను బలవంతంగా ఫ్లాష్ చేయండి\' వంటి ఆప్షన్లను ఎంచుకోండి."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB పేజీ అగ్నోస్టిక్ మోడ్"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"మరింత చదవండి"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"బగ్ రిపోర్ట్ హ్యాండ్లర్"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"మల్టిపుల్ యూజర్లను అనుమతించండి"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index e5367c1..9adb943 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"เวลาเข้านอน"</item>
+ <item msgid="4152450357280759894">"การขับขี่"</item>
+ <item msgid="7096549258219399423">"สมจริง"</item>
+ <item msgid="2760716776980432977">"ที่มีการจัดการ"</item>
+ <item msgid="601734478369121764">"ดาว"</item>
+ <item msgid="6243809315432780521">"ปฏิทิน"</item>
+ <item msgid="4913577903148415331">"เวลา"</item>
+ <item msgid="3653377604690057780">"ละครเวที"</item>
+ <item msgid="3843711267408385410">"ดอกไม้"</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 15950b1..6342a66 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"การตั้งค่าเครื่องช่วยฟัง"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"ทางลัด ความเข้ากันได้กับเครื่องช่วยฟัง"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"ค่าที่กำหนดล่วงหน้า"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"ไม่มีค่าที่กำหนดล่วงหน้าที่นักโสตสัมผัสวิทยาตั้งโปรแกรมไว้"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"ไม่สามารถอัปเดตค่าที่กำหนดล่วงหน้า"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"เอาต์พุตเสียง"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"เกี่ยวกับเอาต์พุตเสียง"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"ดูข้อมูลเพิ่มเติมเกี่ยวกับการปลดล็อกด้วยนาฬิกา"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"เพิ่มนาฬิกา"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"นำนาฬิกาออก"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"การปลดล็อกด้วยลายนิ้วมือและใบหน้า"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"การปลดล็อกด้วยใบหน้าและลายนิ้วมือ"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"การปลดล็อกด้วยใบหน้าและลายนิ้วมือสำหรับงาน"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"ต้องตั้งค่า"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"เพิ่มใบหน้าและลายนิ้วมือแล้ว"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"รีสตาร์ทอุปกรณ์ใช่ไหม"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"การบันทึกรายละเอียดของ NFC มีไว้เพื่อการพัฒนาเท่านั้น ข้อมูลเพิ่มเติมของ NFC จะรวมอยู่ในรายงานข้อบกพร่อง ซึ่งอาจมีข้อมูลส่วนตัว รีสตาร์ทอุปกรณ์เพื่อเปลี่ยนการตั้งค่านี้"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"รีสตาร์ท"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"แคสต์"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"มิเรอร์"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"เปิดใช้การแสดงผลแบบไร้สาย"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"ปรับอัตโนมัติ"</string>
<string name="brightness" msgid="6216871641021779698">"ระดับความสว่าง"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"ปรับความสว่างอัตโนมัติ"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"เกี่ยวกับฟีเจอร์ปรับความสว่างอัตโนมัติ"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"ความสว่างของหน้าจอจะปรับให้เหมาะสมกับสภาพแวดล้อมและกิจกรรมที่คุณทำโดยอัตโนมัติ คุณเลื่อนแถบเลื่อนด้วยตนเองได้เพื่อช่วยให้การปรับความสว่างอัตโนมัติทราบความสว่างที่คุณต้องการ"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"เปิด"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"ปิด"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"ดำเนินการต่อ"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"ยกเลิก"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"การตั้งค่าการขยาย"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"การแพนกล้องด้วยนิ้วเดียว"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ย้ายพื้นที่ในการขยายโดยลากนิ้วเพียงนิ้วเดียว"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"ย้ายพื้นที่ในการขยายโดยลากนิ้ว 2 นิ้ว"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"ไม่พร้อมใช้งานในขณะที่ขยายเพียงบางส่วนของหน้าจอ"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"แตะปุ่มเพื่อซูม"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"ซูมเข้าอย่างรวดเร็วบนหน้าจอเพื่อทำให้เนื้อหาใหญ่ขึ้น"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>วิธีซูมเข้า</b><br/> {0,number,integer}. ใช้ทางลัดเพื่อเริ่มการขยาย<br/> {1,number,integer}. แตะหน้าจอ<br/> {2,number,integer}. ใช้ 2 นิ้วลากเพื่อย้ายไปรอบๆ หน้าจอ<br/> {3,number,integer}. บีบ 2 นิ้วเพื่อปรับการซูม<br/> {4,number,integer}. ใช้ทางลัดเพื่อหยุดการขยาย<br/><br/> <b>วิธีซูมเข้าชั่วคราว</b><br/> {0,number,integer}. ตรวจสอบว่าตั้งค่าประเภทการขยายเป็นแบบเต็มหน้าจอ<br/> {1,number,integer}. ใช้ทางลัดเพื่อเริ่มการขยาย<br/> {2,number,integer}. แตะที่ใดก็ได้บนหน้าจอค้างไว้<br/> {3,number,integer}. ลากนิ้วเพื่อย้ายไปรอบๆ หน้าจอ<br/> {4,number,integer}. ยกนิ้วขึ้นเพื่อหยุดการขยาย"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"คุณจะซูมหน้าจอเข้าได้เมื่อเปิดการขยาย\n\n"<b>"วิธีซูมคือ"</b>" เริ่มการขยาย จากนั้นแตะบริเวณที่ต้องการซูมในหน้าจอ\n"<ul><li>"ลากนิ้วอย่างน้อย 2 นิ้วเพื่อเลื่อน"</li>\n<li>"บีบนิ้วอย่างน้อย 2 นิ้วเพื่อปรับการซูม"</li></ul>\n\n<b>"วิธีซูมชั่วคราวคือ"</b>" เริ่มการขยาย จากนั้นแตะบริเวณที่ต้องการซูมในหน้าจอค้างไว้\n"<ul><li>"ลากเพื่อไปยังส่วนต่างๆ ในหน้าจอ"</li>\n<li>"ยกนิ้วขึ้นเพื่อซูมออก"</li></ul>\n\n"คุณซูมเข้าโดยใช้แป้นพิมพ์หรือแถบนำทางไม่ได้"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"หน้า <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">"ทางลัดปุ่มการช่วยเหลือพิเศษ"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"โหมดสำคัญ"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"รับเฉพาะการแจ้งเตือนจากผู้คนและแอปที่สำคัญ"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"เลือกประเภทการเปิดใช้งาน"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"เวลา"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"เช่น \"21:30 น. - 17:00 น.\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"ปฏิทิน"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"เช่น \"ปฏิทินส่วนตัว\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"จำกัดการรบกวน"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"ลบกำหนดการ"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"ลบ"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"เพิ่มปฏิทิน"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"ใช้ปฏิทินของคุณ"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"กำหนดเวลา"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"ตั้งกำหนดเวลา"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"กำหนดการ"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"ปิดเสียงโทรศัพท์ในบางช่วงเวลา"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"อนุญาตการรบกวนที่มีเสียง"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"บล็อกสิ่งรบกวนการมองเห็น"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"อนุญาตสัญญาณที่มองเห็น"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"การแจ้งเตือนที่ส่งถึงคุณได้"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"มีสมาธิอยู่เสมอ"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"การทำงานเพิ่มเติม"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"การตั้งค่าการแสดงผล"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ตัวเลือกการแสดงผล"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"เปิดใช้ธีมมืด"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"สลับระบบปฏิบัติการและแอปเพื่อให้ได้ข้อความสีอ่อนและพื้นหลังสีเข้มตามที่ต้องการ ซึ่งอาจสบายตากว่ารวมถึงประหยัดแบตเตอรี่ได้อย่างมากในอุปกรณ์บางเครื่อง"</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="mode_notification_filter_title" msgid="443728483176031977">"กรองการรบกวน"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"ไม่ได้กรองการรบกวน"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"แสดงหมวดหมู่ที่ไม่ได้ใช้"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"ซ่อนหมวดหมู่ที่ไม่ได้ใช้"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"ทั้งหมด"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{เปลี่ยนเป็นเฉพาะปลุกเท่านั้นเป็นเวลา 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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"เปลี่ยนชื่อ"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"เปลี่ยนไอคอน"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"เปลี่ยนไอคอน"</string>
<string name="warning_button_text" msgid="1274234338874005639">"คำเตือน"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"ปิด"</string>
<string name="device_feedback" msgid="5351614458411688608">"ส่งความคิดเห็นเกี่ยวกับอุปกรณ์นี้"</string>
@@ -4069,7 +4130,7 @@
<string name="storage_summary" msgid="5903562203143572768">"ใช้ไป <xliff:g id="PERCENTAGE">%1$s</xliff:g> - เหลือ <xliff:g id="FREE_SPACE">%2$s</xliff:g>"</string>
<string name="display_dashboard_summary" msgid="1599453894989339454">"ธีมมืด ขนาดตัวอักษร ความสว่าง"</string>
<string name="memory_summary" msgid="8221954450951651735">"ใช้หน่วยความจำไป <xliff:g id="USED_MEMORY">%1$s</xliff:g> จาก <xliff:g id="TOTAL_MEMORY">%2$s</xliff:g> โดยเฉลี่ย"</string>
- <string name="users_summary" msgid="8473589474976307510">"ลงชื่อเข้าใช้ในฐานะ<xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="users_summary" msgid="8473589474976307510">"ลงชื่อเข้าใช้ในชื่อ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="android_version_summary" msgid="7818952662015042768">"อัปเดตเป็น Android <xliff:g id="VERSION">%1$s</xliff:g> แล้ว"</string>
<string name="android_version_pending_update_summary" msgid="5404532347171027730">"มีเวอร์ชันอัปเดต"</string>
<string name="disabled_by_policy_title" msgid="6852347040813204503">"บล็อกไว้ตามนโยบายการทำงาน"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"ต้องแปลงพาร์ติชันข้อมูลของอุปกรณ์นี้เป็น ext4 ก่อนที่จะใช้ตัวเลือกสำหรับนักพัฒนาแอปแบบ 16KB ไม่รับประกันความสมบูรณ์ของซอฟต์แวร์ในโหมดนี้ และข้อมูลใดๆ ที่จัดเก็บในโทรศัพท์ในขณะที่ Bootloader ไม่ได้ล็อกอยู่อาจมีความเสี่ยง การเปิดใช้งานตัวเลือก 16KB จะต้องมีการรีบูตอีกครั้งหลังจากนี้ เมื่ออยู่ในโหมดนี้แล้ว คุณจะเปลี่ยนไปมาระหว่างโหมด 4KB กับ 16KB ได้ด้วยการรีบูตครั้งเดียว ฟีเจอร์บางอย่างจะถูกปิดใช้ในโหมดเหล่านี้ ดังนั้นบางแอปพลิเคชันจึงอาจไม่ทำงาน หากต้องการให้อุปกรณ์กลับสู่โหมดโปรดักชัน คุณต้องเปลี่ยนกลับไปใช้โหมด 4KB จากนั้นล็อก Bootloader ซึ่งจะรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น หลังจากที่อุปกรณ์บูตเข้าสู่ Android ได้สำเร็จ ให้ปิดการปลดล็อก OEM ในตัวเลือกสำหรับนักพัฒนาแอป อุปกรณ์จะถูกล้างข้อมูลและระบบไฟล์จะเปลี่ยนเป็น ext4 หลังจากการยืนยัน หลังจากการดำเนินการนี้เสร็จสมบูรณ์ โปรดกลับมาเปิดใช้โหมด 16KB อีกครั้ง"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"ลบข้อมูลทั้งหมด"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ฟอร์แมตใหม่และล้างพาร์ติชันข้อมูลเป็น ext4 ไม่สำเร็จ"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"ต้องปลดล็อก Bootloader สำหรับโหมด 16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"อุปกรณ์นี้ต้องมีการปลดล็อก Bootloader ก่อนที่จะใช้ตัวเลือกสำหรับนักพัฒนาแอปแบบ 16KB ไม่รับประกันความสมบูรณ์ของซอฟต์แวร์ในโหมดนี้ และข้อมูลใดๆ ที่จัดเก็บในโทรศัพท์ในขณะที่ Bootloader ไม่ได้ล็อกอยู่อาจมีความเสี่ยง ข้อมูลผู้ใช้และการตั้งค่าทั้งหมดจะถูกล้างเมื่อเปิดใช้งานโหมด 16KB เมื่อปลดล็อก Bootloader แล้ว การเปิดใช้งานตัวเลือก 16KB จะต้องมีการรีบูต 2 ครั้ง เมื่ออยู่ในโหมดนี้แล้ว คุณจะเปลี่ยนไปมาระหว่างโหมด 4KB กับ 16KB ได้ด้วยการรีบูตครั้งเดียว ฟีเจอร์บางอย่างจะถูกปิดใช้ในโหมดเหล่านี้ ดังนั้นบางแอปพลิเคชันจึงอาจไม่ทำงาน หากต้องการให้อุปกรณ์กลับสู่โหมดโปรดักชัน คุณต้องเปลี่ยนกลับไปใช้โหมด 4KB จากนั้นล็อก OEM/Bootloader (ซึ่งจะรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น) โปรดปลดล็อก Bootloader แล้วลองอีกครั้ง ดูวิธีการได้ที่ <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"กำลังใช้โหมด 4KB ในโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"คุณอยู่ในโหมด 4KB ของโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ ไม่รับประกันความสมบูรณ์ของซอฟต์แวร์ในโหมดนี้ และข้อมูลใดๆ ที่จัดเก็บในโทรศัพท์ในขณะที่ Bootloader ไม่ได้ล็อกอยู่อาจมีความเสี่ยง ฟีเจอร์บางอย่างจะถูกปิดใช้ในโหมดเหล่านี้ ดังนั้นบางแอปพลิเคชันจึงอาจไม่ทำงาน หากต้องการกลับสู่โหมดโปรดักชันอีกครั้ง คุณต้องล็อก Bootloader ของอุปกรณ์ แตะเพื่ออ่านเพิ่มเติม"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"คุณอยู่ในโหมด 4KB ของโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ ไม่รับประกันความสมบูรณ์ของซอฟต์แวร์ในโหมดนี้ และข้อมูลใดๆ ที่จัดเก็บในโทรศัพท์ในขณะที่ Bootloader ไม่ได้ล็อกอยู่อาจมีความเสี่ยง ฟีเจอร์บางอย่างจะถูกปิดใช้ในโหมดเหล่านี้ ดังนั้นบางแอปพลิเคชันจึงอาจไม่ทำงาน หากต้องการกลับสู่โหมดโปรดักชันอีกครั้ง คุณต้องล็อก Bootloader ของอุปกรณ์ การดำเนินการนี้จะรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นอีกครั้งและคืนค่าเป็นโหมดโปรดักชัน หลังจากที่อุปกรณ์บูตเข้าสู่ Android ได้สำเร็จ ให้ปิดการปลดล็อก OEM ในตัวเลือกสำหรับนักพัฒนาแอป หากอุปกรณ์ไม่สามารถบูตเข้าสู่ Android หรือไม่เสถียร ให้แฟลชอุปกรณ์อีกครั้งโดยใช้ค่าเริ่มต้นล่าสุดจาก <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> หรือใช้ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> และเลือก \"ล้างข้อมูลอุปกรณ์\" \"ล็อก Bootloader\" และ \"บังคับให้แฟลชทุกพาร์ติชัน\""</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"กำลังใช้โหมด 16KB ในโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"คุณอยู่ในโหมด 16KB ของโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ ไม่รับประกันความสมบูรณ์ของซอฟต์แวร์ในโหมดนี้ และข้อมูลใดๆ ที่จัดเก็บในโทรศัพท์ในขณะที่ Bootloader ไม่ได้ล็อกอยู่อาจมีความเสี่ยง ฟีเจอร์บางอย่างจะถูกปิดใช้ในโหมดเหล่านี้ ดังนั้นบางแอปพลิเคชันจึงอาจไม่ทำงาน หากต้องการกลับสู่โหมดโปรดักชันอีกครั้ง คุณต้องเปลี่ยนกลับไปใช้โหมด 4K แล้วล็อก Bootloader ของอุปกรณ์ แตะเพื่ออ่านเพิ่มเติม"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"คุณอยู่ในโหมด 16KB ของโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ ไม่รับประกันความสมบูรณ์ของซอฟต์แวร์ในโหมดนี้ และข้อมูลใดๆ ที่จัดเก็บในโทรศัพท์ในขณะที่ Bootloader ไม่ได้ล็อกอยู่อาจมีความเสี่ยง ฟีเจอร์บางอย่างจะถูกปิดใช้ในโหมดเหล่านี้ ดังนั้นบางแอปพลิเคชันจึงอาจไม่ทำงาน หากต้องการกลับสู่โหมดโปรดักชันอีกครั้ง คุณต้องเปลี่ยนกลับไปใช้โหมด 4K แล้วล็อก Bootloader ของอุปกรณ์ การดำเนินการนี้จะรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นอีกครั้งและคืนค่าเป็นโหมดโปรดักชัน หลังจากที่อุปกรณ์บูตเข้าสู่ Android ได้สำเร็จ ให้ปิดการปลดล็อก OEM ในตัวเลือกสำหรับนักพัฒนาแอป หากอุปกรณ์ไม่สามารถบูตเข้าสู่ Android หรือไม่เสถียร ให้แฟลชอุปกรณ์อีกครั้งโดยใช้ค่าเริ่มต้นล่าสุดจาก <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> หรือใช้ <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> และเลือก \"ล้างข้อมูลอุปกรณ์\" \"ล็อก Bootloader\" และ \"บังคับให้แฟลชทุกพาร์ติชัน\""</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"โหมด 16KB ของโหมดไม่คำนึงถึงขนาดหน้าหน่วยความจำ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"อ่านเพิ่มเติม"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"เครื่องจัดการรายงานข้อบกพร่อง"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"อนุญาตให้มีผู้ใช้หลายคน"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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">"ใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml
index 13711b4..519d1db 100644
--- a/res/values-tl/arrays.xml
+++ b/res/values-tl/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Oras ng pagtulog"</item>
+ <item msgid="4152450357280759894">"Pagmamaneho"</item>
+ <item msgid="7096549258219399423">"Immersive"</item>
+ <item msgid="2760716776980432977">"Pinamamahalaan"</item>
+ <item msgid="601734478369121764">"Bituin"</item>
+ <item msgid="6243809315432780521">"Kalendaryo"</item>
+ <item msgid="4913577903148415331">"Oras"</item>
+ <item msgid="3653377604690057780">"Teatro"</item>
+ <item msgid="3843711267408385410">"Bulaklak"</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 cbd8785..63bd880 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Mga setting ng hearing device"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Shortcut, compatibility ng hearing aid"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Preset"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Walang preset na na-program ng iyong audiologist"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Hindi ma-update ang preset"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio output"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Tungkol sa audio output"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Matuto pa tungkol sa Pag-unlock Gamit ang Relo"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Magdagdag ng relo"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Alisin ang relo"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Pag-unlock Gamit ang Fingerprint at Mukha"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Pag-unlock Gamit ang Mukha at Fingerprint"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Pag-unlock Gamit ang Mukha at Fingerprint para sa trabaho"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Kinakailangan ang pag-set up"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Nagdagdag ng mukha at mga fingerprint"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Mag-install ng mga app"</b>\n"Mag-install ng mga app na gusto mong panatilihing pribado sa iyong space"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Tandaan"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Hihinto ang mga app kapag na-lock mo ang iyong space"</b>\n"Kapag na-lock mo ang iyong space, hihinto ang mga app sa space mo at hindi ka makakatanggap ng mga notification mula sa mga iyon"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Hindi naaangkop ang mga pribadong space para sa mga app na kailangang gumana sa background o magpadala ng mga kritikal na notification, tulad ng mga medikal na app. Ito ay dahil hinihinto ang mga notification at aktibidad sa background kapag na-lock ang iyong space.\n\nHindi lalabas sa manager ng pahintulot, privacy dashboard, at iba pang setting ang mga app sa iyong pribadong space kapag na-lock ang pribadong space mo.\n\nHindi puwedeng ilipat sa bagong device ang iyong pribadong space. Kakailanganin mong mag-set up ng ibang pribadong space kung gusto mo itong gamitin sa ibang device.\n\nPosibleng ma-access ng sinumang magkokonekta ng iyong device sa computer o mag-i-install ng mga mapaminsalang app sa device mo ang iyong pribadong space."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Hindi naaangkop ang mga pribadong space para sa mga app na kailangang gumana sa background o magpadala ng mga kritikal na notification, tulad ng mga medikal na app. Ito ay dahil hinihinto ang mga notification at aktibidad sa background kapag na-lock ang iyong space.\n\nHindi lalabas sa manager ng pahintulot, privacy dashboard, at iba pang setting ang mga app sa iyong pribadong space kapag na-lock ang pribadong space.\n\nHindi puwedeng i-restore sa bagong device ang iyong pribadong space. Kakailanganin mong mag-set up ng ibang space kung gusto mo itong gamitin sa ibang device.\n\nPosibleng ma-access ng sinumang magkokonekta ng iyong device sa computer o mag-i-install ng mga nakakapinsalang app sa device mo ang iyong pribadong space."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Matuto pa tungkol sa pribadong space"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Aabutin ito nang ilang sandali"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Sine-set up ang pribadong space…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"I-restart ang Device?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Idinisenyo lang ang pag-log ng detalye ng NFC para sa pag-develop. Nagsasama ng karagdagang data ng NFC sa mga ulat ng bug, na posibleng may pribadong impormasyon. I-restart ang iyong device para baguhin ang setting na ito."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"I-restart"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"I-cast"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"mirror"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"I-enable ang wireless display"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Adaptive"</string>
<string name="brightness" msgid="6216871641021779698">"Level ng brightness"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Adaptive brightness"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"Awtomatikong maa-adjust ang brightness ng iyong screen sa kapaligiran at mga aktibidad mo. Maaari mong manual na galawin ang slider para matulungan ang adaptive brightness na matutunan ang iyong mga kagustuhan."</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Tungkol sa adaptive brightness"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"Awtomatikong maa-adjust ang brightness ng iyong screen sa kapaligiran at mga aktibidad mo. Maaari mong manual na galawin ang slider para matulungan ang adaptive brightness na matutunan ang iyong mga preference."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Naka-on"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Naka-off"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"White balance ng display"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Napiling user: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Pagsasalita"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Bilis ng pointer"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Game Controller"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"I-redirect ang pag-vibrate"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Magpadala ng pag-vibrate sa controller ng laro kapag nakakonekta"</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Magpatuloy pa rin"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Kanselahin"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Mga setting ng pag-magnify"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"One-finger na pag-pan"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Galawin ang magnification area sa pag-drag sa 1 daliri."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Galawin ang magnification area sa pag-drag sa 2 daliri."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Hindi available habang naka-magnify ang isang bahagi lang ng screen"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Mag-tap ng button upang mag-zoom"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Mabilisang mag-zoom in sa screen para palakihin ang content"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Para mag-zoom in:</b><br/> {0,number,integer}. Gamitin ang shortcut para simulan ang pag-magnify<br/> {1,number,integer}. I-tap ang screen<br/> {2,number,integer}. I-drag ang 2 daliri para gumalaw sa screen<br/> {3,number,integer}. Mag-pinch gamit ang 2 daliri para i-adjust ang pag-zoom<br/> {4,number,integer}. Gamitin ang shortcut para ihinto ang pag-magnify<br/><br/> <b>Para mag-zoom in nang pansamantala:</b><br/> {0,number,integer}. Tiyaking nakatakda sa full screen ang iyong uri ng pag-magnify<br/> {1,number,integer}. Gamitin ang shortcut para simulan ang pag-magnify<br/> {2,number,integer}. Pumindot nang matagal kahit saan sa screen<br/> {3,number,integer}. I-drag ang daliri para gumalaw sa screen<br/> {4,number,integer}. Iangat ang daliri para ihinto ang pag-magnify"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Kapag naka-on ang pag-magnify, makakapag-zoom in ka sa iyong screen.\n\n"<b>"Para mag-zoom"</b>", simulan ang pag-magnify, pagkatapos ay mag-tap kahit saan sa screen.\n"<ul><li>"Mag-drag ng 2 o higit pang daliri para mag-scroll"</li>\n<li>"Mag-pinch ng 2 o higit pang daliri para isaayos ang pag-zoom"</li></ul>\n\n<b>"Para mag-zoom pansamantala"</b>", simulan ang pag-magnify, pagkatapos ay pumindot nang matagal kahit saan sa screen.\n"<ul><li>"Mag-drag para gumalaw-galaw sa screen"</li>\n<li>"Iangat ang daliri para mag-zoom out"</li></ul>\n\n"Hindi ka makakapag-zoom in sa keyboard o navigation bar."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Page <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> sa <xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Shortcut ng button ng accessibility"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Wala}=1{Naitakda ang 1 iskedyul}one{Naitakda ang # iskedyul}other{Naitakda ang # na iskedyul}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Huwag Istorbohin"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Mga Priyoridad na Mode"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Makakuha lang ng notification mula sa mahahalagang tao at app"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Piliin ang uri ng pag-activate"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Oras"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Hal. \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Kalendaryo"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Hal. \"Personal na kalendaryo\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Limitahan ang mga pagkaantala"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"I-on ang Huwag Istorbohin"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Puwedeng makaabala ang mga alarm at tunog ng media"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Mga Iskedyul"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"I-delete ang mga iskedyul"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"I-delete"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"I-edit"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Mga Iskedyul"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Iskedyul"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Magdagdag ng kalendaryo"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Gamitin ang iyong kalendaryo"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Iiskedyul"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Magtakda ng iskedyul"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Iskedyul"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> (na) oras, <xliff:g id="MINUTES">%2$d</xliff:g> (na) minuto"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Iskedyul"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"I-silent ang phone sa ilang panahon"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Payagan ang mga abalang tumutunog"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"I-block ang visual na abala"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Payagan ang visual na signal"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Mga notification na makakarating sa iyo"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Manatiling naka-focus"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Mga karagdagang pagkilos"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Mga setting ng display"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Mga opsyon sa display"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"i-enable ang madilim na tema"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"I-switch ang OS at mga app para piliin ang maliwanag na text sa madilim na background, na posibleng mas magaan sa mata at mas nakakatipid ng baterya sa ilang device"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Walang pagbabago sa display}=1{{effect_1}}=2{{effect_1} at {effect_2}}=3{{effect_1}, {effect_2}, at {effect_3}}one{{effect_1}, {effect_2}, at # pa}other{{effect_1}, {effect_2}, at # pa}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"I-filter ang mga abala"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Walang fini-filter na abala"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Mga opsyon sa display para sa mga naka-filter na notification"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Kapag naka-on ang Huwag Istorbohin"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Walang tunog mula sa mga notification"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Mga Kategorya"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Iba Pa"</string>
<string name="no_channels" msgid="4716199078612071915">"Walang anumang notification para sa app na ito"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Ipakita ang mga hindi ginagamit na kategorya"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Mga karagdagang setting sa app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Ipakita ang mga hindi ginagamit"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Itago ang mga hindi ginagamit"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Mga napiling app"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Wala"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Lahat"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Payagan ang mga app na mag-override"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Mga app na puwedeng umabala"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Pumili pa ng mga app"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Gawing mag-a-alarm lang sa loob ng isang oras hanggang {time}}one{Gawing mag-a-alarm lang sa loob ng # oras hanggang {time}}other{Gawing mag-a-alarm lang sa loob ng # na oras hanggang {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Gawing mag-a-alarm lang hanggang <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Gawing palaging mang-abala"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"I-rename"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Icon na baguhin"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Icon na baguhin"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Babala"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Isara"</string>
<string name="device_feedback" msgid="5351614458411688608">"Feedback tungkol sa device"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Kailangang i-convert sa ext4 ang partition ng data ng device na ito bago magamit ang 16KB na opsyon ng developer. Hindi magagarantiya ang integridad ng software, at posibleng malagay sa panganib ang anumang data na naka-store sa telepono habang naka-unlock ang bootloader. Kailangan ng isa pang pag-reboot pagkatapos nito para sa pag-activate ng 16KB na opsyon. Kapag nasa mode na ito ka na, puwede kang magpalipat-lipat sa 4KB at 16KB mode pagkatapos ng isang pag-reboot lang. Madi-disable ang ilang feature sa mga mode na ito, kaya posibleng hindi gumana ang ilang application. Para ibalik sa production mode ang device, kakailanganin mong bumalik sa 4KB mode at pagkatapos ay i-lock ang bootloader, na magfa-factory reset sa device. Pagkatapos mag-boot ng device sa Android, i-disable ang pag-unlock ng OEM sa Mga opsyon ng developer. Mawa-wipe ang device at gagawing ext4 ang filesystem pagkatapos magkumpirma. Pagkatapos nito, bumalik para i-enable ulit ang 16KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Burahin ang lahat ng data"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Hindi na-reformat at na-wipe ang partition ng data sa ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Kinakailangan ang Pag-unlock ng Bootloader para sa 16KB Mode"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Kailangang naka-unlock ang bootloader sa device na ito bago magamit ang 16KB na opsyon ng developer. Hindi magagarantiya ang integridad ng software, at posibleng malagay sa panganib ang anumang data na naka-store sa telepono habang naka-unlock ang bootloader. Mawa-wipe ang lahat ng data at setting ng user kapag ina-activate ang 16KB mode. Kapag na-unlock na ang bootloader, kailangan ng dalawang pag-reboot para sa pag-activate ng 16KB na opsyon. Kapag nasa mode na ito ka na, puwede kang magpalipat-lipat sa 4KB at 16KB mode pagkatapos ng isang pag-reboot lang. Madi-disable ang ilang feature sa mga mode na ito, kaya posibleng hindi gumana ang ilang application. Para ibalik sa production mode ang device, kakailanganin mong bumalik sa 4KB mode at pagkatapos ay i-lock ang OEM/bootloader sa device (na magfa-factory reset nito). I-unlock ang bootloader at subukan ulit. Mahahanap mo ang mga tagubilin kung paano ito gawin sa <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Ginagamit ang 4KB page-agnostic mode"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Nasa 4KB mode ka ng page-agnostic mode. Hindi magagarantiya ang integridad ng software, at posibleng malagay sa panganib ang anumang data na naka-store sa telepono habang naka-unlock ang bootloader. Madi-disable ang ilang feature sa mga mode na ito, kaya posibleng hindi gumana ang ilang application. Para makabalik sa production mode, kailangan mong i-lock ang bootloader ng device. I-tap para magbasa pa."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Nasa 4KB mode ka ng page-agnostic mode. Hindi magagarantiya ang integridad ng software, at posibleng malagay sa panganib ang anumang data na naka-store sa telepono habang naka-unlock ang bootloader. Madi-disable ang ilang feature sa mga mode na ito, kaya posibleng hindi gumana ang ilang application. Para makabalik sa production mode, kailangan mong i-lock ang bootloader ng device. Ifa-factory reset nito ulit ang device at ire-restore ito sa mga setting sa production. Pagkatapos mag-boot ng device sa Android, i-disable ang pag-unlock ng OEM sa Mga opsyon ng developer. Kung hindi magbu-boot sa Android ang device o unstable ito, mag-flash ulit sa device ng mga pinakabagong factory image mula sa <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o gamitin ang <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> at piliin ang \'I-wipe ang Device,\' \'I-lock ang Bootloader,\' at \'Sapilitang I-flash ang lahat ng partition.\'"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Ginagamit ang 16KB page-agnostic mode"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Nasa 16KB mode ka ng page-agnostic mode. Hindi magagarantiya ang integridad ng software, at posibleng malagay sa panganib ang anumang data na naka-store sa telepono habang naka-unlock ang bootloader. Madi-disable ang ilang feature sa mga mode na ito, kaya posibleng hindi gumana ang ilang application. Para makabalik sa production mode, kailangan mong bumalik sa 4K mode at pagkatapos ay i-lock ang bootloader ng device. I-tap para magbasa pa."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Nasa 16KB mode ka ng page-agnostic mode. Hindi magagarantiya ang integridad ng software, at posibleng malagay sa panganib ang anumang data na naka-store sa telepono habang naka-unlock ang bootloader. Madi-disable ang ilang feature sa mga mode na ito, kaya posibleng hindi gumana ang ilang application. Para makabalik sa production mode, kailangan mong bumalik sa 4K mode at pagkatapos ay i-lock ang bootloader ng device. Ifa-factory reset nito ulit ang device at ire-restore ito sa mga setting sa production. Pagkatapos mag-boot ng device sa Android, i-disable ang pag-unlock ng OEM sa Mga opsyon ng developer. Kung hindi magbu-boot sa Android ang device o unstable ito, mag-flash ulit sa device ng mga pinakabagong factory image mula sa <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> o gamitin ang <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> at piliin ang \'I-wipe ang Device,\' \'I-lock ang Bootloader,\' at \'Sapilitang I-flash ang lahat ng partition.\'"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB Page-agnostic Mode"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Magbasa pa"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Tagapangasiwa ng ulat ng bug"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Gamitin ang pag-pin ng app"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Gamitin ang mga opsyon ng developer"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Gamitin ang serbisyo ng pag-print"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Payagan ang maraming user"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"payagan, maraming, user, pahintulot, marami"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"maramihan, mga user, mga profile, mga tao, mga account, lumipat, marami"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Gamitin ang wireless na pag-debug"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index 0f41472..7d56d4c 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Uyku vakti"</item>
+ <item msgid="4152450357280759894">"Araba kullanma"</item>
+ <item msgid="7096549258219399423">"Etkileyici"</item>
+ <item msgid="2760716776980432977">"Yönetilen"</item>
+ <item msgid="601734478369121764">"Yıldız"</item>
+ <item msgid="6243809315432780521">"Takvim"</item>
+ <item msgid="4913577903148415331">"Saat"</item>
+ <item msgid="3653377604690057780">"Sinema"</item>
+ <item msgid="3843711267408385410">"Çiçek"</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 f27da7e..4608965 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"İşitme cihazı ayarları"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Kısayol, işitme cihazı uyumluluğu"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Hazır Ayar"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Odyoloğunuz tarafından programlanmış ön ayar yok"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Hazır ayar güncellenemedi"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Ses çıkışı"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Ses çıkışı hakkında"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Saat ile Kilit Açma hakkında daha fazla bilgi"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Kol saati ekle"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Kol saatini kaldır"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Parmak İzi ve Yüz Tanıma Kilidi"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Yüz Tanıma ve Parmak İzi Kilidi"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"İş profili için Yüz Tanıma ve Parmak İzi Kilidi"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Kurulum gerekiyor"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Yüz ve parmak izleri eklendi"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Uygulamaları yükleyin"</b>\n"Alanınızda gizli tutmak istediğiniz uygulamaları yükleyin"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Unutmayın"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Alanınızı kilitlediğinizde uygulamalar durur"</b>\n"Alanınızı kilitlediğinizde bu alandaki uygulamalar durdurulur ve size artık bildirim göndermez"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Özel alanlar, tıbbi uygulamalar gibi arka planda çalışması ve önemli bildirimler göndermesi gereken uygulamalar için uygun değildir. Bunun nedeni, alanınız kilitlendiğinde bildirimlerin ve arka plandaki etkinliğin durdurulmasıdır.\n\nÖzel alan kilitli olduğunda izin yöneticisi, gizlilik kontrol paneli ve diğer ayarlarda özel alanınızdaki uygulamalar görünmez.\n\nÖzel alanınız yeni bir cihaza taşınamaz. Başka bir cihazda kullanmak istiyorsanız ilgili cihazda yeni bir özel alan kurmanız gerekir.\n\nCihazınızı bilgisayara bağlayan veya cihazınıza zararlı uygulamalar yükleyen kişiler özel alanınıza erişebilir."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Özel alanlar, tıbbi uygulamalar gibi arka planda çalışması ve önemli bildirimler göndermesi gereken uygulamalar için uygun değildir. Bunun nedeni, alanınız kilitlendiğinde bildirimlerin ve arka plandaki etkinliğin durdurulmasıdır.\n\nÖzel alan kilitli olduğunda izin yöneticisi, gizlilik kontrol paneli ve diğer ayarlarda özel alandaki uygulamalar görünmez.\n\nÖzel alanınız yeni bir cihaza geri yüklenemez. Başka bir cihazda kullanmak istiyorsanız ilgili cihazda yeni bir alan kurmanız gerekir.\n\nCihazınızı bilgisayara bağlayan veya cihazınıza kötü amaçlı uygulamalar yükleyen kişiler özel alanınıza erişebilir."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Özel alan hakkında daha fazla bilgi"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Bu işlem birkaç dakika sürecek"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Özel alan kuruluyor…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Cihaz Yeniden Başlatılsın mı?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Ayrıntılı NFC günlük kaydı, yalnızca geliştirme amaçlıdır. Hata raporlarında, özel bilgiler içerebilen ek NFC verileri yer alır. Bu ayarı değiştirmek için cihazınızı yeniden başlatın."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Yeniden başlat"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Yayın"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"ayna"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Kablosuz görüntülemeyi etkinleştir"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Uyarlanabilir"</string>
<string name="brightness" msgid="6216871641021779698">"Parlaklık düzeyi"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Otomatik parlaklık"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Otomatik parlaklık hakkında"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Ekranınızın parlaklığı, bulunduğunuz ortama ve aktivitelerinize göre otomatik olarak ayarlanır. Otomatik parlaklık özelliğinin tercihlerinizi öğrenmesine yardımcı olmak için kaydırma çubuğunu manuel olarak hareket ettirebilirsiniz."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Açık"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Kapalı"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Kullanıcı tarafından <xliff:g id="LAYOUT_LABEL">%s</xliff:g> seçildi"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Konuşma"</string>
<string name="pointer_speed" msgid="7398649279282675718">"İşaretçi hızı"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Oyun Denetleyici"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Titreşimi yönlendir"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Bağlandığında oyun denetleyiciye titreşim gönder"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Yine de devam et"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"İptal"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Büyütme ayarları"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Tek parmakla kaydırma"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Büyüteci 1 parmağınızla hareket ettirin"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Ekranda gezinmek için parmağınızı sürükleyin"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Tek parmağınızı sürükleyerek büyütme alanını taşıyın."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"İki parmağınızı sürükleyerek büyütme alanını taşıyın."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ekranın yalnızca bir kısmını büyütürken kullanılamaz"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Yakınlaştırmak için bir düğmeye dokunun"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"İçerikleri büyütmek için ekranı hızlıca yakınlaştırın"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Yakınlaştırmak için:</b><br/> {0,number,integer}. Büyütmeyi başlatmak için kısayolu kullanın<br/> {1,number,integer}. Ekrana dokunun<br/> {2,number,integer}. Ekranda gezinmek için 2 parmağınızı sürükleyin<br/> {3,number,integer}. Yakınlaştırmayı ayarlamak için 2 parmağınızla sıkıştırın<br/> {4,number,integer}. Büyütmeyi durdurmak için kısayolu kullanın<br/><br/> <b>Geçici bir süreliğine yakınlaştırmak için:</b><br/> {0,number,integer}. Büyütme yönteminin tam ekran olarak ayarlandığından emin olun<br/> {1,number,integer}. Büyütmeyi başlatmak için kısayolu kullanın<br/> {2,number,integer}. Ekranda herhangi bir yere dokunup basılı tutun<br/> {3,number,integer}. Ekranda gezinmek için parmağınızı sürükleyin<br/> {4,number,integer}. Büyütmeyi durdurmak için parmağınızı kaldırın"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Yakınlaştırmak için:</b><br/> {0,number,integer}. Büyütmeyi başlatmak için kısayol kullanın<br/> {1,number,integer}. Ekrana dokunun<br/> {2,number,integer}. Ekranda gezinmek için 2 parmağınızı sürükleyin<br/> {3,number,integer}. Yakınlaştırmayı ayarlamak için 2 parmağınızla sıkıştırın<br/> {4,number,integer}. Büyütmeyi durdurmak için kısayol kullanın<br/><br/> Ayrıca geçici olarak yakınlaştırabilir ve diğer işlemleri yapabilirsiniz."</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>Yakınlaştırmak için:</b><br/> {0,number,integer}. Büyütmeyi başlatmak için kısayol kullanın<br/> {1,number,integer}. Ekrana dokunun<br/> {2,number,integer}. Ekranda hareket etmek için 1 veya 2 parmağınızı sürükleyin<br/> {3,number,integer}. Yakınlaştırmayı ayarlamak için 2 parmağınızla sıkıştırın<br/> {4,number,integer}. Büyütmeyi durdurmak için kısayol kullanın<br/><br/> Ayrıca geçici olarak yakınlaştırabilir ve diğer işlemleri yapabilirsiniz."</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Büyütme açıldığında ekranınızda yakınlaştırma yapabilirsiniz.\n\n"<b>"Yakınlaştırmak için"</b>", büyütmeyi başlatın, ardından ekranda herhangi bir yere dokunun.\n"<ul><li>"Kaydırmak için 2 veya daha fazla parmağınızı sürükleyin"</li>\n<li>"Yakınlaştırmayı ayarlamak için 2 veya daha fazla parmağınızı birbirine yaklaştırın"</li></ul>\n\n<b>"Geçici olarak yakınlaştırmak için"</b>", büyütmeyi başlatın, ardından ekranda herhangi bir yere dokunup basılı tutun.\n"<ul><li>"Ekranda hareket etmek için sürükleyin"</li>\n<li>"Uzaklaştırmak için parmağınızı çekin"</li></ul>\n\n"Klavyede veya gezinme çubuğundayken yakınlaştırma yapamazsınız."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Sayfa <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">"Erişilebilirlik düğmesi kısayolu"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"Öncelik Modları"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<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="5135520719771212697">"Etkinleştirme türünü seçin"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Süre"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Örnek: \"09:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Takvim"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Örnek: \"Kişisel takvim\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Kesintileri sınırlayın"</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_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>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Düzenle"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Programlar"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Programla"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Takvim ekleyin"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Takviminizi kullanın"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Program"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Program ayarlama"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Program"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> sa. <xliff:g id="MINUTES">%2$d</xliff:g> dk."</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Program"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Telefonun sesini belirli zamanlarda kapat"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Ses çıkaran kesintilere izin ver"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Görsel bildirimleri engelle"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Görsel sinyallere izin ver"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Alabileceğiniz bildirimler"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Konsantrasyonunuzu koruyun"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Diğer işlemler"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Ekran ayarları"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Görüntüleme seçenekleri"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"koyu temayı etkinleştir"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"İşletim sistemini ve uygulamaları, koyu arka plan üzerinde açık renkli metin kullanacak şekilde değiştirin. Böylece gözünüz yorulmaz ve bazı cihazlarda önemli ölçüde pil tasarrufu yapabilirsiniz"</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="mode_notification_filter_title" msgid="443728483176031977">"Kesintileri filtrele"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Kesintiler filtrelenmiyor"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Filtrelenen bildirimlerle ilgili ekran 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>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Kategoriler"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Diğer"</string>
<string name="no_channels" msgid="4716199078612071915">"Bu uygulama herhangi bir bildirim yayınlamadı"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Kullanılmayan kategorileri göster"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Uygulamadaki ek ayarlar"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Kullanılmayan kategorileri göster"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Kullanılmayan kategorileri gizle"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"Tümü"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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_add_header" msgid="3201829605075172536">"Daha fazla uygulama seçin"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Saat {time} olana kadar bir saat boyunca yalnızca alarmlar seçeneğine geç}other{Saat {time} olana kadar # saat boyunca yalnızca alarmlar seçeneğine geç}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Yalnızca şu saate kadar alarmlara geç: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Her zaman kes seçeneğine değiştir"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Yeniden adlandır"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Simgeyi değiştir"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Simgeyi değiştirme"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Uyarı"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Kapat"</string>
<string name="device_feedback" msgid="5351614458411688608">"Bu cihazla ilgili geri bildirim gönder"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16 KB geliştirici seçeneğini kullanmadan önce bu cihazın veri bölümünün ext4\'e dönüştürülmesi gerekir. Bu modda yazılım bütünlüğü garanti edilemez ve bootloader\'ın kilidi açıkken telefonda saklanan veriler risk altında olabilir. 16 KB seçeneğini etkinleştirdikten sonra bir kez daha yeniden başlatma yapılması gerekir. Bu moddayken tek bir yeniden başlatma işlemiyle 4 KB ve 16 KB modları arasında geçiş yapabilirsiniz. Bu modlarda bazı özellikler devre dışı bırakılacağı için bazı uygulamalar çalışmayabilir. Cihazı üretim moduna döndürmek için 4 KB moduna geri dönmeniz ve bootloader\'ı kilitlemeniz gerekir. Bu durumda cihaz fabrika ayarlarına sıfırlanır. Cihaz başarılı bir şekilde Android\'de başlatıldıktan sonra Geliştirici seçeneklerinde OEM kilit açma özelliğini devre dışı bırakın. Onayınızın ardından cihaz temizlenecek ve dosya sistemi ext4 olarak değiştirilecektir. Bu işlem tamamlandıktan sonra lütfen geri gelerek 16 KB modunu tekrar etkinleştirin."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Tüm verileri sil"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Veriler temizlenemedi ve ext4 olarak yeniden biçimlendirilemedi."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16 KB modu için bootloader kilidinin açılması gerekir"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 KB geliştirici seçeneğini kullanmadan önce bu cihazın bootloader\'ının kilidinin açılması gerekir. Bu modda yazılım bütünlüğü garanti edilemez ve bootloader\'ın kilidi açıkken telefonda saklanan veriler risk altında olabilir. 16 KB modu etkinleştirildiğinde tüm kullanıcı verileri ve ayarlar silinir. Bootloader\'ın kilidi açıldıktan sonra 16 KB seçeneğinin etkinleştirilmesi için iki kez yeniden başlatma yapılması gerekir. Bu moddayken tek bir yeniden başlatma işlemiyle 4 KB ve 16 KB modları arasında geçiş yapabilirsiniz. Bu modlarda bazı özellikler devre dışı bırakılacağı için bazı uygulamalar çalışmayabilir. Cihazı üretim moduna döndürmek için 4 KB moduna geri dönmeniz ve cihazda OEM/bootloader kilidini etkinleştirmeniz gerekir. Bu durumda cihaz fabrika ayarlarına sıfırlanır. Lütfen bootloader\'ın kilidini açıp tekrar deneyin. Bu işlemle ilgili talimatları görmek için <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> adresine gidin."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4 KB sayfadan bağımsız modunu kullanıyorsunuz"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Sayfadan bağımsız moddaki 4 KB modundasınız. Bu modda yazılım bütünlüğü garanti edilemez ve bootloader\'ın kilidi açıkken telefonda saklanan veriler risk altında olabilir. Bu modlarda bazı özellikler devre dışı bırakılacağı için bazı uygulamalar çalışmayabilir. Üretim moduna tekrar girmek için cihazın bootloader\'ını kilitlemeniz gerekir. Daha fazla bilgi için dokunun."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Sayfadan bağımsız moddaki 4 KB modundasınız. Bu modda yazılım bütünlüğü garanti edilemez ve bootloader\'ın kilidi açıkken telefonda saklanan veriler risk altında olabilir. Bu modlarda bazı özellikler devre dışı bırakılacağı için bazı uygulamalar çalışmayabilir. Üretim moduna tekrar girmek için cihazın bootloader\'ını kilitlemeniz gerekir. Bu durumda cihaz tekrar fabrika ayarlarına sıfırlanır ve üretim ayarlarına geri döner. Cihaz başarılı bir şekilde Android\'de başlatıldıktan sonra Geliştirici seçeneklerinde OEM kilit açma özelliğini devre dışı bırakın. Cihaz Android\'de başlatılamıyorsa veya kararsızsa cihazı <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> adresindeki en güncel fabrika ayarı görüntüleriyle yeniden yükleyin veya <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> adresine gidip \"Cihazı Temizle\", \"Bootloader\'ı Kilitle\" ve \"Tüm bölümleri zorla yükle\"yi seçin."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16 KB sayfadan bağımsız modunu kullanıyorsunuz"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Sayfadan bağımsız moddaki 16 KB modundasınız. Bu modda yazılım bütünlüğü garanti edilemez ve bootloader\'ın kilidi açıkken telefonda saklanan veriler risk altında olabilir. Bu modlarda bazı özellikler devre dışı bırakılacağı için bazı uygulamalar çalışmayabilir. Üretim moduna tekrar girmek için 4 KB moduna geçtikten sonra cihazın bootloader\'ını kilitlemeniz gerekir. Daha fazla bilgi için dokunun."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Sayfadan bağımsız moddaki 16 KB modundasınız. Bu modda yazılım bütünlüğü garanti edilemez ve bootloader\'ın kilidi açıkken telefonda saklanan veriler risk altında olabilir. Bu modlarda bazı özellikler devre dışı bırakılacağı için bazı uygulamalar çalışmayabilir. Üretim moduna tekrar girmek için 4 KB moduna geçtikten sonra cihazın bootloader\'ını kilitlemeniz gerekir. Bu durumda cihaz tekrar fabrika ayarlarına sıfırlanır ve üretim ayarlarına geri döner. Cihaz başarılı bir şekilde Android\'de başlatıldıktan sonra Geliştirici seçeneklerinde OEM kilit açma özelliğini devre dışı bırakın. Cihaz Android\'de başlatılamıyorsa veya kararsızsa cihazı <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> adresindeki en güncel fabrika ayarı görüntüleriyle yeniden yükleyin veya <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> adresine gidip \"Cihazı Temizle\", \"Bootloader\'ı Kilitle\" ve \"Tüm bölümleri zorla yükle\"yi seçin."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB Sayfadan Bağımsız Mod"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Devamı"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Hata raporu işleyici"</string>
@@ -5009,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Uygulama sabitlemeyi kullan"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Geliştirici seçeneklerini kullan"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Yazdırma hizmetini kullan"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Birden çok kullanıcıya izin ver"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"izin ver, çoklu, kullanıcı, izin birden fazla"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"birden fazla, kullanıcılar, profiller, kişiler, hesaplar, geçiş, birçok"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Kablosuz hata ayıklamayı kullan"</string>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
index cf72bb8..2399e53 100644
--- a/res/values-uk/arrays.xml
+++ b/res/values-uk/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Час сну"</item>
+ <item msgid="4152450357280759894">"Водіння"</item>
+ <item msgid="7096549258219399423">"Реалістичність"</item>
+ <item msgid="2760716776980432977">"Керованість"</item>
+ <item msgid="601734478369121764">"Зірка"</item>
+ <item msgid="6243809315432780521">"Календар"</item>
+ <item msgid="4913577903148415331">"Час"</item>
+ <item msgid="3653377604690057780">"Театр"</item>
+ <item msgid="3843711267408385410">"Квітка"</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 170f0dc..de099d8 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Налаштування слухового апарата"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Ярлик, сумісність зі слуховими апаратами"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Набір налаштувань"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Немає наборів налаштувань, запрограмованих вашим аудіологом"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Не вдалось оновити набір налаштувань"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Аудіовихід"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Про аудіовихід"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Докладніше про розблокування годинником"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Додати годинник"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Вилучити годинник"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Розблокування відбитком пальця й фейс-контроль"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Фейс-контроль і розблокування відбитком пальця"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Фейс-контроль і відбиток пальця для роботи"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Потрібно налаштувати"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Обличчя й відбитки пальців додано"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Перезапустити пристрій?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Ведення детальних журналів NFC призначене лише для розробки. Додаткові дані NFC включаються у звіти про помилки, які можуть містити приватну інформацію. Щоб змінити це налаштування, перезапустіть пристрій."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Перезапустити"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Трансляція"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"дзеркалювання"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Увімкнути бездротовий екран"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Адаптивні"</string>
<string name="brightness" msgid="6216871641021779698">"Рівень яскравості"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Адаптивна яскравість"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Про адаптивну яскравість"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Яскравість екрана автоматично пристосовується до середовища й ваших дій. Ви можете пересунути повзунок вручну, щоб відкоригувати яскравість за власним бажанням."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Увімкнено"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Вимкнено"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Усе одно продовжити"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Скасувати"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Налаштування збільшення"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Панорамування одним пальцем"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Переміщуйте область збільшення, перетягуючи одним пальцем."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Переміщуйте область збільшення, перетягуючи двома пальцями."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Недоступно, коли збільшено лише частину екрана"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Торкніться кнопки, щоб збільшити вміст"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Щоб краще роздивитися вміст екрана, його можна наблизити."</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Щоб наблизити зображення:</b><br/> {0,number,integer}. Активуйте збільшення, скориставшись призначеною для цього кнопкою чи відповідним жестом.<br/> {1,number,integer}. Торкніться екрана.<br/> {2,number,integer}. Щоб перейти до іншої області на екрані, потягніть по ньому двома пальцями.<br/> {3,number,integer}. Зведіть або розведіть два пальці, щоб змінити масштаб.<br/> {4,number,integer}. Вимкніть збільшення, скориставшись призначеною для цього кнопкою чи відповідним жестом.<br/><br/> <b>Щоб ненадовго наблизити зображення:</b><br/> {0,number,integer}. Переконайтеся, що вибрано тип збільшення \"На весь екран\".<br/> {1,number,integer}. Активуйте збільшення, скориставшись призначеною для цього кнопкою чи відповідним жестом.<br/> {2,number,integer}. Натисніть і втримуйте будь-яке місце на екрані.<br/> {3,number,integer}. Щоб переглянути іншу область на екрані, пересуньте палець.<br/> {4,number,integer}. Підніміть палець, щоб припинити збільшення."</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Коли функцію збільшення ввімкнено, ви можете наближувати вміст на екрані.\n\n"<b>"Щоб наблизити вміст"</b>", увімкніть збільшення, а потім торкніться будь-якого місця на екрані.\n"<ul><li>"Щоб прокрутити вміст, проведіть по екрану принаймні двома пальцями"</li>\n<li>"Щоб змінити масштаб, стисніть або розведіть принаймні два пальці"</li></ul>\n\n<b>"Щоб тимчасово збільшити вміст"</b>", увімкніть збільшення, а потім натисніть і утримуйте будь-яке місце на екрані.\n"<ul><li>"Пересувайте палець, щоб переміщатись екраном"</li>\n<li>"Підніміть палець, щоб знову зменшити елемент"</li></ul>\n\n"Масштабування не підтримується на клавіатурі та панелі навігації."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Сторінка <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">"Швидка дія кнопкою функцій доступності"</string>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Немає}=1{Налаштовано 1 розклад}one{Налаштовано # розклад}few{Налаштовано # розклади}many{Налаштовано # розкладів}other{Налаштовано # розкладу}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Не турбувати"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Режими пріоритету"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Отримуйте сповіщення лише від важливих людей і додатків"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Вибрати тип активації"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Час"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Приклад: \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Календар"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Приклад: \"Особистий календар\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Обмеження сповіщень"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Видалити розклади"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Видалити"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Додати календар"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Використовувати календар"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Розклад"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Налаштуйте розклад"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Розклад"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Вимикати звук телефона в певний час"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Дозволити сповіщення зі звуком"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Блокувати візуальні сповіщення"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Дозволити візуальні сигнали"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Сповіщення, які ви можете отримувати"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Не відволікайтесь"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Додаткові дії"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Налаштування дисплея"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Параметри відображення"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"увімкнути темну тему"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Змініть налаштування ОС і додатків, щоб використовувати світлий текст на темному фоні. Це може бути комфортніше для очей і допомагає суттєво економити заряд акумулятора на деяких пристроях."</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} і ще #}few{{effect_1}, {effect_2} і ще #}many{{effect_1}, {effect_2} і ще #}other{{effect_1}, {effect_2} і ще #}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Фільтрувати сповіщення"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Сповіщення не фільтруються"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"Показати категорії, що не використ."</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Сховати категорії, що не використ."</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"Усі"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Активувати режим \"Лише будильник\" на одну годину до {time}}one{Активувати режим \"Лише будильник\" на # годину до {time}}few{Активувати режим \"Лише будильник\" на # години до {time}}many{Активувати режим \"Лише будильник\" на # годин до {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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Перейменувати"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Змінити значок"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Змінити значок"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Застереження"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Закрити"</string>
<string name="device_feedback" msgid="5351614458411688608">"Надіслати відгук про цей пристрій"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Щоб використовувати режим для розробників зі сторінками розміром 16 КБ, розділ даних на цьому пристрої потрібно відформувати у файловій системі ext4. У цьому режимі цілісність програмного забезпечення не гарантується, і будь-які дані, що зберігаються на телефоні, поки завантажувач операційної системи розблоковано, можуть бути під загрозою. Після цього для активації режиму 16 КБ потрібно буде ще раз перезапустити пристрій. Коли ви перейдете в цей режим, то для зміни режиму розміру сторінки з 16 КБ на 4 КБ та навпаки пристрій потрібно буде перезапустити лише один раз. Деякі функції в цих режимах буде вимкнено, тому зможуть працювати не всі додатки. Щоб повернути пристрій у виробничий режим, вам буде потрібно повернутися в режим 4 КБ й заблокувати завантажувач операційної системи. Після цього налаштування пристрою буде скинуто. Коли ОС Android завантажиться, вимкніть розблокування завантажувача в параметрах розробника. Після підтвердження на пристрої буде очищено всі дані, а файлову систему буде змінено на ext4. Коли цей процес завершиться, знову ввімкніть режим із розміром сторінок 16 КБ."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Видалити всі дані"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Не вдалося очистити розділ даних і переформатувати на ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Для режиму 16 КБ потрібно розблокувати завантажувач ОС"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Щоб використовувати режим для розробників зі сторінками розміром 16 КБ на цьому пристрої, необхідно розблокувати завантажувач операційної системи. У цьому режимі цілісність програмного забезпечення не гарантується, і будь-які дані, що зберігаються на телефоні, поки завантажувач операційної системи розблоковано, можуть бути під загрозою. Під час активації режиму 16 КБ усі дані й налаштування користувача буде очищено. Коли завантажувач операційної системи буде розблоковано, для активації режиму 16 КБ потрібно буде перезапустити пристрій двічі. Коли ви перейдете в цей режим, то для зміни режиму розміру сторінки з 16 КБ на 4 КБ та навпаки пристрій потрібно буде перезапустити лише один раз. Деякі функції в цих режимах буде вимкнено, тому зможуть працювати не всі додатки. Щоб повернути пристрій у виробничий режим, вам буде потрібно повернутися в режим 4 КБ й заблокувати завантажувач операційної системи. Після цього налаштування пристрою буде скинуто. Докладні вказівки наведено на сторінці <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Режим, незалежний від розміру сторінок, з ядром 4 КБ"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Ви працюєте в режимі, незалежному від розміру сторінок, з ядром 4 КБ. Цілісність програмного забезпечення не гарантується, і будь-які дані, що зберігаються на телефоні, поки завантажувач ОС розблоковано, можуть бути під загрозою. Деякі функції буде вимкнено, тому працюватимуть не всі додатки. Щоб повернутися у виробничий режим, заблокуйте завантажувач ОС пристрою."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Ви працюєте в режимі, незалежному від розміру сторінок, з ядром для сторінок 4 КБ. У цьому режимі цілісність програмного забезпечення не гарантується, і будь-які дані, що зберігаються на телефоні, поки завантажувач операційної системи розблоковано, можуть бути під загрозою. Деякі функції в цих режимах буде вимкнено, тому зможуть працювати не всі додатки. Щоб повернутися у виробничий режим, вам потрібно заблокувати завантажувач операційної системи пристрою. Тоді налаштування пристрою знову буде скинуто й відновляться виробничі налаштування. Коли ОС Android завантажиться на пристрій, вимкніть розблокування завантажувача в параметрах розробника. Якщо ОС Android не завантажується на пристрій або працює нестабільно, відновіть на пристрої останні заводські образи (завантаживши їх звідси: <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>) або перейдіть на сторінку <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> і виберіть \"Очистити пристрій\", \"Заблокувати завантажувач операційної системи\" й \"Примусово оновити всі розділи\"."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Режим, незалежний від розміру сторінок, з ядром 16 КБ"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Ви працюєте в режимі, незалежному від розміру сторінок, з ядром 16 КБ. Цілісність програмного забезпечення не гарантується, і будь-які дані, що зберігаються на телефоні, поки завантажувач ОС розблоковано, можуть бути під загрозою. Деякі функції буде вимкнено, тому працюватимуть не всі додатки. Щоб повернутися у виробничий режим, заблокуйте завантажувач ОС пристрою."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Ви працюєте в режимі, незалежному від розміру сторінок, з ядром для сторінок 16 КБ. У цьому режимі цілісність програмного забезпечення не гарантується, і будь-які дані, що зберігаються на телефоні, поки завантажувач операційної системи розблоковано, можуть бути під загрозою. Деякі функції в цих режимах буде вимкнено, тому зможуть працювати не всі додатки. Щоб повернутися у виробничий режим, вам потрібно знову перейти в режим 4 КБ й заблокувати завантажувач операційної системи пристрою. Тоді налаштування пристрою знову буде скинуто й відновляться виробничі налаштування. Коли ОС Android завантажиться, вимкніть розблокування завантажувача в параметрах розробника. Якщо ОС Android не завантажується або працює нестабільно, відновіть мікропрограму, завантаживши останні заводські образи на сайті <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> або перейдіть на сторінку <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> і виберіть \"Очистити пристрій\", \"Заблокувати завантажувач операційної системи\" й \"Примусово оновити всі розділи\"."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Режим, незалежний від розміру сторінок, з ядром для сторінок 16 КБ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Докладніше"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Обробник звітів про помилки"</string>
@@ -5011,7 +5075,8 @@
<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="6686858308083037810">"Дозволити кілька користувачів"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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">"Використовувати налагодження через Wi-Fi"</string>
@@ -5355,4 +5420,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-ur/arrays.xml b/res/values-ur/arrays.xml
index bf3531d..239a61c 100644
--- a/res/values-ur/arrays.xml
+++ b/res/values-ur/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"سونے کا وقت"</item>
+ <item msgid="4152450357280759894">"ڈرائیونگ"</item>
+ <item msgid="7096549258219399423">"عمیق"</item>
+ <item msgid="2760716776980432977">"زیر انتظام"</item>
+ <item msgid="601734478369121764">"ستارہ"</item>
+ <item msgid="6243809315432780521">"کیلنڈر"</item>
+ <item msgid="4913577903148415331">"وقت"</item>
+ <item msgid="3653377604690057780">"تھیٹر"</item>
+ <item msgid="3843711267408385410">"پھول"</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 6cdb093..197cf7a 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"سماعت کے آلے کی ترتیبات"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"شارٹ کٹ، سماعتی آلہ کی موافقت"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"پہلے سے ترتیب شدہ"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"آپ کے آڈیولوجسٹ کے ذریعہ کوئی پہلے سے ترتیب شدہ پروگرام نہیں ہے"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"پہلے سے ترتیب شدہ کو اپ ڈیٹ نہیں کر سکے"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"آڈیو کا آؤٹ پُٹ"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"آڈیو آؤٹ پٹ کے بارے میں"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"واچ اَن لاک کے بارے میں مزید جانیں"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"گھڑی شامل کریں"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"گھڑی ہٹائیں"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"فنگر پرنٹ اور فیس انلاک"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"فیس اور فنگر پرنٹ اَن لاک"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"کام کے لیے فیس اور فنگر پرنٹ اَن لاک"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"سیٹ اپ درکار ہے"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"چہرے اور فنگر پرنٹس کو شامل کیا گیا"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"آلہ ری اسٹارٹ کریں؟"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"تفصیلی NFC لاگنگ صرف ڈویلپمنٹ مقاصد کے لیے ہے۔ اضافی NFC ڈیٹا بگ رپورٹس میں شامل کیا جاتا ہے جس میں نجی معلومات شامل ہو سکتی ہیں۔ اس ترتیب کو تبدیل کرنے کے لیے اپنا آلہ ری اسٹارٹ کریں۔"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"ری اسٹارٹ کریں"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"کاسٹ کریں"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"مرر"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"وائرلیس ڈسپلے فعال کریں"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"تغیر پذیر"</string>
<string name="brightness" msgid="6216871641021779698">"چمک کی سطح"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"تغیر پذیر چمک"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"تغیر پذیر چمک کے بارے میں"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"آپ کی اسکرین کی چمک خودکار طور پر آپ کے ماحول اور سرگرمیوں کے مطابق ہو جائے گی۔ آپ نئی ترجیحات جاننے میں تغیر پذیر چمک کی مدد کرنے کے لئے سلائیڈر کو دستی طور پر حرکت دے سکتے ہیں۔"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"آن"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"آف"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"بہر حال جاری رکھیں"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"منسوخ کریں"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"میگنیفکیشن کی ترتیبات"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"ایک انگلی سے پین کرنا"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"ایک انگلی گھسیٹ کر میگنیفیکیشن ایریا کو منتقل کریں۔"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"دو انگلیوں کو گھسیٹ کر میگنیفیکیشن ایریا کو منتقل کریں۔"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"اسکرین کے صرف میگنفائی کرنے والے حصے کے دوران دستیاب نہیں ہے"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"زوم کرنے کیلئے ایک بٹن پر تھپتھپائیں"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"مواد کو بڑا کرنے کے لیے اسکرین پر فوری طور پر زوم ان کریں"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>زوم ان کرنے کے لیے:</b><br/> {0,number,integer}۔ میگنیفکیشن شروع کرنے کے لیے شارٹ کٹ کا استعمال کریں<br/> {1,number,integer}۔ اسکرین پر تھپتھپائیں<br/> {2,number,integer}۔ اسکرین پر اِدھر اُدھر حرکت کرنے کے لیے 2 انگلیوں سے گھسیٹیں<br/> {3,number,integer}۔ زوم کو ایڈجسٹ کرنے کے لیے 2 انگلیوں سے چٹکی بھریں<br/> {4,number,integer}۔ میگنیفکیشن بند کرنے کے لیے شارٹ کٹ کا استعمال کریں<br/><br/> <b> عارضی طور پر زوم ان کرنے کے لیے:</b><br/> {0,number,integer}۔ یقینی بنائیں کہ آپ کی میگنیفیکیشن کی قسم فُل اسکرین پر سیٹ ہے<br/> {1,number,integer}۔ میگنیفکیشن شروع کرنے کے لیے شارٹ کٹ کا استعمال کریں<br/> {2,number,integer}۔ اسکرین پر کسی بھی جگہ پر ٹچ کریں اور دبائیں رکھیں<br/> {3,number,integer}۔ اسکرین پر اِدھر اُدھر حرکت کرنے کے لیے انگلی کو گھسیٹیں<br/> {4,number,integer}۔ میگنیفکیشن بند کرنے کے لیے انگلی اٹھائيں"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"جب میگنیفکیشن آن ہو، تو آپ اپنی اسکرین پر زوم ان کرسکتے ہیں۔\n\n"<b>"زوم کرنے کے لیے"</b>"، میگنیفکیشن شروع کریں، پھر اسکرین پر کہیں بھی تھپتھپائیں۔\n"<ul><li>" اسکرول کرنے کے لیے 2 یا زائد انگلیوں سے گھسیٹیں"</li>\n<li>"زوم ایڈجیسٹ کرنے کے لیے 2 یا زائد انگلیوں سے چٹکی بھریں"</li></ul>\n\n<b>"عارضی طور پر زوم کرنے کے لیے"</b>"، میگنیفکیشن شروع کریں، پھر اسکرین پر کہیں بھی ٹچ اور ہولڈ کریں۔\n"<ul><li>"اسکرین کے اردگرد منتقل کرنے کے لیے گھسیٹیں"</li>\n<li>"زوم آؤٹ کرنے کے لیے انگلی اٹھائیں"</li></ul>\n\n"آپ کی بورڈ یا نیویگیشن بار پر زوم ان نہیں کرسکتے۔"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"صفحہ <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">"ایکسیسبیلٹی بٹن کا شارٹ کٹ"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"ترجیحی وضع"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"صرف اہم لوگوں اور ایپس کی جانب سے اطلاعات حاصل کریں"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"فعالیت کی قسم منتخب کریں"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"وقت"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"جیسے \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"کیلنڈر"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"جیسے \"ذاتی کیلنڈر\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"مداخلتوں کی حد مقرر کریں"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"شیڈولز حذف کریں"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"حذف کریں"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"کیلنڈر شامل کریں"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"اپنا کیلنڈر استعمال کریں"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"شیڈول کریں"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"شیڈول سیٹ کریں"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"شیڈول"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"مخصوص اوقات میں فون خاموش کر دیں"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"آواز پیدا کرنے والی مداخلتوں کو اجازت دیں"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"بصری مداخلتیں مسدود کریں"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"بصری سگنلز کی اجازت دیں"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"وہ اطلاعات جو آپ تک پہنچ سکتی ہیں"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"فوکس رہیں"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"اضافی کارروائیاں"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"ڈسپلے کی ترتیبات"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"ڈسپلے کے اختیارات"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"گہری تھیم کو فعال کریں"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"تاریک پس منظر پر ہلکے رنگ کے ٹیکسٹ کو ترجیح دینے کے لیے OS اور ایپس کو سوئچ کریں۔ یہ آنکھوں کیلئے زیادہ آرام دہ ہوتا ہے اور کچھ آلات پر بیٹری کی کافی بچت کرتا ہے"</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="mode_notification_filter_title" msgid="443728483176031977">"مداخلتیں فلٹر کریں"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"کوئی مداخلت فلٹر نہیں کی گئی ہے"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"غیر استعمال شدہ زمرے دکھائیں"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"غیر استعمال شدہ زمرے چھپائیں"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"سبھی"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"نام تبدیل کریں"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"آئیکن تبدیل کریں"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"آئیکن تبدیل کریں"</string>
<string name="warning_button_text" msgid="1274234338874005639">"وارننگ"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"بند کریں"</string>
<string name="device_feedback" msgid="5351614458411688608">"اس آلہ کے بارے میں تاثرات بھیجیں"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB ڈویلپر اختیار استعمال کرنے سے پہلے اس آلہ کے ڈیٹا پارٹیشن کو ext4 میں تبدیل کرنے کی ضرورت ہے۔ اس موڈ میں سافٹ ویئر کی درستگی کی ضمانت نہیں دی جا سکتی ہے، اور بوٹ لوڈر کے غیر مقفل ہونے کے دوران فون پر اسٹور کردہ کوئی بھی ڈیٹا خطرے میں ہو سکتا ہے۔ 16KB اختیار کو فعال کرنے کے لیے اس کے بعد ایک اور ریبوٹ کی ضرورت ہوگی۔ اس موڈ میں آنے کے بعد آپ ایک ہی ریبوٹ میں 4KB اور 16KB موڈ کے درمیان سوئچ کر سکتے ہیں۔ ان موڈز میں کچھ خصوصیات غیر فعال ہو جائیں گی، اس لیے ہو سکتا ہے کچھ ایپلیکیشنز کام نہ کریں۔ آلہ کو پروڈکشن موڈ میں واپس کرنے کے لیے، آپ کو 4KB موڈ پر واپس جانا ہوگا اور پھر بوٹ لوڈر کو لاک کرنا ہوگا، جو فیکٹری آلہ کو ری سیٹ کرتا ہے۔ آلہ کے Android میں کامیابی کے ساتھ بوٹ ہونے کے بعد، ڈیولپر کے اختیارات میں OEM انلاکنگ کو غیر فعال کریں۔ آلہ کو صاف کر دیا جائے گا اور تصدیق کے بعد فائل سسٹم کو ext4 میں تبدیل کر دیا جائے گا۔ اس کے مکمل ہونے کے بعد، براہ کرم 16KB کو دوبارہ فعال کرنے کے لیے واپس آئیں۔"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"سبھی ڈیٹا مٹائیں"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ڈیٹا پارٹیشن کو ext4 پر دوبارہ فارمیٹ کرنے اور صاف کرنے میں ناکام۔"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"16KB موڈ کے لیے بوٹ لوڈر انلاک درکار ہے"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"اس آلہ کو 16KB ڈویلپر اختیار استعمال کرنے سے پہلے بوٹ لوڈر کو غیر مقفل کرنے کی ضرورت ہے۔ اس موڈ میں سافٹ ویئر کی درستگی کی ضمانت نہیں دی جا سکتی ہے، اور بوٹ لوڈر کے غیر مقفل ہونے کے دوران فون پر اسٹور کردہ کوئی بھی ڈیٹا خطرے میں ہو سکتا ہے۔ 16KB موڈ کو فعال کرنے پر صارف کا تمام ڈیٹا اور ترتیبات صاف کر دی جائیں گی۔ بوٹ لوڈر غیر مقفل ہونے کے بعد 16KB اختیار کو چالو کرنے کے لیے دو بار ریبوٹس کی ضرورت ہوگی۔ اس موڈ میں آنے کے بعد آپ ایک ہی ریبوٹ میں 4KB اور 16KB موڈ کے درمیان سوئچ کر سکتے ہیں۔ ان موڈز میں کچھ خصوصیات غیر فعال ہو جائیں گی، اس لیے ہو سکتا ہے کچھ ایپلیکیشنز کام نہ کریں۔ آلہ کو پروڈکشن موڈ میں واپس کرنے کے لیے، آپ کو 4KB موڈ پر واپس جانا ہوگا اور پھر OEM/بوٹ لوڈر کو لاک کرنا ہوگا (جو آلہ کو فیکٹری ری سیٹ کرتا ہے)۔ براہ کرم بوٹ لوڈر کو غیر مقفل کریں اور دوبارہ کوشش کریں۔ آپ اسے کرنے کے طریقے سے متعلق ہدایات یہاں دیکھ سکتے ہیں: <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"4KB صفحہ ایگنوسٹک موڈ کا استعمال"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"آپ صفحہ ایگنوسٹک موڈ کے 4KB موڈ میں ہیں۔ اس موڈ میں سافٹ ویئر کی درستگی کی ضمانت نہیں دی جا سکتی ہے، اور بوٹ لوڈر کے غیر مقفل ہونے کے دوران فون پر اسٹور کردہ کوئی بھی ڈیٹا خطرے میں ہو سکتا ہے۔ ان موڈز میں کچھ خصوصیات غیر فعال ہو جائیں گی، اس لیے ہو سکتا ہے کچھ ایپلیکیشنز کام نہ کریں۔ پروڈکشن موڈ میں دوبارہ داخل ہونے کے لیے، آپ کو آلے کے بوٹ لوڈر کو مقفل کرنا ہوگا۔ مزید پڑھنے کیلئے تھپتھپائیں۔"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"آپ صفحہ ایگنوسٹک موڈ کے 4KB موڈ میں ہیں۔ اس موڈ میں سافٹ ویئر کی درستگی کی ضمانت نہیں دی جا سکتی ہے، اور بوٹ لوڈر کے غیر مقفل ہونے کے دوران فون پر اسٹور کردہ کوئی بھی ڈیٹا خطرے میں ہو سکتا ہے۔ ان موڈز میں کچھ خصوصیات غیر فعال ہو جائیں گی، اس لیے ہو سکتا ہے کچھ ایپلیکیشنز کام نہ کریں۔ پروڈکشن موڈ میں دوبارہ داخل ہونے کے لیے، آپ کو آلے کے بوٹ لوڈر کو مقفل کرنا ہوگا۔ یہ آلہ کو دوبارہ فیکٹری ری سیٹ کر دے گا اور اسے پروڈکشن ترتیبات پر بحال کر دے گا۔ آلہ کے Android میں کامیابی کے ساتھ بوٹ ہونے کے بعد، ڈیولپر کے اختیارات میں OEM انلاکنگ کو غیر فعال کریں۔ اگر آلہ Android میں بوٹ ہونے میں ناکام ہو جاتا ہے یا غیر مستحکم ہو جاتا ہے، تو <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> سے تازہ ترین فیکٹری امیجز کے ساتھ آلہ کو دوبارہ فلیش کریں یا <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> استعمال کریں اور \'آلہ کو صاف کریں\'، \'بوٹ لوڈر کو مقفل کریں\' اور \'سبھی پارٹیشنز کو فورس فلیش کریں\' کو منتخب کریں۔"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"16KB صفحہ ایگنوسٹک موڈ کا استعمال"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"آپ صفحہ ایگنوسٹک موڈ کے 16KB موڈ میں ہیں۔ اس موڈ میں سافٹ ویئر کی درستگی کی ضمانت نہیں دی جا سکتی ہے، اور بوٹ لوڈر کے غیر مقفل ہونے کے دوران فون پر اسٹور کردہ کوئی بھی ڈیٹا خطرے میں ہو سکتا ہے۔ ان موڈز میں کچھ خصوصیات غیر فعال ہو جائیں گی، اس لیے ہو سکتا ہے کچھ ایپلیکیشنز کام نہ کریں۔ پروڈکشن موڈ میں دوبارہ داخل ہونے کے لیے، آپ کو 4K موڈ پر واپس جانا ہوگا اور پھر آلہ کے بوٹ لوڈر کو مقفل کرنا ہوگا۔ مزید پڑھنے کیلئے تھپتھپائیں۔"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"آپ صفحہ ایگنوسٹک موڈ کے 16KB موڈ میں ہیں۔ اس موڈ میں سافٹ ویئر کی درستگی کی ضمانت نہیں دی جا سکتی ہے، اور بوٹ لوڈر کے غیر مقفل ہونے کے دوران فون پر اسٹور کردہ کوئی بھی ڈیٹا خطرے میں ہو سکتا ہے۔ ان موڈز میں کچھ خصوصیات غیر فعال ہو جائیں گی، اس لیے ہو سکتا ہے کچھ ایپلیکیشنز کام نہ کریں۔ پروڈکشن موڈ میں دوبارہ داخل ہونے کے لیے، آپ کو 4K موڈ پر واپس جانا ہوگا اور پھر آلہ کے بوٹ لوڈر کو مقفل کرنا ہوگا۔ یہ آلہ کو دوبارہ فیکٹری ری سیٹ کر دے گا اور اسے پروڈکشن ترتیبات پر بحال کر دے گا۔ آلہ کے Android میں کامیابی کے ساتھ بوٹ ہونے کے بعد، ڈیولپر کے اختیارات میں OEM انلاکنگ کو غیر فعال کریں۔ اگر آلہ Android میں بوٹ ہونے میں ناکام ہو جاتا ہے یا غیر مستحکم ہو جاتا ہے، تو <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> سے تازہ ترین فیکٹری امیجز کے ساتھ آلہ کو دوبارہ فلیش کریں یا <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> استعمال کریں اور \'آلہ کو صاف کریں\'، \'بوٹ لوڈر کو مقفل کریں\' اور \'سبھی پارٹیشنز کو فورس فلیش کریں\' کو منتخب کریں۔"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB صفحہ ایگنوسٹک موڈ"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"مزید پڑھیں"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"بگ رپورٹ کا ہینڈلر"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"متعدد صارفین کو اجازت دیں"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-uz/arrays.xml b/res/values-uz/arrays.xml
index 37e6546..2fff628 100644
--- a/res/values-uz/arrays.xml
+++ b/res/values-uz/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Uyqu vaqti"</item>
+ <item msgid="4152450357280759894">"Avtomobilda"</item>
+ <item msgid="7096549258219399423">"Immersiv"</item>
+ <item msgid="2760716776980432977">"Boshqarilayotgan"</item>
+ <item msgid="601734478369121764">"Yulduzcha bilan belgilash"</item>
+ <item msgid="6243809315432780521">"Taqvim"</item>
+ <item msgid="4913577903148415331">"Vaqt"</item>
+ <item msgid="3653377604690057780">"Teatr"</item>
+ <item msgid="3843711267408385410">"Gul"</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 6b57ba0..ed83fe9 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Eshitish qurilmasi sozlamalari"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Tezkor tugma, eshitish apparati bilan moslik"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Andoza"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Audiolog dasturlagan andozalar topilmadi"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Andoza yangilanmadi"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Audio chiqishi"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Audio chiqishi haqida"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Soat bilan ochish haqida batafsil"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Soat kiritish"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Soatni olib tashlash"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Barmoq izi va yuz bilan ochish"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Yuz va barmoq izi bilan ochish"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ish uchun Yuz va Barmoq izi bilan ochish"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Sozlash talab etiladi"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Yuz va barmoq izlari kiritildi"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Ilovalarni oʻrnating"</b>\n"Makoningizda maxfiy saqlamoqchi boʻlgan ilovalarni oʻrnating."</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Yodda tuting"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Makonni qulflaganingizda ilovalar toʻxtatiladi"</b>\n"Makoningizni qulflaganingizda xonadagi ilovalar toʻxtatiladi va ulardan bildirishnomalar olmaysiz"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Maxfiy makon fonda ishlaydigan yoki tibbiy ilovalar kabi muhim bildirishnoma yuboradigan ilovalar uchun muvofiq emas. Chunki, makon qulflanganda bildirishnomalar va fondagi jarayonlar toʻxtatiladi.\n\nMaxfiy makon qulflanganda undagi ilovalar ruxsatlar menejeri, maxfiylik paneli va boshqa sozlamalarda chiqmaydi.\n\nMaxfiy makon boshqa qurilmaga oʻtkazilmaydi. Boshqa qurilmada ishlatish uchun boshqa maxfiy joy sozlanishi kerak.\n\nQurilmani kompyuterga ulash yoki unga zararli ilova oʻrnatish ruxsati bor shaxslar maxfiy makonga ruxsat olishi mumkin."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Maxfiy makon fonda ishlaydigan yoki tibbiy ilovalar kabi muhim bildirishnoma yuboradigan ilovalar uchun muvofiq emas. Chunki, makon qulflanganda bildirishnomalar va fondagi jarayonlar toʻxtatiladi.\n\nMaxfiy makon qulflanganda undagi ilovalar ruxsatlar menejeri, maxfiylik paneli va boshqa sozlamalarda chiqmaydi.\n\nMaxfiy makon boshqa qurilmaga tiklanmaydi. Boshqa qurilmada ishlatish uchun boshqa makon sozlashingiz kerak boʻladi.\n\nQurilmangizni kompyuterga ulagan yoki qurilmangizga zararli ilovalarni oʻrnatgan har bir kishi maxfiy makoningizga kirishi mumkin."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Maxfiy makon haqida batafsil"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Bu bir necha daqiqa vaqt oladi"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Maxfiy joy sozlanmoqda…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Qurilma qayta ishga tushirilsinmi?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Tafsilotli NFC jurnali faqat ishlab chiqish maqsadlari uchun moʻljallangan. Qoʻshimcha NFC maʼlumotlari shaxsiy maʼlumotlar bor xato hisobotlariga kiritilgan. Bu sozlamani oʻzgartirish uchun qurilmangizni qayta ishga tushiring."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Qayta yoqish"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Translatsiya"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"koʻzgu"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Simsiz monitorni yoqish"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Moslashuvchan"</string>
<string name="brightness" msgid="6216871641021779698">"Yorqinlik darajasi"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Moslashuvchan yorqinlik"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Adaptiv yorqinlik haqida"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Ekran yorqinligi muhit va harakatlaringizga qarab avtomatik moslanadi. Yorqinlikni o‘zingizga moslashtirish uchun slayderni qo‘lda surib sozlashingiz mumkin."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Yoniq"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Oʻchiq"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Foydalanuvchi tanlagan: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Nutq"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Kursor tezligi"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"O‘yin qurilmasi"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Tebranishni uzatish"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"O‘yin qurilmasi ulanganda tebranish yuborish"</string>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Baribir davom ettirilsin"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Bekor qilish"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Kattalashtirish sozlamalari"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Bitta barmoq bilan sudrash"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"Lupani 1 barmoq bilan suring"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"Ekranda kezish uchun 1 barmoqni sudrang"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Kattalashtirish hududini bitta barmoq bilan suring."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Kattalashtirish hududini ikkita barmoq bilan suring."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Faqat ekran qismini kattalashtirishda ishlamaydi"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Kattalashtirish uchun tugmani bosing"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Kontentni kattaroq koʻrish uchun ekranni tezkor yaqinlashtiring"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Kattalashtirish uchun:</b><br/> {0,number,integer}. Kattalashtirish tugmasini bosing<br/> {1,number,integer}. Ekranga bosing<br/> {2,number,integer}. Ekranni 2 ta barmoq bilan suring<br/> {3,number,integer}. Moslash uchun 2 ta barmoq bilan chimding<br/> {4,number,integer}. Yakunlash uchun kattalashtirish tugmasini bosing<br/><br/><b>Vaqtincha kattalashtirish uchun:</b><br/> {0,number,integer}. Kattalashtirish rejimi butun ekranga tatbiq etilganiga ishonch hosil qiling.<br/> {1,number,integer}. Kattalashtirish tugmasini bosing<br/> {2,number,integer}. Ekranning istalgan qismini bosib turing<br/> {3,number,integer}. Ekranni barmoq bilan suring<br/> {4,number,integer}. Yakunlash uchun barmoqni ekrandan oling"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>Yaqinlashtirish:</b><br/> {0,number,integer}. Kattalashtirish tugmasini bosing<br/> {1,number,integer}. Ekranga bosing<br/> {2,number,integer}. Ekranda kezish uchun 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_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>
@@ -3323,13 +3362,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Hech qanday}=1{1 ta reja sozlangan}other{# ta reja sozlangan}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Bezovta qilinmasin"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Muhim rejimlar"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Faqat muhim odamlar va ilovalardan bildirishnomalarni olish"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Faollashtirish turini tanlash"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Vaqt"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Misol: \"9:30 – 17:00\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Taqvim"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Misol: \"Shaxsiy taqvim\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Bildirishnomalarni kamaytirish"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Bezovta qilinmasin rejimini yoqing"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Bezovta qilinmasin rejimi signal va media tovushlari uchun ishlamaydi"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Jadvallar"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Jadvallarni oʻchirish"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Oʻchirish"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Tahrirlash"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Jadvallar"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Jadval"</string>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Taqvim qoʻshish"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Taqvimingizdan foydalanish"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Jadval"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Jadval tuzing"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Jadval"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> soat <xliff:g id="MINUTES">%2$d</xliff:g> daqiqa"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Jadval"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Muayyan vaqtlarda ovozsiz qilish"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Tovush chiqarishga ruxsat"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Vizual bildirishnomalarni bloklash"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Vizual signallarga ruxsat"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Sizga kelishi mumkin bildirishnomalar"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Diqqatni jamlang"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Qoʻshimcha amallar"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Ekran sozlamalari"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Ekran parametrlari"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"tungi mavzuni yoqish"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Operatsion tizim va ilovalar sozlamalarini qorongʻi fonda yorqin matn chiqarish tanlovi bilan almashtiring, bunda koʻzlar qiynalmaydi va ayrim qurilmalarda batareya sezilarli tejaladi"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Ekran oʻzgarishlarsiz}=1{{effect_1}}=2{{effect_1} va {effect_2}}=3{{effect_1}, {effect_2} va {effect_3}}other{{effect_1}, {effect_2} va yana # ta}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Tanaffuslarni filtrlash"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Hech qanday tanaffus filtrlanmagan"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Bildirishnomalarni filtrlab chiqarish parametrlari"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Bezovta qilinmasin rejimida"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Bildirishnomalar tovushsiz keladi"</string>
@@ -3665,6 +3722,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Turkumlar"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Boshqa"</string>
<string name="no_channels" msgid="4716199078612071915">"Bu ilova hech qanday bildirishnoma joylamagan"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Nofaol turkumlarni chiqarish"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Ilovadagi boshqa sozlamalar"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Nofaol turkumlarni chiqarish"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Nofaol turkumlarni berkitish"</string>
@@ -3774,6 +3832,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Tanlangan ilovalar"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Hech biri"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Hammasi"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Ilovalarga Bezovta qilinmasin rejimiga amal qilmasligiga ruxsat berish"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Bezovta qilinmasin rejimi ishlamaydigan ilovalar"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Boshqa ilovalarni tanlang"</string>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Signallarni faqat {time} ga bir soat qolgungacha faol qilish}other{Signallarni faqat {time} ga # soat qolgungacha faol qilish}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"“Faqat signallar” rejimini <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> gacha faol bo‘ladigan qilib yoqish"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Har doim bezovta qilinaversin"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Qayta nomlash"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Belgini oʻzgartirish"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Belgini oʻzgartirish"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Diqqat"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Yopish"</string>
<string name="device_feedback" msgid="5351614458411688608">"Qurilma haqida fikr-mulohaza"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"16KB dasturchi variantidan foydalanishdan oldin ushbu qurilmaning maʼlumotlar boʻlimi ext4 tizimiga oʻgirilishi kerak. Ushbu rejimda dasturning yaxlitligini kafolatlab boʻlmaydi va bootloader qulfdan chiqarilganda telefonda saqlangan har qanday maʼlumotlar xavf ostida qolishi mumkin. 16 KB rejim faollashtirilgandan keyin yana bir marta qayta yoqishni talab qiladi. Ushbu rejimga almashtirganingizdan keyin bir marta qayta yoqish bilan 4 KB va 16 KB rejimlari orasida almashtirishingiz mumkin. Ayrim funksiyalar bu rejimlarda faolsizlantiriladi, shu sababdan ayrim ilovalar ishlamasligi mumkin. Qurilmani ishchi rejimiga qaytarish uchun siz 4 KB rejimiga qaytishingiz va qurilmani zavod sozlamalariga qaytaradigan bootloaderni qulflashingiz kerak. Qurilma Android tizimiga muvaffaqiyatli yuklangandan keyin Dasturchi sozlamalarida OEM qulfini ochish funksiyasini faolsizlantiring. Tasdiqlangandan keyin qurilma tozalanadi va fayl ext4 tizimiga oʻzgartiriladi. Buni tugatgandan keyin 16 KB rejimni qayta yoqish uchun qaytib keling."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Hamma narsani tozalash"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"ext4 tizimida qayta formatlanmadi va axborot segmentlari tozalanmadi."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Bootloader qulfini ochish 16 KB rejimi uchun talab qilinadi"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"16 KB dasturchi variantidan foydalanishdan oldin bu qurilma bootloaderni qulfdan chiqarishi kerak. Ushbu rejimda dasturning yaxlitligini kafolatlab boʻlmaydi va bootloader qulfdan chiqarilganda telefonda saqlangan har qanday maʼlumotlar xavf ostida qolishi mumkin. 16 KB rejimi faollashtirilganda barcha foydalanuvchi maʼlumotlari va sozlamalari tozalab tashlanadi. Bootloader qulfdan chiqarilgandan keyin 16 KB rejimni faollashtirish uchun ikki marta qayta yoqish kerak boʻladi. Ushbu rejimga almashtirganingizdan keyin bir marta qayta yoqish bilan 4 KB va 16 KB rejimlari orasida almashtirishingiz mumkin. Ayrim funksiyalar bu rejimlarda faolsizlantiriladi, shu sababdan ayrim ilovalar ishlamasligi mumkin. Qurilmani ishchi rejimiga qaytarish uchun siz 4 KB rejimiga qaytishingiz va qurilmani zavod sozlamalariga qaytaradigan OEM/bootloaderni qulflashingiz kerak. Bootloaderni qulfdan chiqaring va qaytadan urining. Buni qanday qilish haqida koʻrsatmalar bilan <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a> sahifasi orqali tanishib chiqishingiz mumkin."</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Sahifadan mustaqil 4 KB rejimdan foydalanilmoqda"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Siz sahifadan mustaqil 4 KB rejimdasiz. Ushbu rejimda dasturning yaxlitligini kafolatlab boʻlmaydi va bootloader qulfdan chiqarilganda telefonda saqlangan har qanday maʼlumotlar xavf ostida qolishi mumkin. Ayrim funksiyalar bu rejimlarda faolsizlantiriladi, shu sababdan ayrim ilovalar ishlamasligi mumkin. Ishchi rejimiga qayta kirish uchun qurilmaning bootloaderini qulflashingiz kerak. Batafsil axborot olish uchun bosing."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Siz sahifadan mustaqil 4 KB rejimdasiz. Ushbu rejimda dasturning yaxlitligini kafolatlab boʻlmaydi va bootloader qulfdan chiqarilganda telefonda saqlangan har qanday maʼlumotlar xavf ostida qolishi mumkin. Ayrim funksiyalar bu rejimlarda faolsizlantiriladi, shu sababdan ayrim ilovalar ishlamasligi mumkin. Ishchi rejimiga qayta kirish uchun qurilmaning bootloaderini qulflashingiz kerak. Bu qurilmani zavod sozlamalariga qaytaradi va uni ishchi sozlamalariga qaytaradi. Qurilma Android tizimiga muvaffaqiyatli yuklangandan keyin Dasturchi sozlamalarida OEM qulfini ochish funksiyasini faolsizlantiring. Agar qurilma Android tizimiga yuklanmasa yoki barqaror ishlamasa, qurilmani eng oxirgi dasturning asl tasvirini <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> orqali olib qayta yuklang yoki <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ishlating va “Qurilmani tozalash”, “Bootloaderni qulflash” va “Barcha boʻlimlarni majburiy fleshlash” bandlarini tanlang."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Sahifadan mustaqil 16 KB rejimdan foydalanilmoqda"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Siz sahifadan mustaqil 16 KB rejimdasiz. Ushbu rejimda dasturning yaxlitligini kafolatlab boʻlmaydi va bootloader qulfdan chiqarilganda telefonda saqlangan har qanday maʼlumotlar xavf ostida qolishi mumkin. Ayrim funksiyalar bu rejimlarda faolsizlantiriladi, shu sababdan ayrim ilovalar ishlamasligi mumkin. Ishchi rejimiga qayta kirish uchun siz 4K rejimiga qaytishingiz va keyin qurilmaning bootloaderini qulflashingiz kerak. Batafsil axborot olish uchun bosing."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Siz sahifadan mustaqil 16 KB rejimdasiz. Ushbu rejimda dasturning yaxlitligini kafolatlab boʻlmaydi va bootloader qulfdan chiqarilganda telefonda saqlangan har qanday maʼlumotlar xavf ostida qolishi mumkin. Ayrim funksiyalar bu rejimlarda faolsizlantiriladi, shu sababdan ayrim ilovalar ishlamasligi mumkin. Ishchi rejimiga qayta kirish uchun siz 4K rejimiga qaytishingiz va keyin qurilmaning bootloaderini qulflashingiz kerak. Bu qurilmani zavod sozlamalariga qaytaradi va uni ishchi sozlamalariga qaytaradi. Qurilma Android tizimiga muvaffaqiyatli yuklangandan keyin Dasturchi sozlamalarida OEM qulfini ochish funksiyasini faolsizlantiring. Agar qurilma Android tizimiga yuklanmasa yoki barqaror ishlamasa, qurilmani eng oxirgi dasturning asl tasvirini <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> orqali olib qayta yuklang yoki <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> ishlating va “Qurilmani tozalash”, “Bootloaderni qulflash” va “Barcha boʻlimlarni majburiy fleshlash” bandlarini tanlang."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB sahifadan mustaqil rejim"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Batafsil"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Xatoliklarni xabar qilish vositasi"</string>
@@ -5009,7 +5069,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Ilovani mahkamlashdan foydalanish"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Dasturchi sozlamalaridan foydalanish"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Chop etish xizmatidan foydalanish"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Bir nechta foydalanuvchiga ruxsat berish"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"ruxsat, bir nechta, foydalanuvchi, ruxsat berish, koʻp"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"bir nechta, foydalanuvchilar, profillar, odamlar, hisoblar, almashtirish, koʻp"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Wi-Fi orqali debagging"</string>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml
index 3f83b3d..34ed335 100644
--- a/res/values-vi/arrays.xml
+++ b/res/values-vi/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Giờ đi ngủ"</item>
+ <item msgid="4152450357280759894">"Lái xe"</item>
+ <item msgid="7096549258219399423">"Sống động"</item>
+ <item msgid="2760716776980432977">"Được quản lý"</item>
+ <item msgid="601734478369121764">"Sao"</item>
+ <item msgid="6243809315432780521">"Lịch"</item>
+ <item msgid="4913577903148415331">"Thời gian"</item>
+ <item msgid="3653377604690057780">"Nhà hát"</item>
+ <item msgid="3843711267408385410">"Hoa"</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 9efb9c4..18c7af3 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Cài đặt thiết bị trợ thính"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Phím tắt, khả năng tương thích với thiết bị trợ thính"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Chế độ đặt sẵn"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Không có chế độ đặt sẵn do chuyên gia thính học lập trình"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Không cập nhật được giá trị đặt trước"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Đầu ra âm thanh"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Giới thiệu về đầu ra âm thanh"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Tìm hiểu thêm về tính năng Mở khoá bằng đồng hồ"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Thêm đồng hồ"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Xoá đồng hồ"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Mở khoá bằng vân tay và Mở khoá bằng khuôn mặt"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Mở khóa bằng khuôn mặt và vân tay"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Mở khoá bằng khuôn mặt và vân tay cho công việc"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Cần thiết lập"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Đã thêm khuôn mặt và các vân tay"</string>
@@ -575,7 +576,7 @@
<string name="private_space_new_lock_message" msgid="3117703578905489206">"Bạn sẽ cần nhập mã PIN, hình mở khoá hoặc mật khẩu của thiết bị trên màn hình tiếp theo"</string>
<string name="private_space_auto_lock_title" msgid="8663409382910601261">"Tự động khoá không gian riêng tư"</string>
<string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"Bạn có thể tự động khoá không gian riêng tư của mình nếu không sử dụng thiết bị trong một khoảng thời gian"</string>
- <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Mỗi khi khoá thiết bị"</string>
+ <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"Mỗi khi thiết bị khoá"</string>
<string name="private_space_auto_lock_after_inactivity" msgid="7107814517866649733">"5 phút sau thời gian chờ khoá màn hình"</string>
<string name="private_space_auto_lock_after_device_restart" msgid="288755768725895029">"Chỉ sau khi khởi động lại thiết bị"</string>
<string name="private_space_hide_page_title" msgid="3364639176511877414">"Ẩn không gian riêng tư"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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 quan trọng, 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 quan trọng, 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_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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Khởi động lại thiết bị?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Chế độ ghi nhật ký chi tiết về Giao tiếp phạm vi gần (NFC) chỉ dành cho mục đích phát triển. Dữ liệu bổ sung về NFC sẽ được đưa vào báo cáo lỗi. Dữ liệu này có thể chứa thông tin riêng tư. Hãy khởi động lại thiết bị để thay đổi chế độ cài đặt này."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Khởi động lại"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Truyền"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"phản chiếu"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Bật hiển thị không dây"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Thích ứng"</string>
<string name="brightness" msgid="6216871641021779698">"Độ sáng"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Độ sáng thích ứng"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Giới thiệu về độ sáng thích ứng"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Độ sáng màn hình sẽ tự động điều chỉnh theo môi trường và hoạt động của bạn. Bạn có thể di chuyển thanh trượt theo cách thủ công để giúp tính năng độ sáng thích ứng học các lựa chọn ưu tiên của bạn."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Đang bật"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Tắt"</string>
@@ -1972,6 +2002,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Người dùng đã chọn: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Lời nói"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Tốc độ con trỏ"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Trình điều khiển trò chơi"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Chuyển hướng rung"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Chuyển hướng rung sang bộ điều khiển trò chơi khi được kết nối."</string>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Vẫn tiếp tục"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Huỷ"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Cài đặt phóng to"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"Di chuyển vùng phóng to bằng một ngón tay"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Di chuyển vùng phóng to bằng cách kéo một ngón tay."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Di chuyển vùng phóng to bằng cách kéo hai ngón tay."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Không dùng được khi chỉ phóng to một phần màn hình"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Nhấn vào nút để thu phóng"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Nhanh chóng phóng to màn hình để hiển thị nội dung lớn hơn"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Cách phóng to:</b><br/> {0,number,integer}. Dùng phím 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 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 phím tắt để dừng phóng to<br/><br/> <b>Cách phóng to tạm thời:</b><br/> {0,number,integer}. Hãy nhớ đặt kiểu phóng to thành toàn màn hình<br/> {1,number,integer}. Dùng phím tắt để bắt đầu phóng to<br/> {2,number,integer}. Chạm và giữ một vị trí bất kỳ trên màn hình<br/> {3,number,integer}. Kéo ngón tay để di chuyển xung quanh màn hình<br/> {4,number,integer}. Nhấc ngón tay lên để dừng phóng to"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<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>
@@ -3323,13 +3366,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Không có}=1{Đã đặt 1 lịch biểu}other{Đã đặt # lịch biểu}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Không làm phiền"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Chế độ ưu tiên"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Chỉ nhận thông báo của những người và ứng dụng quan trọng"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Chọn loại quy trình kích hoạt"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Thời gian"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Ví dụ: \"9:30 – 5:00 CH\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Lịch"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Ví dụ: \"Lịch cá nhân\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Hạn chế bị gián đoạn"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Xóa lịch biểu"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Xóa"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Chỉnh sửa"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Lịch biểu"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Lịch biểu"</string>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Thêm lịch"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Dùng lịch của bạn"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Lịch biểu"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Đặt lịch biểu"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Lịch biểu"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"<xliff:g id="HOURS">%1$d</xliff:g> tiếng <xliff:g id="MINUTES">%2$d</xliff:g> phút"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Lên lịch"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Tắt tiếng điện thoại vào thời gian nhất định"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Cho phép các hoạt động phát ra âm thanh có thể làm gián đoạn"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Ngăn gián đoạn hình ảnh"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Cho phép tín hiệu hình ảnh"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Những thông báo mà bạn có thể nhận được"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Luôn tập trung"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Thao tác khác"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Chế độ cài đặt màn hình"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Lựa chọn hiển thị"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"bật giao diện tối"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Chuyển đổi hệ điều hành và ứng dụng để ưu tiên dùng văn bản sáng trên nền tối, chế độ này có thể dễ nhìn hơn và giúp tiết kiệm pin đáng kể trên một số thiết bị"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Không thay đổi chế độ hiển thị}=1{{effect_1}}=2{{effect_1} và {effect_2}}=3{{effect_1}, {effect_2} và {effect_3}}other{{effect_1}, {effect_2} và # chế độ khác}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Lọc hoạt động gây gián đoạn"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Chưa lọc hoạt động gây gián đoạn nào"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Các lựa chọn hiển thị đối với thông báo được lọc"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Khi chế độ Không làm phiền đang bật"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Không phát âm thanh khi có thông báo"</string>
@@ -3665,6 +3726,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Danh mục"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Khác"</string>
<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="hide_unused_channels" msgid="2019739275175707170">"Ẩn các danh mục không dùng"</string>
@@ -3774,6 +3836,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Các ứng dụng được chọn"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Không có"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Tất cả"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Cho phép ứng dụng ghi đè"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Những ứng dụng có thể làm gián đoạn chế độ Không làm phiền"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Chọn ứng dụng khác"</string>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Đổi sang chế độ chỉ báo thức trong 1 giờ cho đến {time}}other{Đổi sang chế độ chỉ báo thức trong # giờ cho đến {time}}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Đổi sang báo thức chỉ đến khi <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Đổi sang luôn làm gián đoạn"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Đổi tên"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Thay đổi biểu tượng"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Thay đổi biểu tượng"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Cảnh báo"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Đóng"</string>
<string name="device_feedback" msgid="5351614458411688608">"Gửi ý kiến phản hồi về thiết bị này"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Bạn phải chuyển đổi phân vùng dữ liệu của thiết bị này sang ext4 thì mới có thể dùng tuỳ chọn 16 KB cho nhà phát triển. Ở chế độ này, tính toàn vẹn của phần mềm không được đảm bảo, đồng thời mọi dữ liệu lưu trữ trên điện thoại này có thể gặp rủi ro trong khi trình tải khởi động được mở khoá. Nếu kích hoạt chế độ 16 KB, bạn sẽ phải khởi động lại một lần nữa sau lần này. Khi đã ở chế độ này, bạn chỉ cần khởi động lại một lần là có thể chuyển qua lại giữa chế độ 4 KB và 16 KB. Một số tính năng bị tắt ở các chế độ này nên có thể một vài ứng dụng sẽ không hoạt động. Để đặt lại thiết bị về chế độ cài đặt gốc, bạn cần quay lại chế độ 4 KB rồi khoá trình tải khởi động (thao tác này sẽ đặt lại thiết bị về trạng thái ban đầu). Sau khi thiết bị khởi động thành công vào Android, hãy tắt chế độ mở khoá OEM trong Tuỳ chọn cho nhà phát triển. Sau khi bạn xác nhận, dữ liệu trên thiết bị sẽ được xoá sạch và hệ thống tệp sẽ được thay đổi thành ext4. Sau khi quá trình này hoàn thành, vui lòng quay lại để bật lại chế độ 16 KB."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Xoá hết dữ liệu"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Không định dạng lại được phân vùng dữ liệu về ext4 và không xoá sạch được phân vùng dữ liệu."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Cần mở khoá trình tải khởi động để dùng chế độ 16 KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Bạn cần phải mở khoá trình tải khởi động cho thiết bị này thì mới dùng được tuỳ chọn 16 KB cho nhà phát triển. Ở chế độ này, tính toàn vẹn của phần mềm không được đảm bảo, đồng thời mọi dữ liệu lưu trữ trên điện thoại này có thể gặp rủi ro trong khi trình tải khởi động được mở khoá. Tất cả dữ liệu người dùng và các chế độ cài đặt sẽ bị xoá sạch khi bạn kích hoạt chế độ 16 KB. Sau khi trình tải khởi động được mở khoá, bạn cần khởi động lại 2 lần thì mới kích hoạt được chế độ 16 KB. Khi đã ở chế độ này, bạn chỉ cần khởi động lại một lần là có thể chuyển qua lại giữa chế độ 4 KB và 16 KB. Một số tính năng bị tắt ở các chế độ này nên có thể một vài ứng dụng sẽ không hoạt động. Để đặt lại thiết bị về chế độ cài đặt gốc, bạn cần quay lại chế độ 4 KB, sau đó khoá OEM/trình tải khởi động (thao tác này sẽ đặt lại thiết bị về trạng thái ban đầu). Hãy mở khoá trình tải khởi động rồi thử lại. Bạn có thể xem hướng dẫn về cách thực hiện việc này tại <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Dùng chế độ 4 KB của chế độ không xác định kích thước trang"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Bạn đang ở chế độ 4 KB của chế độ không xác định kích thước trang. Ở chế độ này, tính toàn vẹn của phần mềm không được đảm bảo, đồng thời mọi dữ liệu lưu trữ trên điện thoại này có thể gặp rủi ro trong khi trình tải khởi động được mở khoá. Một số tính năng bị tắt ở các chế độ này nên có thể một vài ứng dụng sẽ không hoạt động. Để đặt lại thiết bị về chế độ cài đặt gốc, bạn phải khoá trình tải khởi động của thiết bị. Hãy nhấn để đọc thêm."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Bạn đang ở chế độ 4 KB của chế độ không phụ thuộc kích thước trang. Ở chế độ này, tính toàn vẹn của phần mềm không được đảm bảo, đồng thời mọi dữ liệu lưu trữ trên điện thoại này có thể gặp rủi ro trong khi trình tải khởi động được mở khoá. Một số tính năng bị tắt ở các chế độ này nên có thể một vài ứng dụng sẽ không hoạt động. Để đặt lại thiết bị về chế độ cài đặt gốc, bạn phải khoá trình tải khởi động của thiết bị. Thao tác này sẽ đặt lại thiết bị về trạng thái ban đầu và khôi phục các chế độ cài đặt gốc. Sau khi thiết bị khởi động thành công vào Android, hãy tắt chế độ mở khoá OEM trong Tuỳ chọn cho nhà phát triển. Nếu thiết bị không khởi động vào Android hoặc không ổn định, hãy cài đặt ROM lại cho thiết bị với hình ảnh gốc mới nhất từ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> hoặc sử dụng <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> rồi chọn \"Wipe Device\" (Xoá thiết bị), \"Lock Bootloader\" (Khoá trình tải khởi động) và \"Force Flash all partitions\" (Buộc cài đặt ROM cho mọi phân vùng)."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Dùng chế độ 16 KB của chế độ không phụ thuộc kích thước trang"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Bạn đang ở chế độ 16 KB của chế độ không xác định kích thước trang. Ở chế độ này, tính toàn vẹn của phần mềm không được đảm bảo, đồng thời mọi dữ liệu lưu trữ trên điện thoại này có thể gặp rủi ro trong khi trình tải khởi động được mở khoá. Một số tính năng bị tắt ở các chế độ này nên có thể một vài ứng dụng sẽ không hoạt động. Để đặt lại thiết bị về chế độ cài đặt gốc, bạn phải quay lại chế độ 4K rồi khoá trình tải khởi động của thiết bị. Hãy nhấn để đọc thêm."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Bạn đang ở chế độ 16 KB của chế độ không phụ thuộc kích thước trang. Ở chế độ này, tính toàn vẹn của phần mềm không được đảm bảo, đồng thời mọi dữ liệu lưu trữ trên điện thoại này có thể gặp rủi ro trong khi trình tải khởi động được mở khoá. Một số tính năng bị tắt ở các chế độ này nên có thể một vài ứng dụng sẽ không hoạt động. Để đặt lại thiết bị về chế độ cài đặt gốc, bạn phải quay lại chế độ 4K rồi khoá trình tải khởi động của thiết bị. Thao tác này sẽ đặt lại thiết bị về trạng thái ban đầu và khôi phục các chế độ cài đặt gốc. Sau khi thiết bị khởi động thành công vào Android, hãy tắt chế độ mở khoá OEM trong Tuỳ chọn cho nhà phát triển. Nếu thiết bị không khởi động vào Android hoặc không ổn định, hãy cài đặt ROM lại cho thiết bị với hình ảnh gốc mới nhất từ <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> hoặc sử dụng <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> rồi chọn \"Wipe Device\" (Xoá thiết bị), \"Lock Bootloader\" (Khoá trình tải khởi động) và \"Force Flash all partitions\" (Buộc cài đặt ROM cho mọi phân vùng)."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Chế độ 16 KB của chế độ không xác định kích thước trang"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Đọc thêm"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Trình xử lý báo cáo lỗi"</string>
@@ -5009,7 +5073,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Sử dụng tính năng ghim ứng dụng"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Sử dụng tùy chọn cho nhà phát triển"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Dùng dịch vụ in"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Cho phép nhiều người dùng"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"cho phép, nhiều, người dùng"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"nhiều, người dùng, hồ sơ, mọi người, tài khoản, chuyển"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Sử dụng tính năng gỡ lỗi qua Wi-Fi"</string>
@@ -5353,4 +5418,6 @@
<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 dùng <xliff:g id="DEVICE_NAME">%1$s</xliff:g> để quét mã QR của luồng âm thanh mà bạn muốn nghe"</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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index 486d9f7..f01a72c 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"睡眠时间"</item>
+ <item msgid="4152450357280759894">"驾车"</item>
+ <item msgid="7096549258219399423">"沉浸"</item>
+ <item msgid="2760716776980432977">"受管理"</item>
+ <item msgid="601734478369121764">"星形"</item>
+ <item msgid="6243809315432780521">"日历"</item>
+ <item msgid="4913577903148415331">"时间"</item>
+ <item msgid="3653377604690057780">"剧院"</item>
+ <item msgid="3843711267408385410">"花朵"</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 8920759..6c7dafe 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"助听装置设置"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"快捷键、助听器兼容性"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"预设"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"您的听觉矫正专家未设定任何预设"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"无法更新预设"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"音频输出"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"音频输出简介"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"详细了解“手表解锁”功能"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"添加手表"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"移除手表"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"指纹解锁和人脸解锁"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"人脸解锁和指纹解锁"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"用于工作资料的人脸解锁和指纹解锁"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"需要设置"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"已添加面孔和多个指纹"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"要重启设备吗?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"详细 NFC 日志记录仅用于开发目的。错误报告中包含其他 NFC 数据,其中可能包含私密信息。如需更改此设置,请重启设备。"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"重启"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"投屏"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"镜像"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"开启无线显示"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"自适应"</string>
<string name="brightness" msgid="6216871641021779698">"亮度"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"自适应亮度"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"自适应亮度简介"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"系统会根据您的环境和活动自动调节屏幕亮度。您可以手动移动滑块,帮助“自适应亮度”功能了解您偏好的亮度。"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"已开启"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"已关闭"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"仍然继续"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"取消"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"放大设置"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"一根手指平移"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"拖动一根手指即可移动放大区域。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"拖动两根手指即可移动放大区域。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"如果仅放大局部屏幕,则无法使用此功能"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"点按按钮即可放大"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"快速放大屏幕,更清晰地查看内容"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>如需放大屏幕,请执行以下操作:</b><br/> {0,number,integer}. 使用快捷方式启动放大功能<br/> {1,number,integer}. 点按屏幕<br/> {2,number,integer}. 拖动双指在屏幕上四处移动<br/> {3,number,integer}. 张合双指以调整缩放比例<br/> {4,number,integer}. 使用快捷方式停止放大功能<br/><br/> <b>如需暂时放大屏幕,请执行以下操作:</b><br/> {0,number,integer}. 确保已将放大类型设为“全屏”<br/> {1,number,integer}. 使用快捷方式启动放大功能<br/> {2,number,integer}. 轻触并按住屏幕上的任意位置<br/> {3,number,integer}. 拖动单指在屏幕上四处移动<br/> {4,number,integer}. 抬起手指以停止放大功能"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"开启放大功能后,您就可以放大屏幕上的内容。\n\n"<b>"要放大内容"</b>",请先启动放大功能,然后点按屏幕上的任意位置。\n"<ul><li>"拖动双指或多指即可进行滚动"</li>\n<li>"张合双指或多指即可调整缩放级别"</li></ul>\n\n<b>"要暂时性放大内容"</b>",请先启动放大功能,然后轻触并按住屏幕上的任意位置。\n"<ul><li>"拖动手指即可在屏幕上四处移动"</li>\n<li>"松开手指即可缩小回原来的状态"</li></ul>\n\n"您无法针对键盘或导航栏使用放大功能。"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"第 <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">"“无障碍”按钮快捷方式"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"优先模式"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"仅接收来自重要联系人和重要应用的通知"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"选择激活类型"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"时间"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"例如:“上午 9:30 至下午 5:00”"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"日历"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"例如:“个人日历”"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"限制打扰"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"删除时间表"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"删除"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"添加日程表"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"使用您的日程表"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"日程"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"设置时间表"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"时间表"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"在特定的时间将手机设为静音"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"可以发出声音的例外项"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"屏蔽视觉打扰"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"允许视觉信号"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"您可以收到的通知"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"保持专注"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"其他操作"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"显示设置"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"显示选项"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"启用深色主题"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"将操作系统和应用设置切换到首选深色背景配浅色文本,这样可以减轻眼睛负担,并且在某些设备上能够显著节省电池电量"</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="mode_notification_filter_title" msgid="443728483176031977">"滤除干扰"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"未滤除任何干扰"</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>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"显示未使用的类别"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"隐藏未使用的类别"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"全部"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{更改为仅限闹钟并持续 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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"重命名"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"更改图标"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"更改图标"</string>
<string name="warning_button_text" msgid="1274234338874005639">"警告"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"关闭"</string>
<string name="device_feedback" msgid="5351614458411688608">"发送有关此设备的反馈"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"需要先将此设备的数据分区转换成 ext4,然后才能使用 16KB 开发者选项。在该模式下,无法保证软件完整性;而且在引导加载程序处于解锁状态时,存储在手机上的所有数据都可能会面临风险。在此之后,需要再重启设备一次,才能启用 16KB 选项。进入该模式后,您只需重启设备 1 次便可在 4KB 模式和 16KB 模式之间来回切换。在这些模式下,某些功能会被停用,所以某些应用可能无法正常运作。如果想让设备返回到生产模式,您需要切换回 4KB 模式并锁定引导加载程序,这样就会将设备恢复出厂设置。待设备成功启动到 Android 系统后,在开发者选项中停用 OEM 解锁。当您确认后,设备上的所有数据都会被擦除,而且文件系统会被更改为 ext4。完成以上步骤后,请再次返回启用 16KB 模式。"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"清除所有数据"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"未能擦除数据分区并重新格式化为 ext4。"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"必须解锁引导加载程序,才能使用 16KB 模式"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"需要先为此设备解锁引导加载程序,然后才能使用 16KB 开发者选项。在该模式下,无法保证软件完整性;而且在引导加载程序处于解锁状态时,存储在手机上的所有数据都可能会面临风险。启用 16KB 模式后,所有用户数据及设置都会被擦除。待引导加载程序解锁后,需要进行 2 次重新启动才能启用 16KB 选项。进入该模式后,您只需重启设备 1 次便可在 4KB 模式和 16KB 模式之间来回切换。在这些模式下,某些功能会被停用,所以某些应用可能无法正常运作。如果想让设备返回到生产模式,您将需要切换回 4KB 模式并锁定 OEM/引导加载程序,这样就会将设备恢复出厂设置。请解锁引导加载程序,然后重试。如要查看详细操作说明,请访问:<a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"正在使用 4KB 页面通用模式"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"您正处于 4KB 页面通用模式。在该模式下,无法保证软件完整性;而且在引导加载程序处于解锁状态时,存储在手机上的所有数据都可能会面临风险。在这些模式下,某些功能会被停用,所以某些应用可能无法正常运作。如果想重新进入生产模式,您必须锁定设备的引导加载程序。点按即可了解详情。"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"您正处于 4KB 页面通用模式。在该模式下,无法保证软件完整性;而且在引导加载程序处于解锁状态时,存储在手机上的所有数据都可能会面临风险。在这些模式下,某些功能会被停用,所以某些应用可能无法正常运作。如果想重新进入生产模式,您必须锁定设备的引导加载程序。这样会再次将设备恢复出厂设置,使其还原为生产设置。待设备成功启动到 Android 系统后,在开发者选项中停用 OEM 解锁。如果设备未能启动到 Android 系统或不稳定,请使用最新出厂映像 (<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>) 重新刷写设备,或者前往 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> 选择“擦除设备数据”>“锁定引导加载程序”>“强制刷写所有分区”。"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"目前使用 16KB 页面通用模式"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"您正处于 16KB 页面通用模式。在该模式下,无法保证软件完整性;而且在引导加载程序处于解锁状态时,存储在手机上的所有数据都可能会面临风险。在这些模式下,某些功能会被停用,所以某些应用可能无法正常运作。如果想重新进入生产模式,您必须切换回 4KB 模式并锁定设备的引导加载程序。点按即可了解详情。"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"您正处于 16KB 页面通用模式。在该模式下,无法保证软件完整性;而且在引导加载程序处于解锁状态时,存储在手机上的所有数据都可能会面临风险。在这些模式下,某些功能会被停用,所以某些应用可能无法正常运作。如果想重新进入生产模式,您必须切换回 4KB 模式并锁定设备的引导加载程序。这样会再次将设备恢复出厂设置,使其还原为生产设置。待设备成功启动到 Android 系统后,请在开发者选项中停用 OEM 解锁功能。如果设备未能启动到 Android 系统或不稳定,请使用最新出厂映像 (<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>) 重新刷写设备,或者前往 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> 并选择“Wipe Device”“Lock Bootloader”和“Force Flash all partitions”。"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB 页面通用模式"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"了解详情"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Bug 报告处理程序"</string>
@@ -5009,14 +5073,15 @@
<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="6686858308083037810">"允许多人设备共用"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"允许, 多位, 用户, 许可, 多个, allow, multiple, user, permit, many"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"多个, 用户, 个人资料, 人员, 账号, 切换, 很多, multiple, users, profiles, people, accounts, switch, many"</string>
<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="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"使用自适应亮度"</string>
+ <string name="adaptive_brightness_main_switch_title" msgid="2681666805191642737">"启用自适应亮度"</string>
<string name="wifi_calling_main_switch_title" msgid="4070224008346815634">"使用“WLAN 通话”"</string>
<string name="default_see_all_apps_title" msgid="7481113230662612178">"查看所有应用"</string>
<string name="smart_forwarding_title" msgid="8368634861971949799">"智能转接"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rHK/arrays.xml b/res/values-zh-rHK/arrays.xml
index 221f39a..28c71fb 100644
--- a/res/values-zh-rHK/arrays.xml
+++ b/res/values-zh-rHK/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"睡眠時間"</item>
+ <item msgid="4152450357280759894">"駕駛"</item>
+ <item msgid="7096549258219399423">"身歷其境"</item>
+ <item msgid="2760716776980432977">"受管理"</item>
+ <item msgid="601734478369121764">"星星"</item>
+ <item msgid="6243809315432780521">"日曆"</item>
+ <item msgid="4913577903148415331">"時間"</item>
+ <item msgid="3653377604690057780">"劇院"</item>
+ <item msgid="3843711267408385410">"花"</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 e9ada5e..b17bc24 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"助聽器設定"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"捷徑、助聽器兼容性"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"預設"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"沒有聽力師的預設設定"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"無法更新預設"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"音訊輸出裝置"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"關於音訊輸出"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"進一步瞭解「手錶解鎖」"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"新增手錶"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"移除手錶"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"指紋及面孔解鎖"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"面孔和指紋解鎖"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"用於工作設定檔的面孔和指紋解鎖"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"需要設定"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"已新增面孔和指紋"</string>
@@ -575,7 +576,7 @@
<string name="private_space_new_lock_message" msgid="3117703578905489206">"你需要在下一個畫面輸入裝置 PIN、圖案或密碼"</string>
<string name="private_space_auto_lock_title" msgid="8663409382910601261">"自動鎖定私人空間"</string>
<string name="private_space_auto_lock_page_summary" msgid="8679844515655838654">"裝置可在閒置一段時間後自動鎖定私人空間"</string>
- <string name="private_space_auto_lock_every_time" msgid="1215061855836002830">"每當裝置鎖定"</string>
+ <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>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"要重新啟動裝置嗎?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"詳細 NFC 記錄僅適用於開發用途。錯誤報告中有其他 NFC 資料,可能包含私人資料。重新啟動裝置即可變更此設定。"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"重新啟動"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"投放"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"鏡像"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"啟用無線螢幕分享"</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"自動調整"</string>
<string name="brightness" msgid="6216871641021779698">"亮度"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"自動調校光暗"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"關於自動調校光暗"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"系統會根據你所在的環境和活動自動調校螢幕光暗。你可以移動滑桿,幫助自動調校光暗功能瞭解你偏好的亮度。"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"開"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"關閉"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,8 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"仍要繼續"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"取消"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"放大設定"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"單指平移"</string>
+ <string name="accessibility_magnification_one_finger_panning_title" msgid="1338811559457209339">"以 1 隻手指移動放大鏡"</string>
+ <string name="accessibility_magnification_one_finger_panning_summary" msgid="1861473044337453019">"拖曳 1 隻手指便可在螢幕上移動"</string>
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"拖曳一隻手指即可移動放大範圍。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"拖曳兩隻手指即可移動放大範圍。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"無法用於只放大部分畫面"</string>
@@ -2118,6 +2155,8 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"輕按按鈕即可縮放"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"快速放大螢幕畫面中的內容"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>放大螢幕畫面:</b><br/> {0,number,integer}. 用捷徑開始放大<br/> {1,number,integer}. 輕按螢幕<br/> {2,number,integer}. 用兩指拖曳畫面即可四處移動<br/> {3,number,integer}. 用兩指縮放即可調整縮放比例<br/> {4,number,integer}. 用捷徑即可停止放大<br/><br/><b>暫時放大螢幕畫面:</b><br/> {0,number,integer}. 確定放大類型已設為全螢幕<br/> {1,number,integer}. 用捷徑開始放大<br/> {2,number,integer}. 按住畫面上任何地方<br/> {3,number,integer}. 用兩指拖曳畫面即可四處移動<br/> {4,number,integer}. 提起手指即可停止放大"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off" msgid="1779959623535122324">"<b>按照下列步驟放大螢幕畫面:</b><br/> {0,number,integer}。用快速鍵啟用放大功能<br/> {1,number,integer}。輕按螢幕<br/> {2,number,integer}。拖曳 2 指就可以在畫面上移動<br/> {3,number,integer}。用 2 指縮放就可以調整縮放程度<br/> {4,number,integer}。以快速鍵停用放大功能<br/><br/>你亦可以暫時放大畫面及執行其他操作。"</string>
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on" msgid="7323930759240678965">"<b>按照下列步驟放大螢幕畫面:</b><br/> {0,number,integer}。用快速鍵啟用放大功能<br/> {1,number,integer}。輕按螢幕<br/> {2,number,integer}。拖曳 1 指或 2 指就可以在畫面上移動<br/> {3,number,integer}.用 2 指縮放就可以調整縮放程度<br/> {4,number,integer}。以快速鍵停用放大功能<br/><br/>你亦可以暫時放大畫面及執行其他操作。"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"開啟放大功能後,你可放大畫面。\n\n"<b>"如要縮放"</b>",請開啟放大功能,然後輕按螢幕任何地方。\n"<ul><li>"用 2 隻或多隻手指拖曳,即可捲動螢幕"</li>\n<li>"用 2 隻或多隻手指縮放,即可調整縮放程度"</li></ul>\n\n<b>"如要暫時縮放"</b>",請開啟放大功能,再按住螢幕任何地方。\n"<ul><li>"拖曳即可在螢幕上移動"</li>\n<li>"提起手指即可縮小至原大"</li></ul>\n\n"你無法在鍵盤或導覽列上使用放大功能。"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"<xliff:g id="NUM_PAGES">%2$d</xliff:g> 頁中嘅第 <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> 頁"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"無障礙功能按鈕捷徑"</string>
@@ -3323,13 +3362,30 @@
<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="5138745349253275428">"優先模式"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"只接收重要聯絡人和應用程式的通知"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"選擇啟用類型"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"時間"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"例如:「上午 9:30 至下午 5:00」"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"日曆"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"例如:「個人日曆」"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"減少干擾"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"刪除時間表"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"刪除"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3393,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"新增日曆"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"使用日曆"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"時間表"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"設定時間表"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"預定時間"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"在特定時間將手機設為靜音"</string>
@@ -3352,7 +3407,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"允許發出音效的干擾"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"封鎖視覺干擾"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"允許視覺訊號"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"可收到的通知"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"保持專注"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"更多操作"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"顯示設定"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"顯示選項"</string>
@@ -3369,6 +3424,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"啟用深色主題背景"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"將 OS 和應用程式偏好設定切換成「淺色文字配搭深色背景」。此設定或許可減少眼睛疲勞,且在部分裝置上還能節省大量電力"</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="mode_notification_filter_title" msgid="443728483176031977">"過濾干擾"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"不會過濾任何干擾"</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>
@@ -3665,6 +3722,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"顯示未使用的類別"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"隱藏未使用的類別"</string>
@@ -3774,6 +3832,8 @@
<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_all_apps" msgid="705700582778445484">"全部"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3870,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{改為只限鬧鐘模式同埋持續 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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"重新命名"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"變更圖示"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"變更圖示"</string>
<string name="warning_button_text" msgid="1274234338874005639">"警告"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"關閉"</string>
<string name="device_feedback" msgid="5351614458411688608">"傳送你對這部裝置的意見"</string>
@@ -4870,14 +4927,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"你需要先將此裝置的資料分區轉換為 ext4,才能使用 16 KB 開發人員選項。在此模式中無法保證軟件完整性,在啟動程式解鎖時,儲存在手機上的任何資料都可能面臨風險。在此之後需要再重新啟動一次,才能啟用 16 KB 選項。當你處於此模式時,可以在 4 KB 和 16 KB 模式之間來回切換,每次切換都要重新啟動一次。在這類模式中,部分功能會停用,因此部分應用程式無法運作。如要將裝置返回實際工作環境模式,你需要切換回 4 KB 模式並鎖定啟動程式,然後裝置就會回復原廠設定。裝置成功啟動 Android 後,請在開發人員選項中停用 OEM 解鎖設定。裝置資料將會抹除,檔案系統會在確認後變更為 ext4。完成此步驟之後,請再次返回啟用 16 KB。"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"清除所有資料"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"無法重新格式化並將資料分區抹除,變更為 ext4 檔案系統。"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"需要解鎖啟動程式才可使用 16 KB 模式"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"你需要先將此裝置的啟動程式解鎖,才能使用 16 KB 開發人員選項。在此模式中無法保證軟件完整性,在啟動程式解鎖時,儲存在手機上的任何資料都可能面臨風險。啟用 16 KB 模式時,所有使用者資料和設定都將抹除。啟動程式解鎖後需要經過兩次重新啟動,才能啟用 16 KB 選項。當你處於此模式時,可以在 4 KB 和 16 KB 模式之間來回切換,每次切換都要重新啟動一次。在這類模式中,部分功能會停用,因此部分應用程式無法運作。如要將裝置返回實際工作環境模式,你需要切換回 4 KB 模式,然後原始設備製造商 (OEM)/啟動程式就會鎖定裝置 (此操作會將裝置回復原廠設定)。請解鎖啟動程式,然後再試一次。如需有關的操作指示,請瀏覽 <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"使用 4 KB 頁面通用模式"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"你目前處於頁面通用模式的 4 KB 模式。在此模式中無法保證軟件完整性,在啟動程式解鎖時,儲存在手機上的任何資料都可能面臨風險。在這類模式中,部分功能會停用,因此部分應用程式無法運作。如要再次進入實際工作環境模式,你必須鎖定裝置的啟動程式。輕按即可閱讀更多。"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"你目前處於頁面通用模式的 4 KB 模式。在此模式中無法保證軟件完整性,在啟動程式解鎖時,儲存在手機上的任何資料都可能面臨風險。在這類模式中,部分功能會停用,因此部分應用程式無法運作。如要再次進入實際工作環境模式,你必須鎖定裝置的啟動程式。此操作會再次將裝置回復原廠設定,並將裝置還原為實際工作環境設定。裝置成功啟動 Android 後,請在開發人員選項中停用 OEM 解鎖設定。如裝置無法啟動 Android 或不穩定,請透過以下其中一種方式更新裝置:使用 <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> 中的最新原廠映像,或使用 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> 工具,只要選取 [抹除裝置資料]、[鎖定啟動程式] 及 [強制更新所有分區] 即可。"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"使用 16 KB 頁面通用模式"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"你目前處於頁面通用模式的 16 KB 模式。在此模式中無法保證軟件完整性,在啟動程式解鎖時,儲存在手機上的任何資料都可能面臨風險。在這類模式中,部分功能會停用,因此部分應用程式無法運作。如要再次進入實際工作環境模式,你必須切換回 4 KB 模式,然後鎖定裝置的啟動程式。輕按即可閱讀更多。"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"你目前處於頁面通用模式的 16 KB 模式。在此模式中無法保證軟件完整性,在啟動程式解鎖時,儲存在手機上的任何資料都可能面臨風險。在這類模式中,部分功能會停用,因此部分應用程式無法運作。如要再次進入實際工作環境模式,你必須切換回 4 KB 模式,然後鎖定裝置的啟動程式。此操作會再次將裝置回復原廠設定,並將裝置還原為實際工作環境設定。裝置成功啟動 Android 後,請在開發人員選項中停用 OEM 解鎖設定。如裝置無法啟動 Android 或不穩定,請透過以下其中一種方式更新裝置:使用 <a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a> 中的最新原廠映像,或使用 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> 工具,只要選取 [抹除裝置資料]、[鎖定啟動程式] 及 [強制更新所有分區] 即可。"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16 KB 頁面通用模式"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"閱讀更多"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"錯誤報告處理常式"</string>
@@ -5009,7 +5069,8 @@
<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="6686858308083037810">"允許多位使用者"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5353,4 +5414,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index 7eccb5c..c40e6cd 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"就寢時間"</item>
+ <item msgid="4152450357280759894">"開車"</item>
+ <item msgid="7096549258219399423">"沉浸"</item>
+ <item msgid="2760716776980432977">"受管理"</item>
+ <item msgid="601734478369121764">"星星"</item>
+ <item msgid="6243809315432780521">"日曆"</item>
+ <item msgid="4913577903148415331">"時間"</item>
+ <item msgid="3653377604690057780">"劇院"</item>
+ <item msgid="3843711267408385410">"花朵"</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 8e597a5..ca7c82f 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"助聽器設定"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"捷徑、助聽器相容性"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"預設設定"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"沒有由聽力師預設的設定"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"無法更新預設設定"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"音訊輸出裝置"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"關於音訊輸出"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"進一步瞭解「智慧手錶解鎖」功能"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"新增智慧手錶"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"移除智慧手錶"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"指紋與人臉解鎖"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"人臉和指紋解鎖"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"人臉和指紋解鎖 (工作資料夾)"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"需要設定"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"已新增臉孔和指紋"</string>
@@ -614,10 +615,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>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <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>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"要重新啟動裝置嗎?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"詳細 NFC 記錄僅適用於開發用途。錯誤報告中含有其他 NFC 資料,其中可能包含私人資訊。重新啟動裝置即可變更這項設定。"</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"重新啟動"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"投放"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"鏡像"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"啟用無線螢幕分享"</string>
@@ -1192,7 +1221,8 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"自動調整"</string>
<string name="brightness" msgid="6216871641021779698">"亮度"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"自動調整亮度"</string>
- <string name="auto_brightness_description" msgid="6807117118142381193">"系統會根據你的所在環境和從事的活動自動調整螢幕亮度。你可以手動移動滑桿,協助自動調整亮度功能記憶你所偏好的亮度。"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"關於自動調整亮度"</string>
+ <string name="auto_brightness_description" msgid="6807117118142381193">"系統會根據你所在的環境和從事的活動,自動調整螢幕亮度。你也可以移動滑桿,協助自動調整亮度功能記憶你偏好的亮度。"</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"開啟"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"關閉"</string>
<string name="display_white_balance_title" msgid="2624544323029364713">"螢幕白平衡"</string>
@@ -1972,6 +2002,12 @@
<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>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<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>
@@ -2094,7 +2130,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"仍要繼續"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"取消"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"放大功能設定"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"單指平移"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"拖曳單指即可移動放大區域。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"拖曳雙指即可移動放大區域。"</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"只放大部分畫面時無法使用"</string>
@@ -2118,6 +2157,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"輕觸按鈕即可縮放"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"快速放大螢幕畫面中的內容"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>放大螢幕畫面的方法如下:</b><br/> {0,number,integer}. 使用捷徑啟動放大功能<br/> {1,number,integer}. 輕觸螢幕<br/> {2,number,integer}. 拖曳 2 指即可四處移動畫面<br/> {3,number,integer}. 使用 2 指撥動即可調整縮放等級<br/> {4,number,integer}. 使用捷徑關閉放大功能<br/><br/> <b>暫時放大螢幕畫面的方法如下:</b><br/> {0,number,integer}. 確認放大類型已設為全螢幕<br/> {1,number,integer}. 使用捷徑啟動放大功能<br/> {2,number,integer}. 按住螢幕上的任一處<br/> {3,number,integer}. 拖曳手指即可四處移動畫面<br/> {4,number,integer}. 移開手指即可關閉放大功能"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"放大功能啟用後,你可以放大畫面上的內容。\n\n"<b>"如要進行縮放"</b>",請開啟放大功能,然後輕觸畫面上的任何位置。\n"<ul><li>"使用兩指或多指以拖曳的方式捲動畫面"</li>\n<li>"使用兩指或多指撥動以調整縮放大小"</li></ul>\n\n<b>"如要暫時放大畫面"</b>",請開啟放大功能,然後按住畫面上的任何位置。\n"<ul><li>"使用手指拖曳可瀏覽畫面的不同部分"</li>\n<li>"放開手指即可縮小"</li></ul>\n\n"你無法放大鍵盤和導覽列部分。"</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"第 <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">"無障礙工具按鈕捷徑"</string>
@@ -3314,7 +3357,7 @@
<string name="live_caption_title" msgid="8617086825712756983">"即時字幕"</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_audio_text" msgid="8201387855375146000">"相容媒體裝置音效更具臨場感"</string>
<string name="spatial_summary_off" msgid="8272678804629774378">"已關閉"</string>
<string name="spatial_summary_on_one" msgid="6239933399496282994">"已開啟/<xliff:g id="OUTPUT_DEVICE">%1$s</xliff:g>"</string>
<string name="spatial_summary_on_two" msgid="4526919818832483883">"已開啟/<xliff:g id="OUTPUT_DEVICE_0">%1$s</xliff:g>和<xliff:g id="OUTPUT_DEVICE_1">%2$s</xliff:g>"</string>
@@ -3323,13 +3366,30 @@
<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="5138745349253275428">"優先模式"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"僅接收重要聯絡人和應用程式的通知"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"選取啟動類型"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"時間"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"例如:「上午 9:30 – 下午 5:00」"</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"日曆"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"例如:「個人日曆」"</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"降低干擾"</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>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"刪除排程"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"刪除"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<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>
@@ -3337,11 +3397,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"新增日曆"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"使用日曆"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"安排時間"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"設定時間表"</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>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"排程"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"在特定時間將手機設為靜音"</string>
@@ -3352,7 +3411,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"允許發出音效的干擾"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"封鎖視覺干擾"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"允許視覺信號"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"可收到的通知"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"保持專注"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"其他動作"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"顯示設定"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"顯示選項"</string>
@@ -3369,6 +3428,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"啟用深色主題"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"將作業系統和應用程式偏好設定切換成「淺色文字搭配深色背景」。這項設定或許可以降低眼睛負擔,而且在某些裝置上還能節省大量電力"</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="mode_notification_filter_title" msgid="443728483176031977">"篩選干擾"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"不篩選任何干擾"</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>
@@ -3459,7 +3520,7 @@
<string name="conversation_notifs_category" msgid="2549844862379963273">"對話"</string>
<string name="general_notification_header" msgid="3669031068980713359">"管理"</string>
<string name="app_notification_field" msgid="3208079070539894909">"應用程式通知"</string>
- <string name="app_notification_field_summary" msgid="5981393613897713471">"控管個別應用程式的通知"</string>
+ <string name="app_notification_field_summary" msgid="5981393613897713471">"管理個別應用程式的通知"</string>
<string name="advanced_section_header" msgid="6478709678084326738">"一般"</string>
<string name="profile_section_header" msgid="4970209372372610799">"工作通知"</string>
<string name="profile_section_header_for_advanced_privacy" msgid="8385775428904838579">"工作資料夾"</string>
@@ -3473,7 +3534,7 @@
<string name="asst_importance_reset_summary" msgid="684794589254282667">"重設使用者變更的重要設定,並允許通知助理優先處理"</string>
<string name="asst_capabilities_actions_replies_title" msgid="4392470465646394289">"建議採取的動作和回覆"</string>
<string name="asst_capabilities_actions_replies_summary" msgid="416234323365645871">"自動顯示建議採取的動作和回覆"</string>
- <string name="notification_history_summary" msgid="5434741516307706892">"顯示近期通知和已延後的通知"</string>
+ <string name="notification_history_summary" msgid="5434741516307706892">"顯示近期和延後的通知"</string>
<string name="notification_history" msgid="8663811361243456201">"通知記錄"</string>
<string name="notification_history_toggle" msgid="9093762294928569030">"使用通知記錄"</string>
<string name="notification_history_off_title_extended" msgid="853807652537281601">"通知記錄已關閉"</string>
@@ -3482,8 +3543,8 @@
<string name="history_toggled_on_summary" msgid="9034278971358282728">"近期通知和已延後的通知會顯示在這裡"</string>
<string name="notification_history_view_settings" msgid="5269317798670449002">"查看通知設定"</string>
<string name="notification_history_open_notification" msgid="2655071846911258371">"開啟通知"</string>
- <string name="snooze_options_title" msgid="2109795569568344617">"允許顯示通知延後選項"</string>
- <string name="notification_badging_title" msgid="5469616894819568917">"應用程式圖示上的通知圓點"</string>
+ <string name="snooze_options_title" msgid="2109795569568344617">"顯示延後通知"</string>
+ <string name="notification_badging_title" msgid="5469616894819568917">"顯示應用程式圖示的通知圓點"</string>
<string name="notification_bubbles_title" msgid="5681506665322329301">"對話框"</string>
<string name="bubbles_app_toggle_title" msgid="5319021259954576150">"對話框"</string>
<string name="bubbles_conversation_toggle_title" msgid="5225039214083311316">"以對話框形式顯示這個對話"</string>
@@ -3504,7 +3565,7 @@
<string name="bubble_app_setting_bubble_conversation" msgid="1461981680982964285">"開啟這個對話的對話框功能"</string>
<string name="swipe_direction_ltr" msgid="5137180130142633085">"向右滑動即可關閉,向左滑動即可顯示選單"</string>
<string name="swipe_direction_rtl" msgid="1707391213940663992">"向左滑動即可關閉,向右滑動即可顯示選單"</string>
- <string name="silent_notifications_status_bar" msgid="6113307620588767516">"在狀態列隱藏設為靜音的通知"</string>
+ <string name="silent_notifications_status_bar" msgid="6113307620588767516">"在狀態列隱藏靜音通知"</string>
<string name="notification_pulse_title" msgid="8013178454646671529">"閃爍燈光"</string>
<string name="lock_screen_notifications_title" msgid="2876323153692406203">"隱私設定"</string>
<string name="lockscreen_bypass_title" msgid="6519964196744088573">"略過螢幕鎖定畫面"</string>
@@ -3516,10 +3577,10 @@
<string name="lock_screen_notifs_title" msgid="3412042692317304449">"螢幕鎖定畫面通知"</string>
<string name="lock_screen_notifs_show_all_summary" msgid="4226586018375762117">"顯示對話通知、預設通知和已設為靜音的通知"</string>
<string name="lock_screen_notifs_show_all" msgid="1300418674456749664">"顯示對話通知、預設通知和已設為靜音的通知"</string>
- <string name="lock_screen_notifs_show_alerting" msgid="6584682657382684566">"隱藏已設為靜音的對話和通知"</string>
+ <string name="lock_screen_notifs_show_alerting" msgid="6584682657382684566">"隱藏設為靜音的對話和通知"</string>
<string name="lock_screen_notifs_show_none" msgid="1941044980403067101">"不要顯示任何通知"</string>
<string name="lock_screen_notifs_redact" msgid="9024158855454642296">"敏感通知"</string>
- <string name="lock_screen_notifs_redact_summary" msgid="1395483766035470612">"鎖定時顯示敏感內容"</string>
+ <string name="lock_screen_notifs_redact_summary" msgid="1395483766035470612">"螢幕鎖定時顯示敏感內容"</string>
<string name="lock_screen_notifs_redact_work" msgid="3833920196569208430">"敏感工作資料夾通知"</string>
<string name="lock_screen_notifs_redact_work_summary" msgid="3238238380405430156">"鎖定時顯示敏感工作資料夾內容"</string>
<string name="lock_screen_notifications_summary_show" msgid="6540443483088311328">"顯示所有通知內容"</string>
@@ -3577,9 +3638,9 @@
<string name="notifications_sent_weekly" msgid="7895656213187555346">"{count,plural, =1{每週約 # 則通知}other{每週約 # 則通知}}"</string>
<string name="notifications_sent_never" msgid="9081278709126812062">"永遠不要"</string>
<string name="manage_notification_access_title" msgid="4154723216570646451">"閱讀、回覆及控制通知"</string>
- <string name="manage_notification_access_summary" msgid="2907135226478903997">"控管可以讀取通知的應用程式和裝置"</string>
+ <string name="manage_notification_access_summary" msgid="2907135226478903997">"管理可讀取通知的應用程式和裝置"</string>
<string name="work_profile_notification_access_blocked_summary" msgid="8643809206612366067">"管理員已禁止存取工作資料夾通知"</string>
- <string name="notification_assistant_title" msgid="5889201903272393099">"加強型通知"</string>
+ <string name="notification_assistant_title" msgid="5889201903272393099">"進階通知"</string>
<string name="notification_assistant_summary" msgid="1957783114840908887">"接收建議的操作、回覆等內容"</string>
<string name="no_notification_assistant" msgid="2533323397091834096">"無"</string>
<string name="no_notification_listeners" msgid="2839354157349636000">"最近沒有已安裝的應用程式要求「通知」存取權。"</string>
@@ -3665,6 +3726,7 @@
<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="show_unused_channels" msgid="4956292847964439078">"顯示未使用的類別"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"隱藏未使用的類別"</string>
@@ -3774,6 +3836,8 @@
<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_all_apps" msgid="705700582778445484">"全部"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<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>
@@ -3810,12 +3874,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{變更為僅限鬧鐘模式並持續 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>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"重新命名"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"變更圖示"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"變更圖示"</string>
<string name="warning_button_text" msgid="1274234338874005639">"警告"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"關閉"</string>
<string name="device_feedback" msgid="5351614458411688608">"傳送你對這個裝置的意見"</string>
@@ -4870,14 +4931,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"必須先將這部裝置的資料分區轉換為 ext4,才能使用 16KB 開發人員選項。此模式無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能面臨風險。在此之後還必須再重新啟動一次,才能啟用 16KB 選項。當你處於此模式時,可以在 4KB 和 16KB 模式之間來回切換,每次切換都要重新啟動一次。在這類模式中,部分功能會停用,因此有些應用程式可能無法運作。如要返回實際工作環境模式,必須切換回 4KB 模式並鎖定系統啟動載入程式,裝置就會恢復原廠設定。裝置成功啟動 Android 系統後,請在開發人員選項中停用 OEM 解鎖設定。裝置資料將會抹除,檔案系統會在確認後變更為 ext4。完成此步驟之後,請再次返回啟用 16KB。"</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"清除所有資料"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"無法抹除資料分區並重新格式化為 ext4。"</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"如要啟用 16KB 模式,需解鎖系統啟動載入程式"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"必須先將這部裝置的系統啟動載入程式解鎖,才能使用 16KB 開發人員選項。此模式無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能面臨風險。啟用 16KB 模式時,所有使用者資料和設定都將抹除。系統啟動載入程式解鎖後,需要經過兩次重新啟動,才能啟用 16KB 選項。當你處於此模式時,可以在 4KB 和 16KB 模式之間來回切換,每次切換都要重新啟動一次。在這類模式中,部分功能會停用,因此有些應用程式可能無法運作。如要返回實際工作環境模式,必須切換回 4KB 模式,OEM/系統啟動載入程式就會鎖定裝置,裝置也將恢復原廠設定。請解鎖系統啟動載入程式,然後再試一次。操作方法如以下網址說明:<a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"目前使用 4KB 可變頁面模式"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"你目前處於可變頁面模式的 4KB 模式。此模式無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能面臨風險。在這類模式中,部分功能會停用,因此有些應用程式可能無法運作。如要再次進入實際工作環境模式,你必須鎖定裝置的系統啟動載入程式。輕觸即可閱讀更多內容。"</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"你目前處於可變頁面模式的 4KB 模式。此模式無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能面臨風險。在這類模式中,部分功能會停用,因此有些應用程式可能無法運作。如要再次進入實際工作環境模式,你必須鎖定裝置的系統啟動載入程式。這樣做會使裝置再次恢復原廠設定,並將裝置還原為實際工作環境設定。裝置成功啟動 Android 系統後,請在開發人員選項中停用 OEM 解鎖設定。如果裝置無法啟動 Android 或狀態不穩,可透過以下任一方式重新刷新裝置:使用最新原廠映像檔 (<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>) 或 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> 工具,依序選取「Wipe Device」、「Lock Bootloader」和「Force Flash all partitions」。"</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"目前使用 16KB 可變頁面模式"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"你目前處於可變頁面模式的 16KB 模式。此模式無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能面臨風險。在這類模式中,部分功能會停用,因此有些應用程式可能無法運作。如要再次進入實際工作環境模式,你必須切換回 4K 模式,然後鎖定裝置的系統啟動載入程式。輕觸即可閱讀更多內容。"</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"你目前處於可變頁面模式的 16KB 模式。此模式無法保證軟體完整性,且系統啟動載入程式解鎖時,手機上的資料可能面臨風險。在這類模式中,部分功能會停用,因此有些應用程式可能無法運作。如要再次進入實際工作環境模式,你必須切換回 4K 模式,然後鎖定裝置的系統啟動載入程式。這樣做會使裝置再次恢復原廠設定,並將裝置還原為實際工作環境設定。裝置成功啟動 Android 系統後,請在開發人員選項中停用 OEM 解鎖設定。如果裝置無法啟動 Android 或狀態不穩,可透過以下任一方式重新刷新裝置:使用最新原廠映像檔 (<a href=\"https://developers.google.com/android/images\">https://developers.google.com/android/images</a>) 或 <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> 工具,依序選取「Wipe Device」、「Lock Bootloader」和「Force Flash all partitions」。"</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"16KB 可變頁面模式"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"閱讀完整內容"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"錯誤報告處理常式"</string>
@@ -5009,7 +5073,8 @@
<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="6686858308083037810">"允許多位使用者"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<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>
@@ -5128,7 +5193,7 @@
<string name="reboot_dialog_reboot_now" msgid="235616015988522355">"立即重新啟動"</string>
<string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"稍後重新啟動"</string>
<string name="bluetooth_details_spatial_audio_title" msgid="1368071116994002707">"空間音訊"</string>
- <string name="bluetooth_details_spatial_audio_summary" msgid="5026859623681482668">"相容媒體裝置可提供更有臨場感的音效"</string>
+ <string name="bluetooth_details_spatial_audio_summary" msgid="5026859623681482668">"相容媒體裝置音效更具臨場感"</string>
<string name="bluetooth_details_head_tracking_title" msgid="5416972521040337799">"頭部追蹤"</string>
<string name="bluetooth_details_head_tracking_summary" msgid="3942238746595985395">"音訊會隨著你轉動頭部而變化,因此聽起來更自然"</string>
<string name="bluetooth_details_permissions_sync_title" msgid="7277580382321003521">"同步處理手機的權限"</string>
@@ -5353,4 +5418,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml
index 353c8ef..85fd081 100644
--- a/res/values-zu/arrays.xml
+++ b/res/values-zu/arrays.xml
@@ -498,4 +498,17 @@
<!-- 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) -->
+ <string-array name="zen_mode_icon_options_descriptions">
+ <item msgid="6386593780953863398">"Isikhathi sokulala"</item>
+ <item msgid="4152450357280759894">"Ukushayela"</item>
+ <item msgid="7096549258219399423">"Okugxilile"</item>
+ <item msgid="2760716776980432977">"Kuphethwe"</item>
+ <item msgid="601734478369121764">"Inkanyezi"</item>
+ <item msgid="6243809315432780521">"Ikhalenda"</item>
+ <item msgid="4913577903148415331">"Isikhathi"</item>
+ <item msgid="3653377604690057780">"Itiyetha"</item>
+ <item msgid="3843711267408385410">"Imbali"</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 88c23d2..36cc555 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -77,6 +77,7 @@
<string name="bluetooth_hearing_device_settings_title" msgid="6060072560486755057">"Amasethingi ensizakuzwa"</string>
<string name="bluetooth_hearing_device_settings_summary" msgid="3822646075744075158">"Isinqamuleli, ukuhambisana kwensiza yokuzwa"</string>
<string name="bluetooth_hearing_aids_presets" msgid="4615094985857156388">"Ukusetha ngaphambilini"</string>
+ <string name="bluetooth_hearing_aids_presets_empty_list_message" msgid="4240241268432643259">"Akukho ukusethwa ngaphambilini okuhlelwe i-audiologist yakho"</string>
<string name="bluetooth_hearing_aids_presets_error" msgid="2095249829735188484">"Ayikwazanga ukubuyekeza ukusetha ngaphambilini"</string>
<string name="bluetooth_audio_routing_title" msgid="5541729245424856226">"Okukhishwayo komsindo"</string>
<string name="bluetooth_audio_routing_about_title" msgid="5773336779246891954">"Mayelana nokuphumayo komsindo"</string>
@@ -437,7 +438,7 @@
<string name="security_settings_remoteauth_settings_learn_more" msgid="5653556124819260050">"Funda kabanzi mayelana Nokuvula Iwashi"</string>
<string name="security_settings_remoteauth_settings_register_new_authenticator" msgid="9191331738306527887">"Faka iwashi"</string>
<string name="security_settings_remoteauth_settings_remove_device" msgid="2436226120578851282">"Susa iwashi"</string>
- <string name="security_settings_biometric_preference_title" msgid="5012627247749093938">"Isigxivizo somunwe Nokuvula Ngobuso"</string>
+ <string name="security_settings_biometric_preference_title" msgid="298146483579539448">"Ukuvula ngobuso nangesigxivizo somunwe"</string>
<string name="security_settings_work_biometric_preference_title" msgid="3121755615533533585">"Ukuvula Ngobuso Nangesigxivizo Somunwe emsebenzini"</string>
<string name="security_settings_biometric_preference_summary_none_enrolled" msgid="213377753727694575">"Ukusetha kuyadingeka"</string>
<string name="security_settings_biometric_preference_summary_both_fp_multiple" msgid="4821859306609955966">"Ubuso nezigxivizo zeminwe kungeziwe"</string>
@@ -614,10 +615,8 @@
<string name="private_space_install_apps_text" msgid="8072027796190028830"><b>"Faka ama-app"</b>\n"Faka ama-app ofuna ukuwagcina ayimfihlo esikhaleni sakho"</string>
<string name="private_space_keep_in_mind_text" msgid="7721081172657563800">"Khumbula"</string>
<string name="private_space_apps_stopped_text" msgid="4034574118911250169"><b>"Ama-app ayama uma ukhiya isikhala sakho"</b>\n"Uma ukhiya isikhala sakho, ama-app asesikhaleni sakho ayamiswa futhi ngeke ukwazi ukuthola izaziso ezivela kuwo"</string>
- <!-- no translation found for private_space_apps_permission_text (4416201648436201393) -->
- <skip />
- <!-- no translation found for private_space_settings_footer_text (3742468470394835356) -->
- <skip />
+ <string name="private_space_apps_permission_text" msgid="4416201648436201393">"Izindawo zangasese azifanele ama-app adinga ukusebenza ngemuva noma ukuthumela izaziso ezibucayi, njengama-app ezokwelapha. Lokhu kungenxa yokuthi izaziso nomsebenzi wangemuva kuyamiswa uma isikhala sakho sikhiyiwe.\n\nAma-app asendaweni yakho engasese ngeke avele kumphathi wemvume, edeshibhodini yobumfihlo, namanye amasethingi uma indawo yakho engasese ikhiyiwe.\n\nIndawo yakho engasese ayikwazi ukuyiswa edivayisini entsha. Uzodinga ukumisa esinye isikhala esigodliwe uma ufuna ukusisebenzisa kwenye idivayisi.\n\nNoma ngubani oxhuma idivayisi yakho ekhompyutheni noma ofaka ama-app ayingozi edivayisini yakho angakwazi ukufinyelela endaweni yakho engasese."</string>
+ <string name="private_space_settings_footer_text" msgid="3742468470394835356">"Izindawo zangasese azifanele ama-app adinga ukusebenza ngemuva noma ukuthumela izaziso ezibucayi, njengama-app ezokwelapha. Lokhu kungenxa yokuthi izaziso nomsebenzi wangemuva kuyamiswa uma isikhala sakho sikhiyiwe.\n\nAma-app asendaweni yakho yangasese ngeke avele kumphathi wemvume, kudeshibhodi yobumfihlo, namanye amasethingi uma indawo yangasese ikhiyiwe.\n\nIndawo yakho engasese ayikwazi ukubuyiselwa edivayisini entsha. Kuzomele usethe esinye isikhala uma ufuna ukusisebenzisa kwenye idivayisi.\n\nNoma ngubani oxhuma idivayisi yakho ekhompyutheni noma ofaka ama-app anonya edivayisini yakho angakwazi ukufinyelela endaweni yakho engasese."</string>
<string name="private_space_learn_more_text" msgid="5314198983263277586">"Funda kabanzi mayelana nendawo engasese"</string>
<string name="private_space_few_moments_text" msgid="7166883272914424011">"Lokhu kuzothatha izikhathi ezimbalwa"</string>
<string name="private_space_setting_up_text" msgid="8458035555212009528">"Isetha isikhala esigodliwe…"</string>
@@ -851,6 +850,36 @@
<string name="nfc_reboot_dialog_title" msgid="2033983438635768169">"Qalisa kabusha idivayisi?"</string>
<string name="nfc_reboot_dialog_message" msgid="4929353168157966992">"Ukungena kwe-NFC okuningiliziwe kuhloselwe izinjongo zokuthuthukiswa kuphela. Idatha ye-NFC eyengeziwe ifakwe phakathi kwimibiko yeziphazamisi, engase ibe nolwazi olugodliwe. Qala kabusha idivayisi ukuze ushintshe le sethingi."</string>
<string name="nfc_reboot_dialog_confirm" msgid="4769763632008584567">"Qala kabusha"</string>
+ <!-- no translation found for keywords_external_display (4181375057920134909) -->
+ <skip />
+ <!-- no translation found for external_display_on (2560104443500154333) -->
+ <skip />
+ <!-- no translation found for external_display_off (5634413756025351374) -->
+ <skip />
+ <!-- no translation found for external_display_settings_title (6256884595821605779) -->
+ <skip />
+ <!-- no translation found for external_display_use_title (8198257340836261386) -->
+ <skip />
+ <!-- no translation found for external_display_resolution_settings_title (2446784716488289268) -->
+ <skip />
+ <!-- no translation found for external_display_not_found (1912355133386555798) -->
+ <skip />
+ <!-- no translation found for external_display_rotation (7160062306817490204) -->
+ <skip />
+ <!-- no translation found for external_display_standard_rotation (545969032327487219) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_90 (7371530414227542947) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_180 (6469137724447819841) -->
+ <skip />
+ <!-- no translation found for external_display_rotation_270 (7819322302457740514) -->
+ <skip />
+ <!-- no translation found for external_display_change_resolution_footer_title (9024291681663573443) -->
+ <skip />
+ <!-- no translation found for external_display_not_found_footer_title (8882902921634316363) -->
+ <skip />
+ <!-- no translation found for external_display_more_options_title (1222751990705118774) -->
+ <skip />
<string name="wifi_display_settings_title" msgid="6451625615274960175">"Abalingisi"</string>
<string name="keywords_wifi_display_settings" msgid="5753883229564422679">"isibuko"</string>
<string name="wifi_display_enable_menu_item" msgid="7391841780777318134">"Nika amandla ukubukeka okungenantambo "</string>
@@ -1192,6 +1221,7 @@
<string name="color_mode_option_automatic" msgid="2281217686509980870">"Okungaguqula"</string>
<string name="brightness" msgid="6216871641021779698">"Izinga lokukhanya"</string>
<string name="auto_brightness_title" msgid="4239324728760986697">"Ukukhanya okuguqukayo"</string>
+ <string name="auto_brightness_content_description_title" msgid="237734599617077375">"Mayelana nokukhanya okuguqukayo"</string>
<string name="auto_brightness_description" msgid="6807117118142381193">"Ukukhanya kwesikrini sakho kuzolungiswa ngokuzenzakalela kumvelo yakho nakumisebenzi. Ungahambisa isilayida ngesandla ukuze usize ukukhanya okushintshayo kufunde okuncamelayo."</string>
<string name="auto_brightness_summary_on" msgid="2748088951224387004">"Vuliwe"</string>
<string name="auto_brightness_summary_off" msgid="8077066192887677956">"Kuvaliwe"</string>
@@ -1494,7 +1524,7 @@
<string name="reset_mobile_network_settings_title" msgid="5616713931258506842">"Setha kabusha Amasethingi Enethiwekhi Yeselula"</string>
<string name="reset_mobile_network_settings_desc" msgid="7292636387692165727">"Lokhu kuzosetha kabusha wonke amasethingi enethiwekhi yeselula"</string>
<string name="reset_mobile_network_settings_confirm_title" msgid="7510965634669511241">"Setha kabusha Amasethingi Enethiwekhi Yeselula?"</string>
- <string name="reset_bluetooth_wifi_title" msgid="4113071322344697317">"Setha kabusha i-Bluetooth ne-Wi-Fi"</string>
+ <string name="reset_bluetooth_wifi_title" msgid="4113071322344697317">"Setha kabusha iBluetooth ne-Wi-Fi"</string>
<string name="reset_bluetooth_wifi_desc" msgid="4030295669083059711">"Lokhu kuzosetha kabusha yonke i-Wi-Fi namasethingi e-Bluetooth. Awukwazi ukuhlehlisa lesi senzo."</string>
<string name="reset_bluetooth_wifi_button_text" msgid="3974098137045963639">"Setha kabusha"</string>
<string name="reset_bluetooth_wifi_complete_toast" msgid="5893439291030574365">"I-Bluetooth ne-Wi-Fi zisethwe kabusha"</string>
@@ -1973,6 +2003,12 @@
<string name="user_selected_keyboard_layout_label" msgid="154742505924555156">"Umsebenzisi ukhethiwe: <xliff:g id="LAYOUT_LABEL">%s</xliff:g>"</string>
<string name="speech_category_title" msgid="5995161659186229742">"Inkulumo"</string>
<string name="pointer_speed" msgid="7398649279282675718">"Ijubane lesikhombi"</string>
+ <!-- no translation found for pointer_scale (4941564570571663964) -->
+ <skip />
+ <!-- no translation found for pointer_scale_decrease_content_description (4479646756230008068) -->
+ <skip />
+ <!-- no translation found for pointer_scale_increase_content_description (1049632123702664450) -->
+ <skip />
<string name="game_controller_settings_category" msgid="8557472715034961918">"Isilawuli somdlalo"</string>
<string name="vibrate_input_devices" msgid="5192591087864449142">"Qondisa kabusha ukudlidliza"</string>
<string name="vibrate_input_devices_summary" msgid="8791680891376689823">"Thumela ukudlidliza kwesilawuli segeyimu uma kuxhunyiwe"</string>
@@ -2095,7 +2131,10 @@
<string name="accessibility_magnification_triple_tap_warning_positive_button" msgid="8712304035901450010">"Qhubeka noma kunjalo"</string>
<string name="accessibility_magnification_triple_tap_warning_negative_button" msgid="2028849736366584733">"Khansela"</string>
<string name="accessibility_magnification_service_settings_title" msgid="3531350704632316017">"Izilungiselelo zokukhuliswa"</string>
- <string name="accessibility_magnification_one_finger_panning_title" msgid="4503949739883092989">"I-panning yomunwe owodwa"</string>
+ <!-- no translation found for accessibility_magnification_one_finger_panning_title (1338811559457209339) -->
+ <skip />
+ <!-- no translation found for accessibility_magnification_one_finger_panning_summary (1861473044337453019) -->
+ <skip />
<string name="accessibility_magnification_one_finger_panning_summary_on" msgid="9133125894310777539">"Hambisa indawo yokukhuliswa ngokuhudula umunwe owodwa."</string>
<string name="accessibility_magnification_one_finger_panning_summary_off" msgid="8979146350396559805">"Hambisa indawo yokukhuliswa ngokuhudula iminwe emibili."</string>
<string name="accessibility_magnification_one_finger_panning_summary_unavailable" msgid="4302567514781245318">"Ayitholakali ngenkathi ikhulisa kuphela ingxenye yesikrini"</string>
@@ -2119,6 +2158,10 @@
<string name="accessibility_screen_magnification_navbar_short_summary" msgid="4885018322430052037">"Thepha inkinobho ukuze usondeze"</string>
<string name="accessibility_screen_magnification_intro_text" msgid="3856180549393526339">"Sondeza isithombe ngokushesha ukuze wenze okuqukethwe kube kukhudlwana"</string>
<string name="accessibility_screen_magnification_summary" msgid="8267672508057326959">"<b>Ukuze usondeze isithombe:<br/><br/> {0,number,integer}. Sebenzisa isinqamuleli ukuqalisa ukukhuliswa</b><br/> {1,number,integer}. Thepha isikrini</b><br/> {2,number,integer}. Hudula iminwe emi-2 ukuze uhambe esikrinini</b><br/> {3,number,integer}. Ncinza ngeminwe emi-2 ukuze ulungise ukusondeza</b><br/> {4,number,integer}. Sebenzisa isinqamuleli ukuze umise ukukhuliswa<br/><br/> <b>Ukuze usondeze isithombe okwesikhashana:</b><br/> {0,number,integer}. Qiniseka ukuthi uhlobo lwakho lokukhulisa lusethwe esikrinini esigcwele</b><br/> {1,number,integer}. Sebenzisa isinqamuleli ukuqalisa ukukhuliswa</b><br/> {2,number,integer}. Thinta futhi ubambe noma kuphi esikrinini</b><br/> {3,number,integer}. Hudula umunwe ukuze uhambahambe esikrinini</b><br/> {4,number,integer}. Phakamisa umunwe ukuze umise ukukhuliswa"</string>
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_off (1779959623535122324) -->
+ <skip />
+ <!-- no translation found for accessibility_screen_magnification_summary_one_finger_panning_on (7323930759240678965) -->
+ <skip />
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Uma ukukhulisa kuvuliwe, ungasondeza isikrini sakho.\n\n"<b>"Ukuze usondeze"</b>", qala ukukhulisa, thepha noma yikuphi kusikrini.\n"<ul><li>"Hudula iminwe engu-2 noma ngaphezulu ukuze uskrole"</li>\n<li>"Ncinza iminwe engu-2 noma ngaphezulu ukuze ulungisa ukusondela"</li></ul>\n\n<b>"Ukuze usondeze okwesikhashana"</b>", qalisaukukhulisa, bese uthinte futhi ubambe noma yokuhi esikrinini.\n"<ul><li>"Hudula ukuze uhambahambe esikrinini"</li>\n<li>"Phakamisa umunwe ukuze uhlehlise isithombe"</li></ul>\n\n"Awukwazi ukusondeza kwikhibhodi noma kwibha yokuzula."</string>
<string name="accessibility_tutorial_pager" msgid="8461939455728454061">"Ikhasi elingu-<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> kwangu-<xliff:g id="NUM_PAGES">%2$d</xliff:g>"</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="1924337057649065884">"Isinqamuleli senkinobho yokufinyeleleka"</string>
@@ -3324,13 +3367,30 @@
<string name="zen_mode_settings_schedules_summary" msgid="2047688589286811617">"{count,plural, =0{Lutho}=1{ishejuli esethiwe e-1}one{amashejuli asethiwe angu-#}other{amashejuli asethiwe angu-#}}"</string>
<string name="zen_mode_settings_title" msgid="682676757791334259">"Ungaphazamisi"</string>
<string name="zen_modes_list_title" msgid="5138745349253275428">"Amamodi Abalulekile"</string>
+ <!-- no translation found for zen_modes_add_mode (4806287336036228772) -->
+ <skip />
<string name="zen_mode_settings_summary" msgid="6040862775514495191">"Yaziswa kuphela abantu ababalulekile nezinhlelo zokusebenza"</string>
+ <string name="zen_mode_select_schedule" msgid="5135520719771212697">"Khetha uhlobo lokwenza kusebenze"</string>
+ <string name="zen_mode_select_schedule_time" msgid="1761728920617757652">"Isikhathi"</string>
+ <string name="zen_mode_select_schedule_time_example" msgid="3071816060919446355">"Isb. \"9:30 – 5:00 PM\""</string>
+ <string name="zen_mode_select_schedule_calendar" msgid="4320676795917533667">"Ikhalenda"</string>
+ <string name="zen_mode_select_schedule_calendar_example" msgid="6549820995975678001">"Isb. \"Ikhalenda yomuntu siqu\""</string>
+ <!-- no translation found for zen_mode_active_text (5002406772481439437) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_needs_setup (389269759040103728) -->
+ <skip />
+ <!-- no translation found for zen_mode_disabled_by_user (138592173630683253) -->
+ <skip />
<string name="zen_mode_slice_subtitle" msgid="6849372107272604160">"Khawulela ukuphazamisa"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="7500702838426404527">"Vula ukungaphazamisi"</string>
<string name="zen_mode_behavior_alarms_only" msgid="2956938533859578315">"Ama-alamu nemisindo yemidiya kungaphazamisa"</string>
<string name="zen_mode_automation_settings_title" msgid="3709324184191870926">"Amashejuli"</string>
<string name="zen_mode_delete_automatic_rules" msgid="5020468289267191765">"Susa amashejuli"</string>
<string name="zen_mode_schedule_delete" msgid="5383420576833765114">"Susa"</string>
+ <!-- no translation found for zen_mode_menu_delete_mode (3190031534736428573) -->
+ <skip />
+ <!-- no translation found for zen_mode_delete_mode_confirmation (7594340592051947392) -->
+ <skip />
<string name="zen_mode_rule_name_edit" msgid="1053237022416700481">"Hlela"</string>
<string name="zen_mode_automation_settings_page_title" msgid="6217433860514433311">"Amashejuli"</string>
<string name="zen_mode_automatic_rule_settings_page_title" msgid="5264835276518295033">"Ishejuli"</string>
@@ -3338,11 +3398,10 @@
<string name="zen_mode_set_calendar_title" msgid="7216665046452644450">"Engeza ikhalenda"</string>
<string name="zen_mode_set_calendar_link" msgid="5694504696975898068">"Sebenzisa ikhalenda yakho"</string>
<string name="zen_mode_set_calendar_category_title" msgid="4860286061420133360">"Shejula"</string>
- <!-- no translation found for zen_mode_set_schedule_title (8023100831320026233) -->
- <skip />
- <!-- no translation found for zen_mode_set_schedule_link (2534032127923435737) -->
- <skip />
- <!-- no translation found for zen_mode_schedule_duration (299332195675875111) -->
+ <string name="zen_mode_set_schedule_title" msgid="8023100831320026233">"Setha ishejuli"</string>
+ <string name="zen_mode_set_schedule_link" msgid="2534032127923435737">"Shejula"</string>
+ <string name="zen_mode_schedule_duration" msgid="299332195675875111">"Ihora elingu-<xliff:g id="HOURS">%1$d</xliff:g>, nemizuzu engu-<xliff:g id="MINUTES">%2$d</xliff:g>"</string>
+ <!-- no translation found for zen_mode_configuration_link_title (4718358055721023371) -->
<skip />
<string name="zen_mode_schedule_category_title" msgid="1381879916197350988">"Ishejuli"</string>
<string name="zen_mode_automation_suggestion_title" msgid="7776129050500707960">"Thulisa ifoni ngezinye izikhathi"</string>
@@ -3353,7 +3412,7 @@
<string name="zen_mode_settings_category" msgid="3794956668816783447">"Vumela iziphazamiso ezenza umsindo"</string>
<string name="zen_mode_visual_interruptions_settings_title" msgid="7806181124566937214">"Vimbela ukuphazamiseka okubonakalayo"</string>
<string name="zen_mode_visual_signals_settings_subtitle" msgid="7433077540895876672">"Vumela amasignali okubuka"</string>
- <string name="mode_interruption_filter_title" msgid="6657431939996264417">"Izaziso ezingafinyelela kuwe"</string>
+ <string name="mode_interruption_filter_title" msgid="3343846700214702347">"Hlala ugxilile"</string>
<string name="mode_device_effects_title" msgid="5857008332618433744">"Izenzo ezengeziwe"</string>
<string name="mode_display_settings_title" msgid="8132825978346535472">"Bonisa amasethingi"</string>
<string name="mode_display_options_section" msgid="5151597748243866532">"Okungakhethwa kukho kokubonisa"</string>
@@ -3370,6 +3429,8 @@
<string name="mode_dark_theme_title_secondary_list" msgid="4761262694149772845">"nika amandla itimu emnyama"</string>
<string name="mode_dark_theme_summary" msgid="8428887193785431898">"Shintsha i-OS nama-app ukuze uncamele umbhalo okhanyayo kungemuva elimnyama, okungenzeka kube lula emehlweni futhi kunikeza ukulondoloza okubalulekile kwebhethri kwamanye amadivayisi"</string>
<string name="mode_display_settings_summary" msgid="5929234706883482380">"{count,plural,offset:2 =0{Azikho izinguquko zokubonisa}=1{I-{effect_1}}=2{I-{effect_1} ne-{effect_2}}=3{I-{effect_1}, i-{effect_2}, ne-{effect_3}}one{I-{effect_1}, i-{effect_2}, nokungu-# ngaphezulu}other{I-{effect_1}, i-{effect_2}, nokungu-# ngaphezulu}}"</string>
+ <string name="mode_notification_filter_title" msgid="443728483176031977">"Iziphazamiso zokuhlunga"</string>
+ <string name="mode_no_notification_filter" msgid="7119188047783404890">"Azikho iziphazamiso ezihlungiwe"</string>
<string name="zen_mode_restrict_notifications_title" msgid="4926944083757096458">"Bonisa okungakhethwa kukho kwezaziso ezihlungiwe"</string>
<string name="zen_mode_restrict_notifications_category" msgid="5870944770935394566">"Uma Ukungaphazamisi kuvuliwe"</string>
<string name="zen_mode_restrict_notifications_mute" msgid="6692072837485018287">"Awukho umsindo kusukela kuzaziso"</string>
@@ -3666,6 +3727,7 @@
<string name="notification_channels" msgid="1502969522886493799">"Izigaba"</string>
<string name="notification_channels_other" msgid="18159805343647908">"Okunye"</string>
<string name="no_channels" msgid="4716199078612071915">"le-app ayizange ithumele izasiso"</string>
+ <string name="no_recent_channels" msgid="5068574296267584043">"Bonisa izigaba ezingasetshenzisiwe"</string>
<string name="app_settings_link" msgid="6725453466705333311">"Amasethingi angeziwe ku-app"</string>
<string name="show_unused_channels" msgid="4956292847964439078">"Bonisa izigaba ezingasetshenzisiwe"</string>
<string name="hide_unused_channels" msgid="2019739275175707170">"Fihla izigaba ezingasetshenzisiwe"</string>
@@ -3775,6 +3837,8 @@
<string name="zen_mode_apps_priority_apps" msgid="7386196048313716076">"Ama-app akhethiwe"</string>
<string name="zen_mode_apps_none_apps" msgid="2493642312793604327">"Lutho"</string>
<string name="zen_mode_apps_all_apps" msgid="705700582778445484">"Konke"</string>
+ <!-- no translation found for zen_mode_apps_subtext (1764211974662012877) -->
+ <skip />
<string name="zen_mode_bypassing_apps" msgid="625309443389126481">"Vumela izinhlelo zokusebenza ukubhala ngaphezulu"</string>
<string name="zen_mode_bypassing_apps_header" msgid="60083006963906906">"Ama-app angaphazamisa"</string>
<string name="zen_mode_bypassing_apps_add_header" msgid="3201829605075172536">"Khetha ama-app amaningi"</string>
@@ -3811,12 +3875,9 @@
<string name="zen_mode_summary_alarms_only_by_hour" msgid="7400910210950788163">"{count,plural, =1{Shintshela kuma-alamu ihora elilodwa kuze kube {time}}one{Shintshela kuma-alamu kuphela amahora angu-# (kuze kube {time})}other{Shintshela kuma-alamu kuphela amahora angu-# (kuze kube {time})}}"</string>
<string name="zen_mode_summary_alarms_only_by_time" msgid="8140619669703968810">"Guqulela kuma-alamu kuphela kuze kube ngumhla ka-<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
<string name="zen_mode_summary_always" msgid="722093064250082317">"Guqulela kuhlala uphazamisa"</string>
- <!-- no translation found for zen_mode_action_change_name (766639614789907016) -->
- <skip />
- <!-- no translation found for zen_mode_action_change_icon (6192187791750301778) -->
- <skip />
- <!-- no translation found for zen_mode_icon_picker_title (6845490379143557472) -->
- <skip />
+ <string name="zen_mode_action_change_name" msgid="766639614789907016">"Qamba kabusha"</string>
+ <string name="zen_mode_action_change_icon" msgid="6192187791750301778">"Shintsha isithonjana"</string>
+ <string name="zen_mode_icon_picker_title" msgid="6845490379143557472">"Shintsha isithonjana"</string>
<string name="warning_button_text" msgid="1274234338874005639">"Isexwayiso"</string>
<string name="suggestion_button_close" msgid="6865170855573283759">"Vala"</string>
<string name="device_feedback" msgid="5351614458411688608">"Thumela impendulo mayelana nale divayisi"</string>
@@ -4871,14 +4932,17 @@
<string name="confirm_format_ext4_text" msgid="7940372488624630214">"Ukuhlukaniswa kwedatha yale divayisi kudinga ukuguqulelwa ku-ext4 ngaphambi kokusebenzisa okungakhethwa kukho konjiniyela kuka-16KB. Ubuqotho besofthiwe abukwazi ukuqinisekiswa kule modi, futhi noma iyiphi idatha egcinwe efonwini ngenkathi i-bootloader ivuliwe ingaba sengozini. Ukwenza kusebenze okukhethwa kukho kuka-16KB kuzodinga ukuqalisa okukodwa ngemva kwalokhu. Uma ukule modi, ungashintsha uye emuva naphambili phakathi kwemodi ka-4KB ne-16KB ngokuqalisa okukodwa. Ezinye izakhi zizokhutshazwa kulawa mamodi, ngakho-ke amanye ama-app angase angasebenzi. Ukuze ubuyisele idivayisi kumodi yokukhiqiza, uzodinga ukushintshela kumodi ye-4KB bese ukhiya i-bootloader, esetha idivayisi kabusha njengasekuqaleni. Ngemuva kokuthi idivayisi iqale ngempumelelo ku-Android, khubaza ukuvula kwe-OEM Kokungakhethwa kukho konjiniyela. Idivayisi izosulwa futhi isistimu yefayela izoshintshelwa ku-ext4 ngemva kokuqinisekisa. Ngemva kokuqeda lokhu, sicela ubuye ukuze unike amandla u-16KB futhi."</string>
<string name="confirm_ext4_button_text" msgid="6045501984773738407">"Sula yonke idatha"</string>
<string name="format_ext4_failure_toast" msgid="8059453995800471549">"Yehlulekile ukufometha kabusha nokusula ukuhlukaniswa kwedatha ku-ext4."</string>
- <string name="confirm_oem_unlock_for_16k_title" msgid="5374451262432025419">"Kudingeka Ukuvula I-Bootloader Kumodi ka-16KB"</string>
+ <!-- no translation found for confirm_oem_unlock_for_16k_title (6062041826568112078) -->
+ <skip />
<string name="confirm_oem_unlock_for_16k_text" msgid="3583604865119937957">"Le divayisi idinga ukuthi ibootloader ivulwe ngaphambi kokusebenzisa okungakhethwa kukho konjiniyela kuka-16KB. Ubuqotho besofthiwe abukwazi ukuqinisekiswa kule modi, futhi noma iyiphi idatha egcinwe efonwini ngenkathi ibootloader ivuliwe ingaba sengozini. Yonke idatha yomsebenzisi namasethingi azosulwa uma wenza kusebenze imodi ka-16KB. Uma ibootloader isivuliwe, ukuvula okukhethwa kukho kuka-16KB kuzodinga ukuqalisa okubili. Uma ukule modi, ungashintsha uye emuva naphambili phakathi kwemodi ka-4KB ne-16KB ngokuqalisa okukodwa. Ezinye izakhi zizokhutshazwa kulawa mamodi, ngakho-ke amanye ama-app angase angasebenzi. Ukuze ubuyisele idivayisi kumodi yokukhiqiza, uzodinga ukushintshela kumodi ka-4KB bese kuba ukukhiya i-OEM/ibootloader (esetha kabusha njengasekuqaleni) idivayisi. Sicela uvule ibootloader bese uyazama futhi. Ungabona imiyalelo yokuthi ungakwenza kanjani lokhu kokuthi <a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\">https://source.android.com/docs/core/architecture/bootloader/locking_unlocking</a>"</string>
<string name="page_agnostic_4k_pages_title" msgid="1184703958249093215">"Ukusebenzisa i-4KB page-agnostic"</string>
<string name="page_agnostic_4k_pages_text_short" msgid="2894243902906666242">"Ukumodi ka-16KB yemodi ye-page-agnostic. Ubuqotho besofthiwe abukwazi ukuqinisekiswa kule modi, futhi noma iyiphi idatha egcinwe efonwini ngenkathi i-bootloader ivuliwe ingaba sengozini. Ezinye izakhi zizokhutshazwa kulawa mamodi, ngakho-ke amanye ama-app angase angasebenzi. Ukuze uphinde ufake imodi yokukhiqiza, kufanele ukhiye i-bootloader yedivayisi. Thepha ukuze ufunde kabanzi."</string>
<string name="page_agnostic_4k_pages_text" msgid="8284806650260868833">"Ukumodi ka-16KB yemodi ye-page-agnostic. Ubuqotho besofthiwe abukwazi ukuqinisekiswa kule modi, futhi noma iyiphi idatha egcinwe efonwini ngenkathi i-bootloader ivuliwe ingaba sengozini. Ezinye izakhi zizokhutshazwa kulawa mamodi, ngakho-ke amanye ama-app angase angasebenzi. Ukuze uphinde ufake imodi yokukhiqiza, kufanele ukhiye i-bootloader yedivayisi. Lokhu kuzosetha kabusha njengasekuqaleni idivayisi futhi nokuyibuyisela kumasethingi okukhiqiza. Ngemuva kokuthi idivayisi iqale ngempumelelo ku-Android, khubaza ukuvula kwe-OEM Kokungakhethwa kukho konjiniyela. Uma idivayisi yehluleka ukuqalisa ku-Android noma ingazinzile, khanyisa kabusha idivayisi ngemifanekiso yefemu evela kokuthi <a href=\"https://developers.google.com/android/images\">https://developers .google.com/android/images</a> noma sebenzisa okuthi <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> bese ukhetha okuthi \'Sula Idivayisi\', \'Khiya I-Bootloader\' kanye nokuthi \'Phoqelela I-Flash ezingxenyeni zonke\'."</string>
<string name="page_agnostic_16k_pages_title" msgid="7762533464569818498">"Ukusebenzisa imodi ye-16KB page-agnostic"</string>
- <string name="page_agnostic_16k_pages_text_short" msgid="269039281591806585">"Ukumodi ka-16KB yemodi ye-page-agnostic. Ubuqotho besofthiwe abukwazi ukuqinisekiswa kule modi, futhi noma iyiphi idatha egcinwe efonwini ngenkathi i-bootloader ivuliwe ingaba sengozini. Ezinye izakhi zizokhutshazwa kulawa mamodi, ngakho-ke amanye ama-app angase angasebenzi. Ukuze uphinde ufake imodi yokukhiqiza, kufanele, ushintshele emuva kumodi ka-4K bese ukhiya i-bootloader yedivayisi. Thepha ukuze ufunde kabanzi."</string>
- <string name="page_agnostic_16k_pages_text" msgid="6208765386837706582">"Ukumodi ye-16KB page-agnostic. Ubuqotho besofthiwe abukwazi ukuqinisekiswa kule modi, futhi noma iyiphi idatha egcinwe efonini ngenkathi ibootloader ivuliwe ingaba sengozini. Ezinye izakhi zizokhutshazwa kulawa mamodi, ngakho-ke amanye ama-app angase angasebenzi. Ukuze uphinde ufake imodi yokukhiqiza, kufanele, ushintshele emuva kumodi ye4K bese ukhiya ibootloader yedivayisi. Lokhu kuzosetha kabusha njengasekuqaleni idivayisi futhi nokuyibuyisela kumasethingi okukhiqiza. Ngemuva kokuthi idivayisi iqale ngempumelelo ku-Android, khubaza ukuvula kwe-OEM Kokungakhethwa kukho konjiniyela. Uma idivayisi yehluleka ukuqalisa ku-Android noma ingazinzile, khanyisa kabusha idivayisi ngemifanekiso yefemu evela kokuthi <a href=\"https://developers.google.com/android/images\">https://developers .google.com/android/images</a> noma sebenzisa okuthi <a href=\"https://flash.android.com/back-to-public\">https://flash.android.com/back-to-public</a> bese ukhetha okuthi \'Sula Idivayisi\', \'Khiya IBootloader\' kanye nokuthi \'Phoqelela IFlash ezingxenyeni zonke\'."</string>
+ <!-- no translation found for page_agnostic_16k_pages_text_short (3282018880292691631) -->
+ <skip />
+ <!-- no translation found for page_agnostic_16k_pages_text (2999817238546170627) -->
+ <skip />
<string name="page_agnostic_notification_channel_name" msgid="1658444283036376361">"Imodi ye-Page-agnostic ka-16KB"</string>
<string name="page_agnostic_notification_action" msgid="2309805437430150456">"Funda kabanzi"</string>
<string name="bug_report_handler_title" msgid="713439959113250125">"Isibambi sombiko wesiphazamiso"</string>
@@ -5010,7 +5074,8 @@
<string name="app_pinning_main_switch_title" msgid="5465506660064032876">"Sebenzisa ukuphina i-app"</string>
<string name="developer_options_main_switch_title" msgid="1720074589554152501">"Sebenzisa izinkinobho zikanjiniyela"</string>
<string name="default_print_service_main_switch_title" msgid="4697133737128324036">"Sebenzisa isevisi yokuphrinta"</string>
- <string name="multiple_users_main_switch_title" msgid="6686858308083037810">"Vumela abasebenzisi abaningi"</string>
+ <!-- no translation found for multiple_users_main_switch_title (9158796544835843201) -->
+ <skip />
<string name="multiple_users_main_switch_keywords" msgid="4845954458094134356">"vumela, eziningi, umsebenzisi, vumela, eziningi"</string>
<string name="multiple_users_title_keywords" msgid="2395593167746225172">"okuningi, abasebenzisi, amaphrofayela, abantu, ama-akhawunti, shintsha, okuningi"</string>
<string name="wireless_debugging_main_switch_title" msgid="8463499572781441719">"Sebenzisa ukususa ibhagi nge-Wi-Fi"</string>
@@ -5354,4 +5419,6 @@
<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>
+ <!-- no translation found for homepage_search (6759334912284663559) -->
+ <skip />
</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index adaea1b..4680936 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1552,4 +1552,8 @@
<item>Theater</item>
<item>Flower</item>
</string-array>
+
+ <!-- Packages that will not show Display over other apps permission -->
+ <string-array name="display_over_apps_permission_change_exempt">
+ </string-array>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index d972e13..ce48720 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -179,6 +179,9 @@
<dimen name="pointer_fill_style_circle_padding">8dp</dimen>
<dimen name="pointer_fill_style_shape_default_stroke">1dp</dimen>
<dimen name="pointer_fill_style_shape_hovered_stroke">3dp</dimen>
+ <dimen name="pointer_scale_padding">8dp</dimen>
+ <item name="pointer_scale_size_start" format="float" type="dimen">1.0</item>
+ <item name="pointer_scale_size_end" format="float" type="dimen">2.5</item>
<!-- RemoteAuth-->
<dimen name="remoteauth_fragment_padding_horizontal">40dp</dimen>
@@ -499,7 +502,9 @@
<dimen name="audio_streams_qrcode_preview_radius">30dp</dimen>
<!-- Zen Modes -->
+ <dimen name="zen_mode_icon_list_header_circle_diameter">90dp</dimen>
+ <dimen name="zen_mode_icon_list_header_icon_size">48dp</dimen>
<dimen name="zen_mode_icon_list_item_size">96dp</dimen>
- <dimen name="zen_mode_icon_list_circle_diameter">56dp</dimen>
- <dimen name="zen_mode_icon_list_icon_size">32dp</dimen>
+ <dimen name="zen_mode_icon_list_item_circle_diameter">56dp</dimen>
+ <dimen name="zen_mode_icon_list_item_icon_size">32dp</dimen>
</resources>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index f62ccae..5427cdd 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -36,4 +36,8 @@
<integer name="enrollment_progress_minimum_time_display">0</integer>
<!-- The time (in millis) to wait to collect messages in fingerprint enrollment before displaying it. -->
<integer name="enrollment_collect_time">0</integer>
+
+ <!-- PointerIcon Settings -->
+ <integer name="pointer_scale_seek_bar_start">0</integer>
+ <integer name="pointer_scale_seek_bar_end">3</integer>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2d5a671..81c8973 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -156,6 +156,8 @@
<string name="bluetooth_hearing_device_settings_summary">Shortcut, hearing aid compatibility</string>
<!-- Connected devices settings. Title for hearing aids presets. A preset is a set of hearing aid settings. User can apply different settings in different environments (e.g. Outdoor, Restaurant, Home) [CHAR LIMIT=60] [BACKUP_MESSAGE_ID=5429761844739722885] -->
<string name="bluetooth_hearing_aids_presets">Preset</string>
+ <!-- Connected devices settings. Summary of the preference when no preset info is obtained from the remote device [CHAR LIMIT=60] -->
+ <string name="bluetooth_hearing_aids_presets_empty_list_message">There are no presets programmed by your audiologist</string>
<!-- Message when selecting hearing aids presets failed. [CHAR LIMIT=NONE] -->
<string name="bluetooth_hearing_aids_presets_error">Couldn\u2019t update preset</string>
<!-- Connected devices settings. Title of the preference to show the entrance of the audio output page. It can change different types of audio are played on phone or other bluetooth devices. [CHAR LIMIT=35] -->
@@ -932,7 +934,8 @@
<string name="security_settings_fingerprint_single_face_watch_preference_summary">Face, fingerprint, and <xliff:g id="watch" example="Dani's Watch">%s</xliff:g> added</string>
<!-- Message showing that multiple fingerprints, face, and the current watch is set up. Shown for a menu item that launches fingerprint, face, and active unlock settings or enrollment. [CHAR LIMIT=80]-->
<string name="security_settings_fingerprint_multiple_face_watch_preference_summary">Face, fingerprints, and <xliff:g id="watch" example="Dani's Watch">%s</xliff:g> added</string>
-
+ <!-- Description for mandatory biometrics prompt-->
+ <string name="mandatory_biometrics_prompt_description">This is needed since Identity Check is on</string>
<!-- RemoteAuth unlock enrollment and settings --><skip />
<!-- Title shown for menu item that launches watch unlock settings. [CHAR LIMIT=40] -->
<string name ="security_settings_remoteauth_preference_title">Remote Authenticator Unlock</string>
@@ -995,7 +998,7 @@
<!-- Biometric settings --><skip />
<!-- Title shown for menu item that launches biometric settings. [CHAR LIMIT=66] -->
- <string name="security_settings_biometric_preference_title">Fingerprint & Face Unlock</string>
+ <string name="security_settings_biometric_preference_title">Face & Fingerprint Unlock</string>
<!-- Title shown for work menu item that launches biometric settings. [CHAR LIMIT=66] -->
<string name="security_settings_work_biometric_preference_title">Face & Fingerprint Unlock for work</string>
<!-- Message shown in summary field of biometric settings. [CHAR LIMIT=66] -->
@@ -1893,6 +1896,37 @@
<!-- Nfc developer settings: The confirm button of the popup dialog. [CHAR_LIMIT=60] -->
<string name="nfc_reboot_dialog_confirm">Restart</string>
+ <!-- External Display settings. The keywords for searching. [CHAR LIMIT=40] -->
+ <string name="keywords_external_display">mirror, external display, connected display, usb display, resolution, rotation</string>
+ <!-- External Display settings. When external display is enabled. [CHAR LIMIT=40] -->
+ <string name="external_display_on">On</string>
+ <!-- External Display settings. When external display is disabled. [CHAR LIMIT=40] -->
+ <string name="external_display_off">Off</string>
+ <!-- External Display settings. The title of the screen. [CHAR LIMIT=40] -->
+ <string name="external_display_settings_title">External Display</string>
+ <!-- External Display use. The title of the use preference. [CHAR LIMIT=40] -->
+ <string name="external_display_use_title">Use external display</string>
+ <!-- External Display resolution settings. The title of the screen. [CHAR LIMIT=40] -->
+ <string name="external_display_resolution_settings_title">Display resolution</string>
+ <!-- External Display settings. Text that appears when scanning for devices is finished and no nearby device was found [CHAR LIMIT=40]-->
+ <string name="external_display_not_found">External display is disconnected</string>
+ <!-- External Display settings. Rotation of the external display -->
+ <string name="external_display_rotation">Rotation</string>
+ <!-- External Display settings. Standard rotation of the external display -->
+ <string name="external_display_standard_rotation">Standard</string>
+ <!-- External Display settings. 90 rotation of the external display -->
+ <string name="external_display_rotation_90">90°</string>
+ <!-- External Display settings. 180 rotation of the external display -->
+ <string name="external_display_rotation_180">180°</string>
+ <!-- External Display settings. 180 rotation of the external display -->
+ <string name="external_display_rotation_270">270°</string>
+ <!-- External Display settings. Footer title -->
+ <string name="external_display_change_resolution_footer_title">Changing rotation or resolution may stop any apps that are currently running</string>
+ <!-- External Display settings. No Displays footer title -->
+ <string name="external_display_not_found_footer_title">Your device must be connected to an external display to mirror your screen</string>
+ <!-- External Display settings. More resolution options -->
+ <string name="external_display_more_options_title">More options</string>
+
<!-- Wifi Display settings. The title of the screen. [CHAR LIMIT=40] -->
<string name="wifi_display_settings_title">Cast</string>
<!-- Wifi Display settings. The keywords of the setting. [CHAR LIMIT=NONE] -->
@@ -2753,6 +2787,9 @@
<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] -->
@@ -4402,10 +4439,6 @@
<string name="keyboard_a11y_category">Accessibility</string>
<!-- Title for the 'physical keyboard' settings screen. [CHAR LIMIT=35] -->
<string name="physical_keyboard_title">Physical keyboard</string>
- <!-- Title for the 'show virtual keyboard' preference switch. [CHAR LIMIT=35] -->
- <string name="show_ime">Use on-screen keyboard</string>
- <!-- Summary text for the 'add virtual keyboard' preference sub-screen. [CHAR LIMIT=100] -->
- <string name="show_ime_summary">Keep it on screen while physical keyboard is active</string>
<!-- Title for the 'Bounce keys' preference switch. [CHAR LIMIT=35] -->
<string name="bounce_keys">Bounce keys</string>
<!-- Summary text for the 'Bounce keys' preference sub-screen. [CHAR LIMIT=300] -->
@@ -4571,6 +4604,12 @@
<!-- On Languages & input settings screen, setting summary. Setting for mouse pointer speed. [CHAR LIMIT=35] -->
<string name="pointer_speed">Pointer speed</string>
+ <!-- Setting for mouse pointer scale. [CHAR LIMIT=35] -->
+ <string name="pointer_scale">Pointer scale</string>
+ <!-- Content description for decreasing pointer scale. [CHAR LIMIT=35] -->
+ <string name="pointer_scale_decrease_content_description">Decrease pointer scale</string>
+ <!-- Setting for mouse pointer scale. [CHAR LIMIT=35] -->
+ <string name="pointer_scale_increase_content_description">Increase pointer scale</string>
<!-- On Languages & input settings screen, heading. Inside the "Languages & input settings" screen, this is the header for settings that relate to game controller devices. [CHAR LIMIT=40] -->
<string name="game_controller_settings_category">Game Controller</string>
@@ -4841,8 +4880,10 @@
<string name="accessibility_magnification_triple_tap_warning_negative_button">Cancel</string>
<!-- Title for the accessibility preference screen to enable screen magnification settings. [CHAR LIMIT=35] -->
<string name="accessibility_magnification_service_settings_title">Magnification settings</string>
- <!-- Title for accessibility magnification preference where user can move the magnification area by dragging one finger instead of two. [CHAR LIMIT=60] -->
- <string name="accessibility_magnification_one_finger_panning_title">One-finger panning</string>
+ <!-- Title for accessibility magnification preference where user can move the magnification area by dragging one finger. [CHAR LIMIT=60] -->
+ <string name="accessibility_magnification_one_finger_panning_title">Move magnifier with 1 finger</string>
+ <!-- Summary for accessibility magnification one finger panning feature where user can move the magnification area by dragging one finger. [CHAR LIMIT=60] -->
+ <string name="accessibility_magnification_one_finger_panning_summary">Drag 1 finger to move around the screen</string>
<!-- Summary for accessibility magnification preference when one finger panning feature is turned on.
The feature when enabled allows user to move the magnification area by dragging one finger instead of two. [CHAR LIMIT=60] -->
<string name="accessibility_magnification_one_finger_panning_summary_on">Move the magnification area by dragging one finger.</string>
@@ -4906,6 +4947,30 @@
{4,number,integer}. Lift finger to stop magnification
]]>
</string>
+ <!-- Instructions on the accessibility preference screen teaching the user how to interact with screen magnification when one finger panning feature is turned off. [CHAR LIMIT=none] -->
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_off">
+ <![CDATA[
+ <b>To zoom in:</b><br/>
+ {0,number,integer}. Use shortcut to start magnification<br/>
+ {1,number,integer}. Tap the screen<br/>
+ {2,number,integer}. Drag 2 fingers to move around the screen<br/>
+ {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/>
+ {4,number,integer}. Use shortcut to stop magnification<br/><br/>
+ You can also zoom in temporarily and more.
+ ]]>
+ </string>
+ <!-- Instructions on the accessibility preference screen teaching the user how to interact with screen magnification when one finger panning feature is turned on. [CHAR LIMIT=none] -->
+ <string name="accessibility_screen_magnification_summary_one_finger_panning_on">
+ <![CDATA[
+ <b>To zoom in:</b><br/>
+ {0,number,integer}. Use shortcut to start magnification<br/>
+ {1,number,integer}. Tap the screen<br/>
+ {2,number,integer}. Drag 1 or 2 fingers to move around the screen<br/>
+ {3,number,integer}. Pinch with 2 fingers to adjust zoom<br/>
+ {4,number,integer}. Use shortcut to stop magnification<br/><br/>
+ You can also zoom in temporarily and more.
+ ]]>
+ </string>
<!-- Summary for the accessibility preference screen to enable screen magnification via the nav bar. [CHAR LIMIT=none] -->
<string name="accessibility_screen_magnification_navbar_summary">When magnification is turned on, you can zoom in on your screen.\n\n<b>To zoom</b>, start magnification, then tap anywhere on the screen.\n<ul><li>Drag 2 or more fingers to scroll</li>\n<li>Pinch 2 or more fingers to adjust zoom</li></ul>\n\n<b>To zoom temporarily</b>, start magnification, then touch & hold anywhere on the screen.\n<ul><li>Drag to move around the screen</li>\n<li>Lift finger to zoom out</li></ul>\n\nYou can’t zoom in on the keyboard or navigation bar.</string>
<!-- Accessibility label for paging indicator in accessibility tutorial page. [CHAR LIMIT=NONE] -->
@@ -7268,6 +7333,8 @@
<string name="help_url_install_certificate" translatable="false"></string>
<!-- Help URL, Tap & pay [DO NOT TRANSLATE] -->
<string name="help_url_nfc_payment" translatable="false"></string>
+ <!-- Help URL, External display [DO NOT TRANSLATE] -->
+ <string name="help_url_external_display" translatable="false"></string>
<!-- Help URL, Remote display [DO NOT TRANSLATE] -->
<string name="help_url_remote_display" translatable="false"></string>
<!-- Help URL, Face [DO NOT TRANSLATE] -->
@@ -7927,6 +7994,37 @@
<!-- Zen Modes: Summary for the Do not Disturb option and associated settings page. [CHAR LIMIT=240]-->
<string name="zen_mode_settings_summary">Only get notified by important people and apps</string>
+ <!-- Zen Modes: Option to add an automatic schedule for a mode. [CHAR_LIMIT=40] -->
+ <string name="zen_mode_select_schedule">Select activation type</string>
+
+ <!-- Priority Modes: Option to choose a time-based schedule for a mode. [CHAR_LIMIT=40] -->
+ <string name="zen_mode_select_schedule_time">Time</string>
+ <!-- Priority Modes: Example text for the option to choose a time-based schedule for a mode. [CHAR_LIMIT=60] -->
+ <string name="zen_mode_select_schedule_time_example">Ex. \"9:30 – 5:00 PM\"</string>
+
+ <!-- Priority Modes: Option to choose a calendar-events-based schedule for a mode. [CHAR_LIMIT=40] -->
+ <string name="zen_mode_select_schedule_calendar">Calendar</string>
+ <!-- Priority Modes: Example text for the option to choose a calendar-events-based schedule for a mode. [CHAR_LIMIT=60] -->
+ <string name="zen_mode_select_schedule_calendar_example">Ex. \"Personal calendar\"</string>
+
+ <!-- Priority Modes: Short text that indicates that a mode is currently on (active). [CHAR_LIMIT=10] -->
+ <string name="zen_mode_active_text">ON</string>
+
+ <!-- Priority Modes: Format string for the "current state + trigger description summary for rules in the list. [CHAR_LIMIT=10] -->
+ <string name="zen_mode_format_status_and_trigger" translatable="false"><xliff:g id="current_status" example="ON">%1$s</xliff:g> • <xliff:g id="trigger_description" example="Mon-Fri, 23:00-7:00">%2$s</xliff:g></string>
+
+ <!-- Priority Modes: Indicates that a mode is disabled and needs to be configured. [CHAR_LIMIT=40] -->
+ <string name="zen_mode_disabled_needs_setup">Not set</string>
+
+ <!-- Priority Modes: Indicates that a mode is disabled by the user. [CHAR_LIMIT=40] -->
+ <string name="zen_mode_disabled_by_user">Disabled</string>
+
+ <!-- Priority Modes: Title of the "Create a mode" dialog, to choose the mode type. [CHAR_LIMIT=30] -->
+ <string name="zen_mode_new_title">Create a mode</string>
+
+ <!-- Priority Modes: Option to add a "custom" mode in the "Add a mode" dialog. [CHAR_LIMIT=20] -->
+ <string name="zen_mode_new_option_custom">Custom</string>
+
<!-- Subtitle for the Do not Disturb slice. [CHAR LIMIT=50]-->
<string name="zen_mode_slice_subtitle">Limit interruptions</string>
@@ -7942,9 +8040,15 @@
<!-- Do not disturb: Title for dialog that allows users to delete DND rules/schedules[CHAR LIMIT=40] -->
<string name="zen_mode_delete_automatic_rules">Delete schedules</string>
- <!-- Do not disturb: Delete text button presented in a dialog to confirm the user would like to delete the selected DND rules. [CHAR LIMIT=30] -->
+ <!-- Do not disturb: Delete text button presented in a dialog to confirm the user would like to delete the selected DND rules. [CHAR LIMIT=30] -->
<string name="zen_mode_schedule_delete">Delete</string>
+ <!-- Do not disturb: Menu option for deleting a mode on its configuration page [CHAR LIMIT=40] -->
+ <string name="zen_mode_menu_delete_mode">Delete mode</string>
+
+ <!-- Do not disturb: Confirmation dialog asking the user whether they would like to delete the named mode [CHAR LIMIT: 40] -->
+ <string name="zen_mode_delete_mode_confirmation">Delete \"<xliff:g id="mode" example="My Schedule">%1$s</xliff:g>\" mode?</string>
+
<!-- Do not disturb: Edit label for button that allows user to edit the dnd schedule name. [CHAR LIMIT=30] -->
<string name="zen_mode_rule_name_edit">Edit</string>
@@ -7975,6 +8079,9 @@
<!-- Duration in hours and minutes for the length of a Do Not Disturb schedule. For example "1 hr, 22 min" -->
<string name="zen_mode_schedule_duration"><xliff:g example="10" id="hours">%1$d</xliff:g> hr, <xliff:g example="20" id="minutes">%2$d</xliff:g> min</string>
+ <!-- Priority Modes: Label for switch to enable/disable a rule turning on automatically; links to an app-provided configuration page [CHAR LIMIT=40] -->
+ <string name="zen_mode_configuration_link_title">Turn on automatically</string>
+
<!-- Do not disturb: Title do not disturb settings representing automatic (scheduled) do not disturb rules. [CHAR LIMIT=30] -->
<string name="zen_mode_schedule_category_title">Schedule</string>
@@ -8003,7 +8110,7 @@
<string name="zen_mode_visual_signals_settings_subtitle">Allow visual signals</string>
<!-- Do not disturb: mode page section title [CHAR LIMIT=80] -->
- <string name="mode_interruption_filter_title">Notifications that can reach you</string>
+ <string name="mode_interruption_filter_title">Stay focused</string>
<!-- Do not disturb: mode page section title [CHAR LIMIT=80] -->
<string name="mode_device_effects_title">Additional actions</string>
@@ -8047,7 +8154,10 @@
other {{effect_1}, {effect_2}, and # more}
}
</string>
-
+ <!-- Modes: setting for whether the mode should filter (silence/hide) notifications/volume streams -->
+ <string name="mode_notification_filter_title">Filter interruptions</string>
+ <!-- Modes: subtext when a mode is not filtering (silence/hide) notifications/volume streams -->
+ <string name="mode_no_notification_filter">No interruptions are filtered</string>
<!-- Do not disturb: restrict notifications settings title [CHAR LIMIT=80] -->
<string name="zen_mode_restrict_notifications_title">Display options for filtered
@@ -8369,6 +8479,9 @@
<!-- Configure Notifications: Title for the notification badging option. [CHAR LIMIT=50 BACKUP_MESSAGE_ID=5125022693565388760] -->
<string name="notification_badging_title">Notification dot on app icon</string>
+ <!-- App Info > Notifications: Title for section where notifications bundles can be configured [CHAR LIMIT=80]-->
+ <string name="notification_bundles">Notification bundles</string>
+
<!-- Configure Notifications: Title for the notification bubbles option. [CHAR LIMIT=60] -->
<string name="notification_bubbles_title">Bubbles</string>
<!-- Title for the toggle shown on the app-level bubbles page [CHAR LIMIT=60] -->
@@ -8907,6 +9020,9 @@
<!-- [CHAR LIMIT=NONE] App notification settings: no channels -->
<string name="no_channels">This app has not posted any notifications</string>
+ <!-- [CHAR LIMIT=NONE] App notification settings: has channels, but hasn't sent notifications recently -->
+ <string name="no_recent_channels">Show unused categories</string>
+
<!-- [CHAR LIMIT=NONE] App notification settings: link to app notification settings-->
<string name="app_settings_link">Additional settings in the app</string>
@@ -12091,10 +12207,17 @@
<!-- Default title for the settings panel [CHAR LIMIT=NONE] -->
<string name="settings_panel_title">Settings Panel</string>
- <!-- UI debug setting: force desktop mode [CHAR LIMIT=50] -->
- <string name="force_desktop_mode">Force desktop mode</string>
- <!-- UI debug setting: force desktop mode summary [CHAR LIMIT=NONE] -->
- <string name="force_desktop_mode_summary">Force experimental desktop mode on secondary displays</string>
+ <!-- Title for enabling freeform windows (desktop mode) developer option toggle [CHAR LIMIT=50] -->
+ <string name="enable_desktop_mode">Enable freeform windows</string>
+ <!-- Summary for enabling freeform windows (desktop mode) developer option toggle [CHAR LIMIT=NONE] -->
+ <string name="enable_desktop_mode_summary">Enable support for freeform windows.</string>
+
+ <!-- TODO(b/348193756): Rename resources for this toggle to indicate that it is for secondary display -->
+ <!-- Title for enabling freeform windows (desktop mode) on secondary display developer option toggle [CHAR LIMIT=50] -->
+ <string name="force_desktop_mode">Enable freeform windowing on second display</string>
+ <!-- Summary for enabling freeform windows (desktop mode) on secondary display developer option toggle [CHAR LIMIT=NONE] -->
+ <string name="force_desktop_mode_summary">Enable freeform windows only on secondary display.</string>
+
<!-- UI debug setting: enable non-resizables in multi window [CHAR LIMIT=60] -->
<string name="enable_non_resizable_multi_window">Enable non-resizable in multi window</string>
<!-- UI debug setting: enable non-resizables in multi window summary [CHAR LIMIT=NONE] -->
@@ -12627,7 +12750,7 @@
<string name="default_print_service_main_switch_title">Use print service</string>
<!-- Title for multiple users main switch. [CHAR LIMIT=50] -->
- <string name="multiple_users_main_switch_title">Allow multiple users</string>
+ <string name="multiple_users_main_switch_title">Allow user switch</string>
<!-- Search keywords for the "Allow Multiple Users" section in Multiple Users Screen. [CHAR LIMIT=NONE] -->
<string name="multiple_users_main_switch_keywords">allow, multiple, user, permit, many</string>
<!-- Search keywords for the Users Screen. [CHAR LIMIT=NONE] -->
@@ -13058,12 +13181,12 @@
<!-- Dialog body text used to explain a reboot is required after enabling freeform support for
it to work [CHAR LIMIT=none] -->
- <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable freeform
- support.</string>
- <!-- Dialog body text used to explain a reboot is required after forcing desktop mode on
- secondary dislays. [CHAR LIMIT=none] -->
- <string name="reboot_dialog_force_desktop_mode">A reboot is required to force desktop mode on
- secondary displays.</string>
+ <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable legacy freeform windowing support.</string>
+ <!-- Dialog body text used to explain a reboot is required after overriding freeform windowing (desktop mode) support. [CHAR LIMIT=none] -->
+ <string name="reboot_dialog_override_desktop_mode">A reboot is required to change freeform windowing support.</string>
+ <!-- Dialog body text used to explain a reboot is required after forcing freeform windowing (desktop mode) on
+ secondary displays. [CHAR LIMIT=none] -->
+ <string name="reboot_dialog_force_desktop_mode">A reboot is required to force freeform windowing on secondary displays.</string>
<!-- Text on the dialog button to reboot the device now [CHAR LIMIT=50] -->
<string name="reboot_dialog_reboot_now">Reboot now</string>
<!-- Text on the dialog button to reboot the device later [CHAR LIMIT=50] -->
@@ -13588,4 +13711,7 @@
<!-- url for learning more about bluetooth audio sharing -->
<string name="help_url_audio_sharing" translatable="false"></string>
+
+ <!-- Text for Search bar of Settings home screen [CHAR LIMIT=34] -->
+ <string name="homepage_search">Search Settings</string>
</resources>
diff --git a/res/xml/app_notification_settings.xml b/res/xml/app_notification_settings.xml
index f96a375..1eee0cb 100644
--- a/res/xml/app_notification_settings.xml
+++ b/res/xml/app_notification_settings.xml
@@ -50,11 +50,22 @@
settings:controller="com.android.settings.notification.app.BubbleSummaryPreferenceController">
</Preference>
+ <!-- Bundles added here -->
+ <PreferenceCategory
+ android:key="bundles"
+ android:title="@string/notification_bundles"
+ android:visibility="gone" />
+
<!-- Channels/Channel groups added here -->
<PreferenceCategory
android:key="channels"
android:layout="@layout/empty_view" />
+ <Preference
+ android:key="more"
+ android:title="@string/no_recent_channels"
+ android:icon="@drawable/ic_expand"/>
+
<!-- Importance toggle -->
<com.android.settingslib.RestrictedSwitchPreference
android:key="allow_sound"
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index 866a529..9420f59 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -738,6 +738,11 @@
android:summary="@string/force_resizable_activities_summary" />
<SwitchPreferenceCompat
+ android:key="override_desktop_mode_features"
+ android:title="@string/enable_desktop_mode"
+ android:summary="@string/enable_desktop_mode_summary" />
+
+ <SwitchPreferenceCompat
android:key="enable_freeform_support"
android:title="@string/enable_freeform_support"
android:summary="@string/enable_freeform_support_summary" />
diff --git a/res/xml/external_display_resolution_settings.xml b/res/xml/external_display_resolution_settings.xml
new file mode 100644
index 0000000..6ac6b1a
--- /dev/null
+++ b/res/xml/external_display_resolution_settings.xml
@@ -0,0 +1,20 @@
+<?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/external_display_resolution_settings_title">
+</PreferenceScreen>
diff --git a/res/xml/external_display_settings.xml b/res/xml/external_display_settings.xml
new file mode 100644
index 0000000..0047211
--- /dev/null
+++ b/res/xml/external_display_settings.xml
@@ -0,0 +1,22 @@
+<?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"
+ settings:keywords="@string/keywords_external_display"
+ android:title="@string/external_display_settings_title">
+</PreferenceScreen>
diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml
index eb9f442..51cbbe6 100644
--- a/res/xml/mobile_network_settings.xml
+++ b/res/xml/mobile_network_settings.xml
@@ -85,13 +85,9 @@
android:summary="@string/auto_data_switch_summary"
settings:controller="com.android.settings.network.telephony.AutoDataSwitchPreferenceController"/>
- <com.android.settingslib.RestrictedSwitchPreference
+ <com.android.settings.spa.preference.ComposePreference
android:key="button_roaming_key"
android:title="@string/roaming"
- android:persistent="false"
- android:summaryOn="@string/roaming_enable"
- android:summaryOff="@string/roaming_disable"
- settings:userRestriction="no_data_roaming"
settings:controller="com.android.settings.network.telephony.RoamingPreferenceController"/>
<Preference
diff --git a/res/xml/modes_rule_settings.xml b/res/xml/modes_rule_settings.xml
index cf090be..5be206e 100644
--- a/res/xml/modes_rule_settings.xml
+++ b/res/xml/modes_rule_settings.xml
@@ -35,13 +35,18 @@
<PreferenceCategory
android:title="@string/mode_interruption_filter_title"
android:key="modes_filters">
+
+ <SwitchPreferenceCompat
+ android:key="allow_filtering"
+ android:title="@string/mode_notification_filter_title"/>
+
<Preference
android:key="zen_mode_people"
android:title="@string/zen_category_people"/>
<Preference
android:key="zen_mode_apps"
- android:title="@string/zen_category_apps" />
+ android:title="@string/zen_category_apps"/>
<Preference
android:key="zen_other_settings"
@@ -62,5 +67,9 @@
<Preference
android:key="mode_display_settings"
android:title="@string/mode_display_settings_title" />
+
+ <Preference
+ android:key="mode_manual_duration"
+ android:title="@string/zen_category_duration" />
</PreferenceCategory>
</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/physical_keyboard_settings.xml b/res/xml/physical_keyboard_settings.xml
index 5b545bb..dd2b709 100644
--- a/res/xml/physical_keyboard_settings.xml
+++ b/res/xml/physical_keyboard_settings.xml
@@ -21,12 +21,6 @@
<PreferenceCategory
android:key="keyboard_options_category"
android:title="@string/keyboard_options_category">
- <SwitchPreferenceCompat
- android:key="show_virtual_keyboard_switch"
- android:title="@string/show_ime"
- android:summary="@string/show_ime_summary"
- android:defaultValue="false" />
-
<Preference
android:key="keyboard_shortcuts_helper"
android:title="@string/keyboard_shortcuts_helper"
diff --git a/res/xml/trackpad_settings.xml b/res/xml/trackpad_settings.xml
index 1eb16b7..04422dd 100644
--- a/res/xml/trackpad_settings.xml
+++ b/res/xml/trackpad_settings.xml
@@ -66,9 +66,19 @@
android:key="pointer_fill_style"
android:title="@string/pointer_fill_style"
android:order="50"
- android:dialogTitle="@string/pointer_fill_style"
settings:controller="com.android.settings.inputmethod.PointerFillStylePreferenceController"/>
+ <com.android.settings.widget.LabeledSeekBarPreference
+ android:key="pointer_scale"
+ android:title="@string/pointer_scale"
+ android:order="70"
+ android:max="@integer/pointer_scale_seek_bar_end"
+ settings:iconStart="@drawable/ic_remove_24dp"
+ settings:iconStartContentDescription="@string/pointer_scale_decrease_content_description"
+ settings:iconEnd="@drawable/ic_add_24dp"
+ settings:iconEndContentDescription="@string/pointer_scale_increase_content_description"
+ settings:controller="com.android.settings.inputmethod.PointerScaleSeekBarController" />
+
<com.android.settingslib.widget.ButtonPreference
android:key="trackpad_touch_gesture"
android:title="@string/trackpad_touch_gesture"
diff --git a/src/com/android/settings/MainClear.java b/src/com/android/settings/MainClear.java
index 0639037..9d219d7 100644
--- a/src/com/android/settings/MainClear.java
+++ b/src/com/android/settings/MainClear.java
@@ -99,6 +99,7 @@
static final int KEYGUARD_REQUEST = 55;
@VisibleForTesting
static final int CREDENTIAL_CONFIRM_REQUEST = 56;
+ static final int BIOMETRICS_REQUEST = 57;
private static final String KEY_SHOW_ESIM_RESET_CHECKBOX =
"masterclear.allow_retain_esim_profiles_after_fdr";
@@ -156,7 +157,8 @@
@VisibleForTesting
boolean isValidRequestCode(int requestCode) {
- return !((requestCode != KEYGUARD_REQUEST) && (requestCode != CREDENTIAL_CONFIRM_REQUEST));
+ return !((requestCode != KEYGUARD_REQUEST) && (requestCode != CREDENTIAL_CONFIRM_REQUEST)
+ && (requestCode != BIOMETRICS_REQUEST));
}
@Override
@@ -179,9 +181,18 @@
return;
}
+ if (requestCode == KEYGUARD_REQUEST) {
+ if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(),
+ false /* biometricsSuccessfullyAuthenticated */,
+ false /* biometricsAuthenticationRequested */)) {
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRICS_REQUEST);
+ return;
+ }
+ }
+
Intent intent = null;
// If returning from a Keyguard request, try to show an account confirmation request if
- // applciable.
+ // applicable.
if (CREDENTIAL_CONFIRM_REQUEST != requestCode
&& (intent = getAccountConfirmationIntent()) != null) {
showAccountCredentialConfirmation(intent);
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index c91ef5c..c1e3494 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -52,6 +52,7 @@
import com.android.settings.network.telephony.EuiccRacConnectivityDialogActivity;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern;
+import com.android.settings.system.reset.ResetNetworkConfirm;
import com.android.settingslib.development.DevelopmentSettingsEnabler;
import java.util.ArrayList;
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
deleted file mode 100644
index c707b96..0000000
--- a/src/com/android/settings/ResetNetworkConfirm.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2015 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.app.Activity;
-import android.app.ProgressDialog;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Looper;
-import android.telephony.SubscriptionManager;
-import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.app.AlertDialog;
-
-import com.android.settings.core.InstrumentedFragment;
-import com.android.settings.network.ResetNetworkOperationBuilder;
-import com.android.settings.network.ResetNetworkRestrictionViewBuilder;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * Confirm and execute a reset of the network settings to a clean "just out of the box"
- * state. Multiple confirmations are required: first, a general "are you sure
- * you want to do this?" prompt, followed by a keyguard pattern trace if the user
- * has defined one, followed by a final strongly-worded "THIS WILL RESET EVERYTHING"
- * prompt. If at any time the phone is allowed to go to sleep, is
- * locked, et cetera, then the confirmation sequence is abandoned.
- *
- * This is the confirmation screen.
- */
-public class ResetNetworkConfirm extends InstrumentedFragment {
- private static final String TAG = "ResetNetworkConfirm";
-
- @VisibleForTesting View mContentView;
- @VisibleForTesting ResetNetworkTask mResetNetworkTask;
- @VisibleForTesting Activity mActivity;
- @VisibleForTesting ResetNetworkRequest mResetNetworkRequest;
- private ProgressDialog mProgressDialog;
- private AlertDialog mAlertDialog;
- @VisibleForTesting ResetSubscriptionContract mResetSubscriptionContract;
- private OnSubscriptionsChangedListener mSubscriptionsChangedListener;
-
- /**
- * Async task used to do all reset task. If error happens during
- * erasing eSIM profiles or timeout, an error msg is shown.
- */
- private class ResetNetworkTask extends AsyncTask<Void, Void, Boolean> {
- private static final String TAG = "ResetNetworkTask";
-
- private final Context mContext;
-
- ResetNetworkTask(Context context) {
- mContext = context;
- }
-
- @Override
- protected Boolean doInBackground(Void... params) {
- final AtomicBoolean resetEsimSuccess = new AtomicBoolean(true);
-
- String resetEsimPackageName = mResetNetworkRequest.getResetEsimPackageName();
- ResetNetworkOperationBuilder builder = mResetNetworkRequest
- .toResetNetworkOperationBuilder(mContext, Looper.getMainLooper());
- if (resetEsimPackageName != null) {
- // Override reset eSIM option for the result of reset operation
- builder = builder.resetEsim(resetEsimPackageName,
- success -> { resetEsimSuccess.set(success); }
- );
- }
- builder.build().run();
-
- boolean isResetSucceed = resetEsimSuccess.get();
- Log.d(TAG, "network factoryReset complete. succeeded: "
- + String.valueOf(isResetSucceed));
- return isResetSucceed;
- }
-
- @Override
- protected void onPostExecute(Boolean succeeded) {
- if (mProgressDialog != null && mProgressDialog.isShowing()) {
- mProgressDialog.dismiss();
- }
-
- if (succeeded) {
- Toast.makeText(mContext, R.string.reset_network_complete_toast, Toast.LENGTH_SHORT)
- .show();
- } else {
- mAlertDialog = new AlertDialog.Builder(mContext)
- .setTitle(R.string.reset_esim_error_title)
- .setMessage(R.string.reset_esim_error_msg)
- .setPositiveButton(android.R.string.ok, null /* listener */)
- .show();
- }
- }
- }
-
- /**
- * The user has gone through the multiple confirmation, so now we go ahead
- * and reset the network settings to its factory-default state.
- */
- @VisibleForTesting
- Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- if (Utils.isMonkeyRunning()) {
- return;
- }
-
- // abandon execution if subscription no longer active
- Integer subId = mResetSubscriptionContract.getAnyMissingSubscriptionId();
- if (subId != null) {
- Log.w(TAG, "subId " + subId + " no longer active");
- getActivity().onBackPressed();
- return;
- }
-
- // Should dismiss the progress dialog firstly if it is showing
- // Or not the progress dialog maybe not dismissed in fast clicking.
- if (mProgressDialog != null && mProgressDialog.isShowing()) {
- mProgressDialog.dismiss();
- }
-
- mProgressDialog = getProgressDialog(mActivity);
- mProgressDialog.show();
-
- mResetNetworkTask = new ResetNetworkTask(mActivity);
- mResetNetworkTask.execute();
- }
- };
-
- private ProgressDialog getProgressDialog(Context context) {
- final ProgressDialog progressDialog = new ProgressDialog(context);
- progressDialog.setIndeterminate(true);
- progressDialog.setCancelable(false);
- progressDialog.setMessage(
- context.getString(R.string.main_clear_progress_text));
- return progressDialog;
- }
-
- /**
- * Configure the UI for the final confirmation interaction
- */
- private void establishFinalConfirmationState() {
- mContentView.findViewById(R.id.execute_reset_network)
- .setOnClickListener(mFinalClickListener);
- }
-
- @VisibleForTesting
- void setSubtitle() {
- if (mResetNetworkRequest.getResetEsimPackageName() != null) {
- ((TextView) mContentView.findViewById(R.id.reset_network_confirm))
- .setText(R.string.reset_network_final_desc_esim);
- }
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = (new ResetNetworkRestrictionViewBuilder(mActivity)).build();
- if (view != null) {
- mResetSubscriptionContract.close();
- Log.w(TAG, "Access deny.");
- return view;
- }
- mContentView = inflater.inflate(R.layout.reset_network_confirm, null);
- establishFinalConfirmationState();
- setSubtitle();
- return mContentView;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Bundle args = getArguments();
- if (args == null) {
- args = savedInstanceState;
- }
- mResetNetworkRequest = new ResetNetworkRequest(args);
-
- mActivity = getActivity();
-
- mResetSubscriptionContract = new ResetSubscriptionContract(getContext(),
- mResetNetworkRequest) {
- @Override
- public void onSubscriptionInactive(int subscriptionId) {
- // close UI if subscription no longer active
- Log.w(TAG, "subId " + subscriptionId + " no longer active.");
- getActivity().onBackPressed();
- }
- };
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- mResetNetworkRequest.writeIntoBundle(outState);
- }
-
- @Override
- public void onDestroy() {
- if (mResetNetworkTask != null) {
- mResetNetworkTask.cancel(true /* mayInterruptIfRunning */);
- mResetNetworkTask = null;
- }
- if (mResetSubscriptionContract != null) {
- mResetSubscriptionContract.close();
- mResetSubscriptionContract = null;
- }
- if (mProgressDialog != null) {
- mProgressDialog.dismiss();
- }
- if (mAlertDialog != null) {
- mAlertDialog.dismiss();
- }
- super.onDestroy();
- }
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.RESET_NETWORK_CONFIRM;
- }
-}
diff --git a/src/com/android/settings/ResetNetworkRequest.java b/src/com/android/settings/ResetNetworkRequest.java
index 7632ea0..8df67e7 100644
--- a/src/com/android/settings/ResetNetworkRequest.java
+++ b/src/com/android/settings/ResetNetworkRequest.java
@@ -271,12 +271,12 @@
builder.resetIms(mSubscriptionIdToResetIms);
}
// Reset phone process and RILD may impact above components, keep them at the end
- if ((mResetOptions & RESET_PHONE_PROCESS) != 0) {
- builder.restartPhoneProcess();
- }
if ((mResetOptions & RESET_RILD) != 0) {
builder.restartRild();
}
+ if ((mResetOptions & RESET_PHONE_PROCESS) != 0) {
+ builder.restartPhoneProcess();
+ }
return builder;
}
}
diff --git a/src/com/android/settings/ResetSubscriptionContract.java b/src/com/android/settings/ResetSubscriptionContract.java
deleted file mode 100644
index 528a16d..0000000
--- a/src/com/android/settings/ResetSubscriptionContract.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2022 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.telephony.SubscriptionManager;
-import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.IntStream;
-
-/**
- * A Class monitoring the availability of subscription IDs provided within reset request.
- *
- * This is to detect the situation when user changing SIM card during the presenting of
- * confirmation UI.
- */
-public class ResetSubscriptionContract implements AutoCloseable {
- private static final String TAG = "ResetSubscriptionContract";
-
- private final Context mContext;
- private ExecutorService mExecutorService;
- private final int [] mResetSubscriptionIds;
- @VisibleForTesting
- protected OnSubscriptionsChangedListener mSubscriptionsChangedListener;
- private AtomicBoolean mSubscriptionsUpdateNotify = new AtomicBoolean();
-
- /**
- * Constructor
- * @param context Context
- * @param resetRequest the request object for perform network reset operation.
- */
- public ResetSubscriptionContract(Context context, ResetNetworkRequest resetRequest) {
- mContext = context;
- // Only keeps specific subscription ID required to perform reset operation
- IntStream subIdStream = IntStream.of(
- resetRequest.getResetTelephonyAndNetworkPolicyManager(),
- resetRequest.getResetApnSubId(), resetRequest.getResetImsSubId());
- mResetSubscriptionIds = subIdStream.sorted().distinct()
- .filter(id -> SubscriptionManager.isUsableSubscriptionId(id))
- .toArray();
-
- if (mResetSubscriptionIds.length <= 0) {
- return;
- }
-
- // Monitoring callback through background thread
- mExecutorService = Executors.newSingleThreadExecutor();
- startMonitorSubscriptionChange();
- }
-
- /**
- * A method for detecting if there's any subscription under monitor no longer active.
- * @return subscription ID which is no longer active.
- */
- public Integer getAnyMissingSubscriptionId() {
- if (mResetSubscriptionIds.length <= 0) {
- return null;
- }
- SubscriptionManager mgr = getSubscriptionManager();
- if (mgr == null) {
- Log.w(TAG, "Fail to access subscription manager");
- return mResetSubscriptionIds[0];
- }
- for (int idx = 0; idx < mResetSubscriptionIds.length; idx++) {
- int subId = mResetSubscriptionIds[idx];
- if (mgr.getActiveSubscriptionInfo(subId) == null) {
- Log.w(TAG, "SubId " + subId + " no longer active.");
- return subId;
- }
- }
- return null;
- }
-
- /**
- * Async callback when detecting if there's any subscription under monitor no longer active.
- * @param subscriptionId subscription ID which is no longer active.
- */
- public void onSubscriptionInactive(int subscriptionId) {}
-
- @VisibleForTesting
- protected SubscriptionManager getSubscriptionManager() {
- return mContext.getSystemService(SubscriptionManager.class);
- }
-
- @VisibleForTesting
- protected OnSubscriptionsChangedListener getChangeListener() {
- return new OnSubscriptionsChangedListener() {
- @Override
- public void onSubscriptionsChanged() {
- /**
- * Reducing the processing time on main UI thread through a flag.
- * Once flag get into false, which means latest callback has been
- * processed.
- */
- mSubscriptionsUpdateNotify.set(true);
-
- // Back to main UI thread
- mContext.getMainExecutor().execute(() -> {
- // Remove notifications and perform checking.
- if (mSubscriptionsUpdateNotify.getAndSet(false)) {
- Integer subId = getAnyMissingSubscriptionId();
- if (subId != null) {
- onSubscriptionInactive(subId);
- }
- }
- });
- }
- };
- }
-
- private void startMonitorSubscriptionChange() {
- SubscriptionManager mgr = getSubscriptionManager();
- if (mgr == null) {
- return;
- }
- // update monitor listener
- mSubscriptionsChangedListener = getChangeListener();
-
- mgr.addOnSubscriptionsChangedListener(
- mExecutorService, mSubscriptionsChangedListener);
- }
-
- // Implementation of AutoCloseable
- public void close() {
- if (mExecutorService == null) {
- return;
- }
- // Stop monitoring subscription change
- SubscriptionManager mgr = getSubscriptionManager();
- if (mgr != null) {
- mgr.removeOnSubscriptionsChangedListener(mSubscriptionsChangedListener);
- }
- // Release Executor
- mExecutorService.shutdownNow();
- mExecutorService = null;
- }
-}
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 3367bf1..24d9525 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -18,6 +18,8 @@
import static android.provider.Settings.ACTION_PRIVACY_SETTINGS;
+import android.annotation.FlaggedApi;
+import android.app.Flags;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
@@ -301,6 +303,7 @@
public static class UserSettingsActivity extends SettingsActivity { /* empty */ }
public static class NotificationAccessSettingsActivity extends SettingsActivity { /* empty */ }
public static class NotificationAccessDetailsActivity extends SettingsActivity { /* empty */ }
+ public static class ManageAdaptiveNotificationsActivity extends SettingsActivity { /* empty */ }
public static class VrListenersSettingsActivity extends SettingsActivity { /* empty */ }
public static class PremiumSmsAccessActivity extends SettingsActivity { /* empty */ }
public static class PictureInPictureSettingsActivity extends SettingsActivity { /* empty */ }
@@ -317,11 +320,13 @@
public static class PrintSettingsActivity extends SettingsActivity { /* empty */ }
public static class PrintJobSettingsActivity extends SettingsActivity { /* empty */ }
public static class ZenModeSettingsActivity extends SettingsActivity { /* empty */ }
- public static class ZenModeBehaviorSettingsActivity extends SettingsActivity { /* empty */ }
- public static class ZenModeBlockedEffectsSettingsActivity extends SettingsActivity { /* empty */ }
public static class ZenModeAutomationSettingsActivity extends SettingsActivity { /* empty */ }
public static class ZenModeScheduleRuleSettingsActivity extends SettingsActivity { /* empty */ }
public static class ZenModeEventRuleSettingsActivity extends SettingsActivity { /* empty */ }
+ @FlaggedApi(Flags.FLAG_MODES_UI)
+ public static class ModeSettingsActivity extends SettingsActivity { /* empty */ }
+ @FlaggedApi(Flags.FLAG_MODES_UI)
+ public static class ModesSettingsActivity extends SettingsActivity { /* empty */ }
public static class SoundSettingsActivity extends SettingsActivity { /* empty */ }
public static class ConfigureNotificationSettingsActivity extends SettingsActivity { /* empty */ }
public static class ConversationListSettingsActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/SettingsApplication.java b/src/com/android/settings/SettingsApplication.java
index 7d5d2c7..5b052f2 100644
--- a/src/com/android/settings/SettingsApplication.java
+++ b/src/com/android/settings/SettingsApplication.java
@@ -31,6 +31,7 @@
import com.android.settings.biometrics.fingerprint2.BiometricsEnvironment;
import com.android.settings.core.instrumentation.ElapsedTimeUtils;
import com.android.settings.development.DeveloperOptionsActivityLifecycle;
+import com.android.settings.flags.Flags;
import com.android.settings.fuelgauge.BatterySettingsStorage;
import com.android.settings.homepage.SettingsHomepageActivity;
import com.android.settings.localepicker.LocaleNotificationDataManager;
@@ -49,7 +50,7 @@
public class SettingsApplication extends Application {
private WeakReference<SettingsHomepageActivity> mHomeActivity = new WeakReference<>(null);
- private BiometricsEnvironment mBiometricsEnvironment;
+ @Nullable private BiometricsEnvironment mBiometricsEnvironment;
@Override
protected void attachBaseContext(Context base) {
@@ -73,7 +74,9 @@
// Set Spa environment.
setSpaEnvironment();
- mBiometricsEnvironment = new BiometricsEnvironment(this);
+ if (Flags.fingerprintV2Enrollment()) {
+ mBiometricsEnvironment = new BiometricsEnvironment(this);
+ }
if (ActivityEmbeddingUtils.isSettingsSplitEnabled(this)
&& FeatureFlagUtils.isEnabled(this,
diff --git a/src/com/android/settings/SettingsPreferenceFragmentBase.java b/src/com/android/settings/SettingsPreferenceFragmentBase.java
new file mode 100644
index 0000000..dd2e287
--- /dev/null
+++ b/src/com/android/settings/SettingsPreferenceFragmentBase.java
@@ -0,0 +1,94 @@
+/*
+ * 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.app.Activity;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.settingslib.search.Indexable;
+
+/**
+ * Base class for fragment suitable for unit testing.
+ */
+public abstract class SettingsPreferenceFragmentBase extends SettingsPreferenceFragment
+ implements Indexable {
+ @Override
+ @SuppressWarnings({"RequiresNullabilityAnnotation"})
+ public void onCreate(final Bundle icicle) {
+ super.onCreate(icicle);
+ onCreateCallback(icicle);
+ }
+
+ @Override
+ @SuppressWarnings({"RequiresNullabilityAnnotation"})
+ public void onActivityCreated(final Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ onActivityCreatedCallback(savedInstanceState);
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull final Bundle outState) {
+ super.onSaveInstanceState(outState);
+ onSaveInstanceStateCallback(outState);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ onStartCallback();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ onStopCallback();
+ }
+
+ protected Activity getCurrentActivity() {
+ return getActivity();
+ }
+
+ /**
+ * Callback called from {@link #onCreate}
+ */
+ public abstract void onCreateCallback(@Nullable Bundle icicle);
+
+ /**
+ * Callback called from {@link #onActivityCreated}
+ */
+ public abstract void onActivityCreatedCallback(@Nullable Bundle savedInstanceState);
+
+ /**
+ * Callback called from {@link #onStart}
+ */
+ public abstract void onStartCallback();
+
+ /**
+ * Callback called from {@link #onStop}
+ */
+ public abstract void onStopCallback();
+
+ /**
+ * Callback called from {@link #onSaveInstanceState}
+ */
+ public void onSaveInstanceStateCallback(@NonNull final Bundle outState) {
+ // Do nothing.
+ }
+}
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 7ed6ba0..27a628c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -24,6 +24,9 @@
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
+import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_AUTHENTICATORS;
+import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT;
+
import android.app.ActionBar;
import android.app.Activity;
import android.app.ActivityManager;
@@ -54,6 +57,7 @@
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.VectorDrawable;
+import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.SensorProperties;
import android.hardware.face.Face;
import android.hardware.face.FaceManager;
@@ -122,6 +126,7 @@
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment.ProfileType;
import com.android.settings.password.ChooseLockSettingsHelper;
+import com.android.settings.password.ConfirmDeviceCredentialActivity;
import com.android.settingslib.widget.ActionBarShadowController;
import com.android.settingslib.widget.AdaptiveIcon;
@@ -1478,6 +1483,55 @@
disableComponent(pm, new ComponentName(context, Settings.CreateShortcutActivity.class));
}
+ /**
+ * Request biometric authentication if all requirements for mandatory biometrics is satisfied.
+ * @param context of the corresponding activity/fragment
+ * @param biometricsSuccessfullyAuthenticated if the user has already authenticated using
+ * biometrics
+ * @param biometricsAuthenticationRequested if the activity/fragment has already requested for
+ * biometric prompt
+ * @return true if all requirements for mandatory biometrics is satisfied
+ */
+ public static boolean requestBiometricAuthenticationForMandatoryBiometrics(
+ @NonNull Context context,
+ boolean biometricsSuccessfullyAuthenticated,
+ boolean biometricsAuthenticationRequested) {
+ final BiometricManager biometricManager = context.getSystemService(BiometricManager.class);
+ if (biometricManager == null) {
+ Log.e(TAG, "Biometric Manager is null.");
+ return false;
+ }
+ final int status = biometricManager.canAuthenticate(
+ BiometricManager.Authenticators.MANDATORY_BIOMETRICS);
+ return android.hardware.biometrics.Flags.mandatoryBiometrics()
+ && status == BiometricManager.BIOMETRIC_SUCCESS
+ && !biometricsSuccessfullyAuthenticated
+ && !biometricsAuthenticationRequested;
+ }
+
+ /**
+ * Launch biometric prompt for mandatory biometrics. Call
+ * {@link #requestBiometricAuthenticationForMandatoryBiometrics(Context, boolean, boolean)}
+ * to check if all requirements for mandatory biometrics is satisfied
+ * before launching biometric prompt.
+ *
+ * @param fragment corresponding fragment of the surface
+ * @param requestCode for starting the new activity
+ */
+ public static void launchBiometricPromptForMandatoryBiometrics(@NonNull Fragment fragment,
+ int requestCode) {
+ final Intent intent = new Intent();
+ intent.putExtra(BIOMETRIC_PROMPT_AUTHENTICATORS,
+ BiometricManager.Authenticators.MANDATORY_BIOMETRICS);
+ intent.putExtra(BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT,
+ fragment.getString(R.string.cancel));
+ intent.putExtra(KeyguardManager.EXTRA_DESCRIPTION,
+ fragment.getString(R.string.mandatory_biometrics_prompt_description));
+ intent.setClassName(SETTINGS_PACKAGE_NAME,
+ ConfirmDeviceCredentialActivity.class.getName());
+ fragment.startActivityForResult(intent, requestCode);
+ }
+
private static void disableComponent(PackageManager pm, ComponentName componentName) {
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
diff --git a/src/com/android/settings/accessibility/AccessibilityQuickSettingsPrimarySwitchPreferenceController.java b/src/com/android/settings/accessibility/AccessibilityQuickSettingsPrimarySwitchPreferenceController.java
index e82cd96..8a3f22d 100644
--- a/src/com/android/settings/accessibility/AccessibilityQuickSettingsPrimarySwitchPreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilityQuickSettingsPrimarySwitchPreferenceController.java
@@ -21,6 +21,7 @@
import android.os.Bundle;
import android.os.Handler;
+import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
@@ -42,6 +43,7 @@
private boolean mNeedsQSTooltipReshow = false;
/** Returns the accessibility tile component name. */
+ @Nullable
abstract ComponentName getTileComponentName();
/** Returns the accessibility tile tooltip content. */
diff --git a/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
index ad1ae96..19db266 100644
--- a/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
@@ -27,11 +27,13 @@
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;
@@ -41,10 +43,14 @@
*/
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(
@@ -78,4 +84,15 @@
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/MagnificationOneFingerPanningPreferenceController.java b/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java
index 3e3b8d9..a6d87f2 100644
--- a/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java
@@ -28,6 +28,7 @@
import android.provider.Settings;
import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -103,16 +104,10 @@
@Override
public CharSequence getSummary() {
- if (!mSwitchPreference.isEnabled()) {
- return mContext.getString(
- R.string.accessibility_magnification_one_finger_panning_summary_unavailable);
- }
-
- return (isChecked())
- ? mContext.getString(
- R.string.accessibility_magnification_one_finger_panning_summary_on)
- : mContext.getString(
- R.string.accessibility_magnification_one_finger_panning_summary_off);
+ @StringRes int resId = mSwitchPreference.isEnabled()
+ ? R.string.accessibility_magnification_one_finger_panning_summary
+ : R.string.accessibility_magnification_one_finger_panning_summary_unavailable;
+ return mContext.getString(resId);
}
@Override
diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
index 3ca089c..e7f59f4 100644
--- a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
+++ b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
@@ -29,6 +29,7 @@
import android.provider.Settings;
import android.text.TextUtils;
+import androidx.annotation.Nullable;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -125,9 +126,14 @@
mContext.getContentResolver().unregisterContentObserver(mSettingsContentObserver);
}
+ @Nullable
@Override
protected ComponentName getTileComponentName() {
- return REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME;
+ // TODO: When clean up the feature flag, change the parent class from
+ // AccessibilityQuickSettingsPrimarySwitchPreferenceController to
+ // TogglePreferenceController
+ return android.view.accessibility.Flags.a11yQsShortcut()
+ ? null : REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME;
}
@Override
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index a57b459..e4d7925 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -101,6 +101,7 @@
protected SettingsMainSwitchPreference mToggleServiceSwitchPreference;
protected ShortcutPreference mShortcutPreference;
protected Preference mSettingsPreference;
+ @Nullable protected AccessibilityFooterPreference mHtmlFooterPreference;
protected AccessibilityFooterPreferenceController mFooterPreferenceController;
protected String mPreferenceKey;
protected Dialog mDialog;
@@ -589,27 +590,40 @@
}
private void initHtmlTextPreference() {
- if (TextUtils.isEmpty(mHtmlDescription)) {
+ if (TextUtils.isEmpty(getCurrentHtmlDescription())) {
return;
}
final PreferenceScreen screen = getPreferenceScreen();
- final CharSequence htmlDescription = Html.fromHtml(mHtmlDescription.toString(),
- Html.FROM_HTML_MODE_COMPACT, mImageGetter, /* tagHandler= */ null);
- final AccessibilityFooterPreference htmlFooterPreference =
+ mHtmlFooterPreference =
new AccessibilityFooterPreference(screen.getContext());
- htmlFooterPreference.setKey(KEY_HTML_DESCRIPTION_PREFERENCE);
- htmlFooterPreference.setSummary(htmlDescription);
- screen.addPreference(htmlFooterPreference);
+ mHtmlFooterPreference.setKey(KEY_HTML_DESCRIPTION_PREFERENCE);
+ updateHtmlTextPreference();
+ screen.addPreference(mHtmlFooterPreference);
// TODO(b/171272809): Migrate to DashboardFragment.
final String title = getString(R.string.accessibility_introduction_title, mPackageName);
mFooterPreferenceController = new AccessibilityFooterPreferenceController(
- screen.getContext(), htmlFooterPreference.getKey());
+ screen.getContext(), mHtmlFooterPreference.getKey());
mFooterPreferenceController.setIntroductionTitle(title);
mFooterPreferenceController.displayPreference(screen);
}
+ protected void updateHtmlTextPreference() {
+ if (mHtmlFooterPreference == null) {
+ return;
+ }
+
+ String description = getCurrentHtmlDescription().toString();
+ final CharSequence htmlDescription = Html.fromHtml(description,
+ Html.FROM_HTML_MODE_COMPACT, mImageGetter, /* tagHandler= */ null);
+ mHtmlFooterPreference.setSummary(htmlDescription);
+ }
+
+ CharSequence getCurrentHtmlDescription() {
+ return mHtmlDescription;
+ }
+
private void initFooterPreference() {
if (!TextUtils.isEmpty(mDescription)) {
createFooterPreference(getPreferenceScreen(), mDescription,
@@ -617,7 +631,6 @@
}
}
-
/**
* Creates {@link AccessibilityFooterPreference} and append into {@link PreferenceScreen}
*
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index fc75cde..b1ad7f7 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -45,6 +45,7 @@
import android.widget.CheckBox;
import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.SwitchPreferenceCompat;
@@ -91,6 +92,9 @@
@Nullable private CheckBox mTwoFingerTripleTapTypeCheckBox;
private DialogCreatable mDialogDelegate;
+ @Nullable
+ MagnificationOneFingerPanningPreferenceController mOneFingerPanningPreferenceController;
+
private boolean mInSetupWizard;
@Override
@@ -236,7 +240,8 @@
context.getString(R.string.accessibility_screen_magnification_intro_text));
}
- if (!arguments.containsKey(AccessibilitySettings.EXTRA_HTML_DESCRIPTION)) {
+ if (!arguments.containsKey(AccessibilitySettings.EXTRA_HTML_DESCRIPTION)
+ && !Flags.enableMagnificationOneFingerPanningGesture()) {
String summary = MessageFormat.format(
context.getString(R.string.accessibility_screen_magnification_summary),
new Object[]{1, 2, 3, 4, 5});
@@ -308,12 +313,12 @@
MagnificationOneFingerPanningPreferenceController.PREF_KEY);
generalCategory.addPreference(oneFingerPanningPreference);
- var oneFingerPanningPreferenceController =
+ mOneFingerPanningPreferenceController =
new MagnificationOneFingerPanningPreferenceController(getContext());
- oneFingerPanningPreferenceController.setInSetupWizard(mInSetupWizard);
- getSettingsLifecycle().addObserver(oneFingerPanningPreferenceController);
- oneFingerPanningPreferenceController.displayPreference(getPreferenceScreen());
- addPreferenceController(oneFingerPanningPreferenceController);
+ mOneFingerPanningPreferenceController.setInSetupWizard(mInSetupWizard);
+ getSettingsLifecycle().addObserver(mOneFingerPanningPreferenceController);
+ mOneFingerPanningPreferenceController.displayPreference(getPreferenceScreen());
+ addPreferenceController(mOneFingerPanningPreferenceController);
}
private void addJoystickSetting(PreferenceCategory generalCategory) {
@@ -471,6 +476,12 @@
);
contentObserver.registerKeysToObserverCallback(keysToObserve,
key -> updatePreferencesState());
+
+ if (Flags.enableMagnificationOneFingerPanningGesture()) {
+ contentObserver.registerKeysToObserverCallback(
+ List.of(Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED),
+ key -> updateHtmlTextPreference());
+ }
}
private void updatePreferencesState() {
@@ -481,6 +492,25 @@
}
@Override
+ CharSequence getCurrentHtmlDescription() {
+ CharSequence origin = super.getCurrentHtmlDescription();
+ if (!TextUtils.isEmpty(origin)) {
+ // If in ToggleFeaturePreferenceFragment we already have a fixed html description, we
+ // should use the fixed one, otherwise we'll dynamically decide the description.
+ return origin;
+ }
+
+ Context context = getContext();
+ if (mOneFingerPanningPreferenceController != null && context != null) {
+ @StringRes int resId = mOneFingerPanningPreferenceController.isChecked()
+ ? R.string.accessibility_screen_magnification_summary_one_finger_panning_on
+ : R.string.accessibility_screen_magnification_summary_one_finger_panning_off;
+ return MessageFormat.format(context.getString(resId), new Object[]{1, 2, 3, 4, 5});
+ }
+ return "";
+ }
+
+ @Override
protected List<String> getShortcutFeatureSettingsKeys() {
final List<String> shortcutKeys = super.getShortcutFeatureSettingsKeys();
shortcutKeys.add(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java
index 335d0b9..37ada23 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollBase.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java
@@ -68,6 +68,8 @@
public static final String EXTRA_FINISHED_ENROLL_FACE = "finished_enrolling_face";
public static final String EXTRA_FINISHED_ENROLL_FINGERPRINT = "finished_enrolling_fingerprint";
public static final String EXTRA_LAUNCHED_POSTURE_GUIDANCE = "launched_posture_guidance";
+ public static final String EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY =
+ "biometrics_authenticated_successfully";
/**
* Used by the choose fingerprint wizard to indicate the wizard is
@@ -115,6 +117,7 @@
public static final int LEARN_MORE_REQUEST = 3;
public static final int CONFIRM_REQUEST = 4;
public static final int ENROLL_REQUEST = 5;
+ public static final int BIOMETRIC_AUTH_REQUEST = 6;
/**
* Request code when starting another biometric enrollment from within a biometric flow. For
diff --git a/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java b/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java
index b174788..caa7327 100644
--- a/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java
+++ b/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java
@@ -65,6 +65,7 @@
static final int CONFIRM_REQUEST = 2001;
private static final int CHOOSE_LOCK_REQUEST = 2002;
protected static final int ACTIVE_UNLOCK_REQUEST = 2003;
+ private static final int BIOMETRIC_AUTH_REQUEST = 2004;
private static final String SAVE_STATE_CONFIRM_CREDETIAL = "confirm_credential";
private static final String DO_NOT_FINISH_ACTIVITY = "do_not_finish_activity";
@@ -72,10 +73,15 @@
static final String RETRY_PREFERENCE_KEY = "retry_preference_key";
@VisibleForTesting
static final String RETRY_PREFERENCE_BUNDLE = "retry_preference_bundle";
+ private static final String BIOMETRICS_AUTH_REQUESTED = "biometrics_auth_requested";
+ private static final String BIOMETRICS_AUTHENTICATED_SUCCESSFULLY =
+ "biometrics_authenticated_successfully";
protected int mUserId;
protected long mGkPwHandle;
private boolean mConfirmCredential;
+ private boolean mBiometricsAuthenticationRequested;
+ private boolean mBiometricsSuccessfullyAuthenticated;
@Nullable private FaceManager mFaceManager;
@Nullable private FingerprintManager mFingerprintManager;
// Do not finish() if choosing/confirming credential, showing fp/face settings, or launching
@@ -113,6 +119,9 @@
mGkPwHandle = BiometricUtils.getGatekeeperPasswordHandle(getIntent());
}
+ mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra(
+ BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false);
+
if (savedInstanceState != null) {
mConfirmCredential = savedInstanceState.getBoolean(SAVE_STATE_CONFIRM_CREDETIAL);
mDoNotFinishActivity = savedInstanceState.getBoolean(DO_NOT_FINISH_ACTIVITY);
@@ -123,11 +132,20 @@
mGkPwHandle = savedInstanceState.getLong(
ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE);
}
+ mBiometricsAuthenticationRequested = savedInstanceState.getBoolean(
+ BIOMETRICS_AUTH_REQUESTED);
+ mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean(
+ BIOMETRICS_AUTHENTICATED_SUCCESSFULLY);
}
if (mGkPwHandle == 0L && !mConfirmCredential) {
mConfirmCredential = true;
launchChooseOrConfirmLock();
+ } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(
+ getActivity(), mBiometricsSuccessfullyAuthenticated,
+ mBiometricsAuthenticationRequested)) {
+ mBiometricsAuthenticationRequested = true;
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST);
}
updateUnlockPhonePreferenceSummary();
@@ -141,6 +159,12 @@
@Override
public void onResume() {
super.onResume();
+ if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(),
+ mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested)
+ && mGkPwHandle != 0L) {
+ mBiometricsAuthenticationRequested = true;
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST);
+ }
if (!mConfirmCredential) {
mDoNotFinishActivity = false;
}
@@ -177,6 +201,9 @@
extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
extras.putInt(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, sensorId);
extras.putLong(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge);
+ extras.putBoolean(
+ BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY,
+ mBiometricsSuccessfullyAuthenticated);
onFaceOrFingerprintPreferenceTreeClick(preference);
} catch (IllegalStateException e) {
if (retry) {
@@ -206,6 +233,9 @@
final Bundle extras = preference.getExtras();
extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
extras.putLong(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge);
+ extras.putBoolean(
+ BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY,
+ mBiometricsSuccessfullyAuthenticated);
onFaceOrFingerprintPreferenceTreeClick(preference);
} catch (IllegalStateException e) {
if (retry) {
@@ -288,6 +318,10 @@
outState.putString(RETRY_PREFERENCE_KEY, mRetryPreferenceKey);
outState.putBundle(RETRY_PREFERENCE_BUNDLE, mRetryPreferenceExtra);
}
+ outState.putBoolean(BIOMETRICS_AUTH_REQUESTED,
+ mBiometricsAuthenticationRequested);
+ outState.putBoolean(BIOMETRICS_AUTHENTICATED_SUCCESSFULLY,
+ mBiometricsSuccessfullyAuthenticated);
}
@Override
@@ -315,6 +349,13 @@
}
mRetryPreferenceKey = null;
mRetryPreferenceExtra = null;
+ } else if (requestCode == BIOMETRIC_AUTH_REQUEST) {
+ mBiometricsAuthenticationRequested = false;
+ if (resultCode == RESULT_OK) {
+ mBiometricsSuccessfullyAuthenticated = true;
+ } else {
+ finish();
+ }
}
}
diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java
index 8884ce3..2a0dd83 100644
--- a/src/com/android/settings/biometrics/face/FaceSettings.java
+++ b/src/com/android/settings/biometrics/face/FaceSettings.java
@@ -20,8 +20,10 @@
import static android.app.admin.DevicePolicyResources.Strings.Settings.FACE_SETTINGS_FOR_WORK_TITLE;
import static com.android.settings.Utils.isPrivateProfile;
+import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST;
import static com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST;
import static com.android.settings.biometrics.BiometricEnrollBase.ENROLL_REQUEST;
+import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED;
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT;
@@ -66,6 +68,8 @@
private static final String TAG = "FaceSettings";
private static final String KEY_TOKEN = "hw_auth_token";
private static final String KEY_RE_ENROLL_FACE = "re_enroll_face_unlock";
+ private static final String KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED =
+ "biometrics_successfully_authenticated";
private static final String PREF_KEY_DELETE_FACE_DATA =
"security_settings_face_delete_faces_container";
@@ -93,6 +97,8 @@
private FaceFeatureProvider mFaceFeatureProvider;
private boolean mConfirmingPassword;
+ private boolean mBiometricsAuthenticationRequested;
+ private boolean mBiometricsSuccessfullyAuthenticated;
private final FaceSettingsRemoveButtonPreferenceController.Listener mRemovalListener = () -> {
@@ -144,6 +150,8 @@
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putByteArray(KEY_TOKEN, mToken);
+ outState.putBoolean(KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED,
+ mBiometricsSuccessfullyAuthenticated);
}
@Override
@@ -163,6 +171,8 @@
mToken = getIntent().getByteArrayExtra(KEY_TOKEN);
mSensorId = getIntent().getIntExtra(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, -1);
mChallenge = getIntent().getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, 0L);
+ mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra(
+ EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false);
mUserId = getActivity().getIntent().getIntExtra(
Intent.EXTRA_USER_ID, UserHandle.myUserId());
@@ -231,6 +241,8 @@
if (savedInstanceState != null) {
mToken = savedInstanceState.getByteArray(KEY_TOKEN);
+ mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean(
+ KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED);
}
}
@@ -276,6 +288,10 @@
Log.e(TAG, "Password not set");
finish();
}
+ } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(),
+ mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested)) {
+ mBiometricsAuthenticationRequested = true;
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST);
} else {
mAttentionController.setToken(mToken);
mEnrollController.setToken(mToken);
@@ -318,6 +334,13 @@
setResult(resultCode, data);
finish();
}
+ } else if (requestCode == BIOMETRIC_AUTH_REQUEST) {
+ mBiometricsAuthenticationRequested = false;
+ if (resultCode == RESULT_OK) {
+ mBiometricsSuccessfullyAuthenticated = true;
+ } else {
+ finish();
+ }
}
}
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index db87c0f..d35cda4 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -23,6 +23,7 @@
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;
@@ -218,6 +219,10 @@
"security_settings_fingerprint_unlock_category";
private static final String KEY_FINGERPRINT_UNLOCK_FOOTER =
"security_settings_fingerprint_footer";
+ private static final String KEY_BIOMETRICS_AUTHENTICATION_REQUESTED =
+ "biometrics_authentication_requested";
+ private static final String KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED =
+ "biometrics_successfully_authenticated";
private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000;
private static final int MSG_FINGER_AUTH_SUCCESS = 1001;
@@ -251,6 +256,8 @@
private boolean mInFingerprintLockout;
private byte[] mToken;
private boolean mLaunchedConfirm;
+ private boolean mBiometricsAuthenticationRequested;
+ private boolean mBiometricsSuccessfullyAuthenticated;
private boolean mHasFirstEnrolled = true;
private Drawable mHighlightDrawable;
private int mUserId;
@@ -356,6 +363,11 @@
*/
protected void handleError(int errMsgId, CharSequence msg) {
switch (errMsgId) {
+ case FingerprintManager.FINGERPRINT_ERROR_CANCELED:
+ case FingerprintManager.FINGERPRINT_ERROR_USER_CANCELED:
+ // Only happens if we get preempted by another activity, or canceled by the
+ // user (e.g. swipe up to home). Ignored.
+ return;
case FingerprintManager.FINGERPRINT_ERROR_LOCKOUT:
mInFingerprintLockout = true;
// We've been locked out. Reset after 30s.
@@ -418,6 +430,8 @@
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
mChallenge = activity.getIntent()
.getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, -1L);
+ mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra(
+ BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false);
mAuthenticateSidecar = (FingerprintAuthenticateSidecar)
getFragmentManager().findFragmentByTag(TAG_AUTHENTICATE_SIDECAR);
@@ -459,6 +473,10 @@
mIsEnrolling = savedInstanceState.getBoolean(KEY_IS_ENROLLING, mIsEnrolling);
mHasFirstEnrolled = savedInstanceState.getBoolean(KEY_HAS_FIRST_ENROLLED,
mHasFirstEnrolled);
+ mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean(
+ KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED);
+ mBiometricsAuthenticationRequested = savedInstanceState.getBoolean(
+ KEY_BIOMETRICS_AUTHENTICATION_REQUESTED);
}
// (mLaunchedConfirm or mIsEnrolling) means that we are waiting an activity result.
@@ -467,6 +485,10 @@
if (mToken == null) {
mLaunchedConfirm = true;
launchChooseOrConfirmLock();
+ } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(),
+ mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested)) {
+ mBiometricsAuthenticationRequested = true;
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST);
} else if (!mHasFirstEnrolled) {
mIsEnrolling = true;
addFirstFingerprint(null);
@@ -746,6 +768,12 @@
mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
.getUdfpsEnrollCalibrator(getActivity().getApplicationContext(), null, null);
+
+ if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(),
+ mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested)) {
+ mBiometricsAuthenticationRequested = true;
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST);
+ }
}
private void updatePreferences() {
@@ -793,6 +821,10 @@
outState.putSerializable("mFingerprintsRenaming", mFingerprintsRenaming);
outState.putBoolean(KEY_IS_ENROLLING, mIsEnrolling);
outState.putBoolean(KEY_HAS_FIRST_ENROLLED, mHasFirstEnrolled);
+ outState.putBoolean(KEY_BIOMETRICS_AUTHENTICATION_REQUESTED,
+ mBiometricsAuthenticationRequested);
+ outState.putBoolean(KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED,
+ mBiometricsSuccessfullyAuthenticated);
}
@Override
@@ -1013,6 +1045,13 @@
mIsEnrolling = false;
mHasFirstEnrolled = true;
updateAddPreference();
+ } else if (requestCode == BIOMETRIC_AUTH_REQUEST) {
+ mBiometricsAuthenticationRequested = false;
+ if (resultCode == RESULT_OK) {
+ mBiometricsSuccessfullyAuthenticated = true;
+ } else {
+ finish();
+ }
}
}
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java
index 564e138..f7ccc61 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsController.java
@@ -159,19 +159,22 @@
mPreference.setEnabled(mCachedDevice.isConnectedHapClientDevice());
loadAllPresetInfo();
+ mPreference.setSummary(null);
if (mPreference.getEntries().length == 0) {
- if (DEBUG) {
- Log.w(TAG, "Disable the preference since preset info size = 0");
+ if (mPreference.isEnabled()) {
+ if (DEBUG) {
+ Log.w(TAG, "Disable the preference since preset info size = 0");
+ }
+ mPreference.setEnabled(false);
+ mPreference.setSummary(mContext.getString(
+ R.string.bluetooth_hearing_aids_presets_empty_list_message));
}
- mPreference.setEnabled(false);
} else {
int activePresetIndex = mHapClientProfile.getActivePresetIndex(
mCachedDevice.getDevice());
if (activePresetIndex != BluetoothHapClient.PRESET_INDEX_UNAVAILABLE) {
mPreference.setValue(Integer.toString(activePresetIndex));
mPreference.setSummary(mPreference.getEntry());
- } else {
- mPreference.setSummary(null);
}
}
}
@@ -273,7 +276,8 @@
return;
}
List<BluetoothHapPresetInfo> infoList = mHapClientProfile.getAllPresetInfo(
- mCachedDevice.getDevice());
+ mCachedDevice.getDevice()).stream().filter(
+ BluetoothHapPresetInfo::isAvailable).toList();
CharSequence[] presetNames = new CharSequence[infoList.size()];
CharSequence[] presetIndexes = new CharSequence[infoList.size()];
for (int i = 0; i < infoList.size(); i++) {
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioController.java b/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioController.java
index 30e86fe..4ff7136 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioController.java
@@ -19,13 +19,16 @@
import static android.media.Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.media.AudioDeviceAttributes;
import android.media.AudioDeviceInfo;
+import android.media.AudioManager;
import android.media.Spatializer;
import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
@@ -37,9 +40,14 @@
import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.flags.Flags;
import com.android.settingslib.utils.ThreadUtils;
+import com.google.common.collect.ImmutableSet;
+
+import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
/**
@@ -53,22 +61,27 @@
private static final String KEY_SPATIAL_AUDIO = "spatial_audio";
private static final String KEY_HEAD_TRACKING = "head_tracking";
+ private final AudioManager mAudioManager;
private final Spatializer mSpatializer;
@VisibleForTesting
PreferenceCategory mProfilesContainer;
- @VisibleForTesting
- AudioDeviceAttributes mAudioDevice = null;
+ @VisibleForTesting @Nullable AudioDeviceAttributes mAudioDevice = null;
AtomicBoolean mHasHeadTracker = new AtomicBoolean(false);
AtomicBoolean mInitialRefresh = new AtomicBoolean(true);
+ public static final Set<Integer> SA_PROFILES =
+ ImmutableSet.of(
+ BluetoothProfile.A2DP, BluetoothProfile.LE_AUDIO, BluetoothProfile.HEARING_AID);
+
public BluetoothDetailsSpatialAudioController(
Context context,
PreferenceFragmentCompat fragment,
CachedBluetoothDevice device,
Lifecycle lifecycle) {
super(context, fragment, device, lifecycle);
+ mAudioManager = context.getSystemService(AudioManager.class);
mSpatializer = FeatureFactory.getFeatureFactory().getBluetoothFeatureProvider()
.getSpatializer(context);
}
@@ -142,8 +155,12 @@
@Override
protected void refresh() {
- if (mAudioDevice == null) {
- getAvailableDevice();
+ if (Flags.enableDeterminingSpatialAudioAttributesByProfile()) {
+ getAvailableDeviceByProfileState();
+ } else {
+ if (mAudioDevice == null) {
+ getAvailableDevice();
+ }
}
ThreadUtils.postOnBackgroundThread(
() -> {
@@ -274,6 +291,77 @@
+ ", type : " + (mAudioDevice == null ? "no type" : mAudioDevice.getType()));
}
+ private void getAvailableDeviceByProfileState() {
+ Log.i(
+ TAG,
+ "getAvailableDevice() mCachedDevice: "
+ + mCachedDevice
+ + " profiles: "
+ + mCachedDevice.getProfiles());
+
+ AudioDeviceAttributes saDevice = null;
+ for (LocalBluetoothProfile profile : mCachedDevice.getProfiles()) {
+ // pick first enabled profile that is compatible with spatial audio
+ if (SA_PROFILES.contains(profile.getProfileId())
+ && profile.isEnabled(mCachedDevice.getDevice())) {
+ switch (profile.getProfileId()) {
+ case BluetoothProfile.A2DP:
+ saDevice =
+ new AudioDeviceAttributes(
+ AudioDeviceAttributes.ROLE_OUTPUT,
+ AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
+ mCachedDevice.getAddress());
+ break;
+ case BluetoothProfile.LE_AUDIO:
+ if (mAudioManager.getBluetoothAudioDeviceCategory(
+ mCachedDevice.getAddress())
+ == AudioManager.AUDIO_DEVICE_CATEGORY_SPEAKER) {
+ saDevice =
+ new AudioDeviceAttributes(
+ AudioDeviceAttributes.ROLE_OUTPUT,
+ AudioDeviceInfo.TYPE_BLE_SPEAKER,
+ mCachedDevice.getAddress());
+ } else {
+ saDevice =
+ new AudioDeviceAttributes(
+ AudioDeviceAttributes.ROLE_OUTPUT,
+ AudioDeviceInfo.TYPE_BLE_HEADSET,
+ mCachedDevice.getAddress());
+ }
+
+ break;
+ case BluetoothProfile.HEARING_AID:
+ saDevice =
+ new AudioDeviceAttributes(
+ AudioDeviceAttributes.ROLE_OUTPUT,
+ AudioDeviceInfo.TYPE_HEARING_AID,
+ mCachedDevice.getAddress());
+ break;
+ default:
+ Log.i(
+ TAG,
+ "unrecognized profile for spatial audio: "
+ + profile.getProfileId());
+ break;
+ }
+ break;
+ }
+ }
+ mAudioDevice = null;
+ if (saDevice != null && mSpatializer.isAvailableForDevice(saDevice)) {
+ mAudioDevice = saDevice;
+ }
+
+ Log.d(
+ TAG,
+ "getAvailableDevice() device : "
+ + mCachedDevice.getDevice().getAnonymizedAddress()
+ + ", is available : "
+ + (mAudioDevice != null)
+ + ", type : "
+ + (mAudioDevice == null ? "no type" : mAudioDevice.getType()));
+ }
+
@VisibleForTesting
void setAvailableDevice(AudioDeviceAttributes audioDevice) {
mAudioDevice = audioDevice;
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index 44915fe..5f9957b 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -142,13 +142,23 @@
}
@VisibleForTesting
+ @Nullable
CachedBluetoothDevice getCachedDevice(String deviceAddress) {
if (sTestDataFactory != null) {
return sTestDataFactory.getDevice(deviceAddress);
}
BluetoothDevice remoteDevice =
mManager.getBluetoothAdapter().getRemoteDevice(deviceAddress);
- return mManager.getCachedDeviceManager().findDevice(remoteDevice);
+ if (remoteDevice == null) {
+ return null;
+ }
+ CachedBluetoothDevice cachedDevice =
+ mManager.getCachedDeviceManager().findDevice(remoteDevice);
+ if (cachedDevice != null) {
+ return cachedDevice;
+ }
+ Log.i(TAG, "Add device to cached device manager: " + remoteDevice.getAnonymizedAddress());
+ return mManager.getCachedDeviceManager().addDevice(remoteDevice);
}
@VisibleForTesting
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java
index 56a3005..2548b95 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java
@@ -15,6 +15,8 @@
*/
package com.android.settings.connecteddevice;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isExternalDisplaySettingsPageEnabled;
+
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.input.InputManager;
@@ -22,6 +24,8 @@
import android.util.Log;
import android.view.InputDevice;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
@@ -31,12 +35,15 @@
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater;
import com.android.settings.bluetooth.Utils;
+import com.android.settings.connecteddevice.display.ExternalDisplayUpdater;
import com.android.settings.connecteddevice.dock.DockUpdater;
import com.android.settings.connecteddevice.stylus.StylusDeviceUpdater;
import com.android.settings.connecteddevice.usb.ConnectedUsbDeviceUpdater;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.flags.FeatureFlags;
+import com.android.settings.flags.FeatureFlagsImpl;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.DockUpdaterFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
@@ -64,6 +71,8 @@
@VisibleForTesting
PreferenceGroup mPreferenceGroup;
+ @Nullable
+ private ExternalDisplayUpdater mExternalDisplayUpdater;
private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater;
private DockUpdater mConnectedDockUpdater;
@@ -71,6 +80,8 @@
private final PackageManager mPackageManager;
private final InputManager mInputManager;
private final LocalBluetoothManager mLocalBluetoothManager;
+ @NonNull
+ private final FeatureFlags mFeatureFlags = new FeatureFlagsImpl();
public ConnectedDeviceGroupController(Context context) {
super(context, KEY);
@@ -81,6 +92,10 @@
@Override
public void onStart() {
+ if (mExternalDisplayUpdater != null) {
+ mExternalDisplayUpdater.registerCallback();
+ }
+
if (mBluetoothDeviceUpdater != null) {
mBluetoothDeviceUpdater.registerCallback();
mBluetoothDeviceUpdater.refreshPreference();
@@ -101,6 +116,10 @@
@Override
public void onStop() {
+ if (mExternalDisplayUpdater != null) {
+ mExternalDisplayUpdater.unregisterCallback();
+ }
+
if (mBluetoothDeviceUpdater != null) {
mBluetoothDeviceUpdater.unregisterCallback();
}
@@ -127,6 +146,10 @@
if (isAvailable()) {
final Context context = screen.getContext();
+ if (mExternalDisplayUpdater != null) {
+ mExternalDisplayUpdater.initPreference(context);
+ }
+
if (mBluetoothDeviceUpdater != null) {
mBluetoothDeviceUpdater.setPrefContext(context);
mBluetoothDeviceUpdater.forceUpdate();
@@ -150,7 +173,8 @@
@Override
public int getAvailabilityStatus() {
- return (hasBluetoothFeature()
+ return (hasExternalDisplayFeature()
+ || hasBluetoothFeature()
|| hasUsbFeature()
|| hasUsiStylusFeature()
|| mConnectedDockUpdater != null)
@@ -180,11 +204,13 @@
}
@VisibleForTesting
- void init(BluetoothDeviceUpdater bluetoothDeviceUpdater,
+ void init(@Nullable ExternalDisplayUpdater externalDisplayUpdater,
+ BluetoothDeviceUpdater bluetoothDeviceUpdater,
ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater,
DockUpdater connectedDockUpdater,
StylusDeviceUpdater connectedStylusDeviceUpdater) {
+ mExternalDisplayUpdater = externalDisplayUpdater;
mBluetoothDeviceUpdater = bluetoothDeviceUpdater;
mConnectedUsbDeviceUpdater = connectedUsbDeviceUpdater;
mConnectedDockUpdater = connectedDockUpdater;
@@ -197,7 +223,10 @@
FeatureFactory.getFeatureFactory().getDockUpdaterFeatureProvider();
final DockUpdater connectedDockUpdater =
dockUpdaterFeatureProvider.getConnectedDockUpdater(context, this);
- init(hasBluetoothFeature()
+ init(hasExternalDisplayFeature()
+ ? new ExternalDisplayUpdater(this, fragment.getMetricsCategory())
+ : null,
+ hasBluetoothFeature()
? new ConnectedBluetoothDeviceUpdater(context, this,
fragment.getMetricsCategory())
: null,
@@ -210,6 +239,19 @@
: null);
}
+ /**
+ * @return trunk stable feature flags.
+ */
+ @VisibleForTesting
+ @NonNull
+ public FeatureFlags getFeatureFlags() {
+ return mFeatureFlags;
+ }
+
+ private boolean hasExternalDisplayFeature() {
+ return isExternalDisplaySettingsPageEnabled(getFeatureFlags());
+ }
+
private boolean hasBluetoothFeature() {
return mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java
index 75b4acf..5e0ec07 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java
@@ -19,6 +19,7 @@
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -66,7 +67,13 @@
@NonNull List<AudioSharingDeviceItem> deviceItems,
@NonNull DialogEventListener listener) {
if (!AudioSharingUtils.isFeatureEnabled()) return;
- final FragmentManager manager = host.getChildFragmentManager();
+ 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();
@@ -79,10 +86,18 @@
}
@Override
+ @NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle arguments = requireArguments();
List<AudioSharingDeviceItem> deviceItems =
arguments.getParcelable(BUNDLE_KEY_DEVICE_ITEMS, List.class);
+ AlertDialog.Builder builder =
+ new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.audio_sharing_call_audio_title);
+ if (deviceItems == null) {
+ Log.d(TAG, "Create dialog error: null deviceItems");
+ return builder.create();
+ }
int checkedItem = -1;
for (AudioSharingDeviceItem item : deviceItems) {
int fallbackActiveGroupId = AudioSharingUtils.getFallbackActiveGroupId(getContext());
@@ -92,17 +107,14 @@
}
String[] choices =
deviceItems.stream().map(AudioSharingDeviceItem::getName).toArray(String[]::new);
- AlertDialog.Builder builder =
- new AlertDialog.Builder(getActivity())
- .setTitle(R.string.audio_sharing_call_audio_title)
- .setSingleChoiceItems(
- choices,
- checkedItem,
- (dialog, which) -> {
- if (sListener != null) {
- sListener.onItemClick(deviceItems.get(which));
- }
- });
+ builder.setSingleChoiceItems(
+ choices,
+ checkedItem,
+ (dialog, which) -> {
+ if (sListener != null) {
+ sListener.onItemClick(deviceItems.get(which));
+ }
+ });
return builder.create();
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java
index e9013d7..61b1df1 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java
@@ -21,6 +21,7 @@
import android.os.Bundle;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
@@ -44,7 +45,13 @@
*/
public static void show(Fragment host) {
if (!AudioSharingUtils.isFeatureEnabled()) return;
- FragmentManager manager = host.getChildFragmentManager();
+ 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.");
@@ -56,6 +63,7 @@
}
@Override
+ @NonNull
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog dialog =
AudioSharingDialogFactory.newBuilder(getActivity())
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
index b932a7e..cc883fe 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceController.java
@@ -18,6 +18,7 @@
import static com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast.EXTRA_BLUETOOTH_DEVICE;
+import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastAssistant;
@@ -44,6 +45,7 @@
import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.BluetoothCallback;
import com.android.settingslib.bluetooth.BluetoothEventManager;
@@ -56,6 +58,7 @@
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.Locale;
import java.util.concurrent.Executor;
@@ -80,6 +83,7 @@
@Nullable private final LocalBluetoothProfileManager mProfileManager;
@Nullable private final LocalBluetoothLeBroadcastAssistant mAssistant;
private final Executor mExecutor;
+ private final MetricsFeatureProvider mMetricsFeatureProvider;
@Nullable private PreferenceGroup mPreferenceGroup;
@Nullable private Preference mAudioSharingSettingsPreference;
@Nullable private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
@@ -114,6 +118,10 @@
@NonNull BluetoothDevice sink,
@NonNull BluetoothLeBroadcastMetadata source,
int reason) {
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_JOIN_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
AudioSharingUtils.toastMessage(
mContext,
String.format(
@@ -143,6 +151,10 @@
@Override
public void onSourceRemoveFailed(
@NonNull BluetoothDevice sink, int sourceId, int reason) {
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_LEAVE_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
AudioSharingUtils.toastMessage(
mContext,
String.format(
@@ -183,6 +195,7 @@
? null
: mProfileManager.getLeAudioBroadcastAssistantProfile();
mExecutor = Executors.newSingleThreadExecutor();
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
index e787be3..f00cf73 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java
@@ -77,7 +77,13 @@
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!AudioSharingUtils.isFeatureEnabled()) return;
- final FragmentManager manager = host.getChildFragmentManager();
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
sListener = listener;
sEventData = eventData;
AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG);
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java
index 8d69cf6..81d7979 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java
@@ -60,7 +60,9 @@
@Nullable private final LocalBluetoothLeBroadcast mBroadcast;
@Nullable private final LocalBluetoothLeBroadcastAssistant mAssistant;
private final MetricsFeatureProvider mMetricsFeatureProvider;
- private List<BluetoothDevice> mTargetSinks = new ArrayList<>();
+ // The target sinks to join broadcast onPlaybackStarted
+ @Nullable private List<BluetoothDevice> mTargetSinks;
+ private boolean mIsStoppingBroadcast = false;
@VisibleForTesting
final BluetoothLeBroadcast.Callback mBroadcastCallback =
@@ -78,8 +80,15 @@
@Override
public void onBroadcastStartFailed(int reason) {
Log.d(TAG, "onBroadcastStartFailed(), reason = " + reason);
- AudioSharingUtils.toastMessage(
- mContext, "Fail to start broadcast, reason " + reason);
+ if (mTargetSinks != null) {
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_START_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+ AudioSharingUtils.toastMessage(
+ mContext, "Fail to start broadcast, reason " + reason);
+ mTargetSinks = null;
+ }
}
@Override
@@ -101,13 +110,21 @@
+ reason
+ ", broadcastId = "
+ broadcastId);
+ mIsStoppingBroadcast = false;
}
@Override
public void onBroadcastStopFailed(int reason) {
Log.d(TAG, "onBroadcastStopFailed(), reason = " + reason);
- AudioSharingUtils.toastMessage(
- mContext, "Fail to stop broadcast, reason " + reason);
+ if (mIsStoppingBroadcast) {
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_STOP_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+ AudioSharingUtils.toastMessage(
+ mContext, "Fail to stop broadcast, reason " + reason);
+ mIsStoppingBroadcast = false;
+ }
}
@Override
@@ -124,7 +141,7 @@
+ reason
+ ", broadcastId = "
+ broadcastId);
- if (!mTargetSinks.isEmpty()) {
+ if (mTargetSinks != null) {
AudioSharingUtils.addSourceToTargetSinks(mTargetSinks, mLocalBtManager);
new SubSettingLauncher(mContext)
.setDestination(AudioSharingDashboardFragment.class.getName())
@@ -134,7 +151,7 @@
.getMetricsCategory()
: SettingsEnums.PAGE_UNKNOWN)
.launch();
- mTargetSinks = new ArrayList<>();
+ mTargetSinks = null;
}
}
@@ -203,6 +220,7 @@
AudioSharingStopDialogFragment.DialogEventListener listener =
() -> {
cachedDevice.setActive();
+ mIsStoppingBroadcast = true;
AudioSharingUtils.stopBroadcasting(mLocalBtManager);
};
Pair<Integer, Object>[] eventData =
@@ -240,6 +258,8 @@
boolean userTriggered) {
Map<Integer, List<CachedBluetoothDevice>> groupedDevices =
AudioSharingUtils.fetchConnectedDevicesByGroupId(mLocalBtManager);
+ BluetoothDevice btDevice = cachedDevice.getDevice();
+ String deviceAddress = btDevice == null ? "" : btDevice.getAnonymizedAddress();
if (isBroadcasting) {
// If another device within the same is already in the sharing session, add source to
// the device automatically.
@@ -253,10 +273,10 @@
Log.d(
TAG,
"Automatically add another device within the same group to the sharing: "
- + cachedDevice.getDevice().getAnonymizedAddress());
+ + deviceAddress);
if (mAssistant != null && mBroadcast != null) {
mAssistant.addSource(
- cachedDevice.getDevice(),
+ btDevice,
mBroadcast.getLatestBluetoothLeBroadcastMetadata(),
/* isGroupOp= */ false);
}
@@ -295,6 +315,7 @@
cachedDevice,
listener,
eventData);
+ Log.d(TAG, "Show disconnect dialog, device = " + deviceAddress);
});
} else {
// Show audio sharing join dialog when the first or second eligible (LE audio)
@@ -325,9 +346,11 @@
cachedDevice,
listener,
eventData);
+ Log.d(TAG, "Show join dialog, device = " + deviceAddress);
});
}
} else {
+ // Build a list of AudioSharingDeviceItem for connected devices other than cachedDevice.
List<AudioSharingDeviceItem> deviceItems = new ArrayList<>();
for (List<CachedBluetoothDevice> devices : groupedDevices.values()) {
// Use random device in the group within the sharing session to represent the group.
@@ -340,7 +363,7 @@
}
// Show audio sharing join dialog when the second eligible (LE audio) remote
// device connect and no sharing session.
- if (deviceItems.size() == 1) {
+ if (groupedDevices.size() == 2 && deviceItems.size() == 1) {
AudioSharingJoinDialogFragment.DialogEventListener listener =
new AudioSharingJoinDialogFragment.DialogEventListener() {
@Override
@@ -378,16 +401,26 @@
closeOpeningDialogsOtherThan(AudioSharingJoinDialogFragment.tag());
AudioSharingJoinDialogFragment.show(
mHostFragment, deviceItems, cachedDevice, listener, eventData);
+ Log.d(TAG, "Show start dialog, device = " + deviceAddress);
});
} else if (userTriggered) {
cachedDevice.setActive();
+ Log.d(TAG, "Set active device = " + deviceAddress);
+ } else {
+ Log.d(TAG, "Fail to handle LE audio device connected, device = " + deviceAddress);
}
}
}
private void closeOpeningDialogsOtherThan(String tag) {
if (mHostFragment == null) return;
- List<Fragment> fragments = mHostFragment.getChildFragmentManager().getFragments();
+ List<Fragment> fragments;
+ try {
+ fragments = mHostFragment.getChildFragmentManager().getFragments();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to closeOpeningDialogsOtherThan " + tag + ": " + e.getMessage());
+ return;
+ }
for (Fragment fragment : fragments) {
if (fragment instanceof DialogFragment
&& fragment.getTag() != null
@@ -403,7 +436,13 @@
public void closeOpeningDialogsForLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
if (mHostFragment == null) return;
int groupId = AudioSharingUtils.getGroupId(cachedDevice);
- List<Fragment> fragments = mHostFragment.getChildFragmentManager().getFragments();
+ List<Fragment> fragments;
+ try {
+ fragments = mHostFragment.getChildFragmentManager().getFragments();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to closeOpeningDialogsForLeaDevice: " + e.getMessage());
+ return;
+ }
for (Fragment fragment : fragments) {
CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
if (device != null
@@ -420,7 +459,13 @@
public void closeOpeningDialogsForNonLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) {
if (mHostFragment == null) return;
String address = cachedDevice.getAddress();
- List<Fragment> fragments = mHostFragment.getChildFragmentManager().getFragments();
+ List<Fragment> fragments;
+ try {
+ fragments = mHostFragment.getChildFragmentManager().getFragments();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to closeOpeningDialogsForNonLeaDevice: " + e.getMessage());
+ return;
+ }
for (Fragment fragment : fragments) {
CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment);
if (device != null && address != null && address.equals(device.getAddress())) {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java
index 69001aa..010a3ba 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java
@@ -51,12 +51,13 @@
public static AlertDialog getDialogIfShowing(
@NonNull FragmentManager manager, @NonNull String tag) {
Fragment dialog = manager.findFragmentByTag(tag);
- return dialog != null
- && dialog instanceof DialogFragment
- && ((DialogFragment) dialog).getDialog() != null
- && ((DialogFragment) dialog).getDialog().isShowing()
- && ((DialogFragment) dialog).getDialog() instanceof AlertDialog
+ return dialog instanceof DialogFragment
+ && ((DialogFragment) dialog).getDialog() != null
+ && ((DialogFragment) dialog).getDialog().isShowing()
+ && ((DialogFragment) dialog).getDialog() instanceof AlertDialog
? (AlertDialog) ((DialogFragment) dialog).getDialog()
: null;
}
+
+ private AudioSharingDialogHelper() {}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
index dcd8a3b..66e327b 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java
@@ -84,7 +84,13 @@
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!AudioSharingUtils.isFeatureEnabled()) return;
- FragmentManager manager = host.getChildFragmentManager();
+ 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) {
int newGroupId = AudioSharingUtils.getGroupId(newDevice);
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
index ec669bf..9afa186 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java
@@ -81,7 +81,13 @@
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!AudioSharingUtils.isFeatureEnabled()) return;
- final FragmentManager manager = host.getChildFragmentManager();
+ final FragmentManager manager;
+ try {
+ manager = host.getChildFragmentManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to show dialog: " + e.getMessage());
+ return;
+ }
sListener = listener;
sNewDevice = newDevice;
sEventData = eventData;
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java
index 0bb6b60..bfccdc4 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreference.java
@@ -95,14 +95,14 @@
}
private void configureInvisibleStateForQrCodeIcon(ImageButton shareButton, View divider) {
- divider.setVisibility(View.INVISIBLE);
- shareButton.setVisibility(View.INVISIBLE);
+ divider.setVisibility(View.GONE);
+ shareButton.setVisibility(View.GONE);
shareButton.setOnClickListener(null);
}
private void launchAudioSharingQrCodeFragment() {
new SubSettingLauncher(getContext())
- .setTitleText(getContext().getString(R.string.audio_streams_qr_code_page_title))
+ .setTitleRes(R.string.audio_streams_qr_code_page_title)
.setDestination(AudioStreamsQrCodeFragment.class.getName())
.setSourceMetricsCategory(SettingsEnums.AUDIO_SHARING_SETTINGS)
.launch();
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
index 24b8f20..894ba48 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceController.java
@@ -26,6 +26,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
@@ -56,7 +57,8 @@
private static final boolean DEBUG = BluetoothUtils.D;
private static final String PREF_KEY = "audio_sharing_stream_name";
- private final BluetoothLeBroadcast.Callback mBroadcastCallback =
+ @VisibleForTesting
+ final BluetoothLeBroadcast.Callback mBroadcastCallback =
new BluetoothLeBroadcast.Callback() {
@Override
public void onBroadcastMetadataChanged(
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
index 258cf3b..14930e1 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceController.java
@@ -19,12 +19,19 @@
import static com.android.settings.connecteddevice.audiosharing.AudioSharingUtils.isBroadcasting;
import android.app.settings.SettingsEnums;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.SharedPreferences;
+import android.database.ContentObserver;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.lifecycle.DefaultLifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
@@ -41,15 +48,19 @@
public class AudioSharingPasswordPreferenceController extends BasePreferenceController
implements ValidatedEditTextPreference.Validator,
- AudioSharingPasswordPreference.OnDialogEventListener {
-
+ AudioSharingPasswordPreference.OnDialogEventListener,
+ DefaultLifecycleObserver {
private static final String TAG = "AudioSharingPasswordPreferenceController";
private static final String PREF_KEY = "audio_sharing_stream_password";
private static final String SHARED_PREF_NAME = "audio_sharing_settings";
private static final String SHARED_PREF_KEY = "default_password";
+ @Nullable private final ContentResolver mContentResolver;
+ @Nullable private final SharedPreferences mSharedPref;
@Nullable private final LocalBluetoothManager mBtManager;
@Nullable private final LocalBluetoothLeBroadcast mBroadcast;
@Nullable private AudioSharingPasswordPreference mPreference;
+ private final ContentObserver mSettingsObserver;
+ private final SharedPreferences.OnSharedPreferenceChangeListener mSharedPrefChangeListener;
private final AudioSharingPasswordValidator mAudioSharingPasswordValidator;
private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -61,10 +72,45 @@
? mBtManager.getProfileManager().getLeAudioBroadcastProfile()
: null;
mAudioSharingPasswordValidator = new AudioSharingPasswordValidator();
+ mContentResolver = context.getContentResolver();
+ mSettingsObserver = new PasswordSettingsObserver();
+ mSharedPref = context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
+ mSharedPrefChangeListener = new PasswordSharedPrefChangeListener();
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
}
@Override
+ public void onStart(@NonNull LifecycleOwner owner) {
+ if (!isAvailable()) {
+ Log.d(TAG, "Feature is not available.");
+ return;
+ }
+ if (mContentResolver != null) {
+ mContentResolver.registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.BLUETOOTH_LE_BROADCAST_CODE),
+ false,
+ mSettingsObserver);
+ }
+ if (mSharedPref != null) {
+ mSharedPref.registerOnSharedPreferenceChangeListener(mSharedPrefChangeListener);
+ }
+ }
+
+ @Override
+ public void onStop(@NonNull LifecycleOwner owner) {
+ if (!isAvailable()) {
+ Log.d(TAG, "Feature is not available.");
+ return;
+ }
+ if (mContentResolver != null) {
+ mContentResolver.unregisterContentObserver(mSettingsObserver);
+ }
+ if (mSharedPref != null) {
+ mSharedPref.unregisterOnSharedPreferenceChangeListener(mSharedPrefChangeListener);
+ }
+ }
+
+ @Override
public int getAvailabilityStatus() {
return AudioSharingUtils.isFeatureEnabled() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@@ -125,7 +171,6 @@
persistDefaultPassword(mContext, password);
mBroadcast.setBroadcastCode(
isPublicBroadcast ? new byte[0] : password.getBytes());
- updatePreference();
mMetricsFeatureProvider.action(
mContext,
SettingsEnums.ACTION_AUDIO_STREAM_PASSWORD_UPDATED,
@@ -164,32 +209,52 @@
});
}
- private static void persistDefaultPassword(Context context, String defaultPassword) {
+ private class PasswordSettingsObserver extends ContentObserver {
+ PasswordSettingsObserver() {
+ super(new Handler(Looper.getMainLooper()));
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ Log.d(TAG, "onChange, broadcast password has been changed");
+ updatePreference();
+ }
+ }
+
+ private class PasswordSharedPrefChangeListener
+ implements SharedPreferences.OnSharedPreferenceChangeListener {
+ @Override
+ public void onSharedPreferenceChanged(
+ SharedPreferences sharedPreferences, @Nullable String key) {
+ if (!SHARED_PREF_KEY.equals(key)) {
+ return;
+ }
+ Log.d(TAG, "onSharedPreferenceChanged, default password has been changed");
+ updatePreference();
+ }
+ }
+
+ private void persistDefaultPassword(Context context, String defaultPassword) {
if (getDefaultPassword(context).equals(defaultPassword)) {
return;
}
-
- SharedPreferences sharedPref =
- context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
- if (sharedPref == null) {
+ if (mSharedPref == null) {
Log.w(TAG, "persistDefaultPassword(): sharedPref is empty!");
return;
}
- SharedPreferences.Editor editor = sharedPref.edit();
+ SharedPreferences.Editor editor = mSharedPref.edit();
editor.putString(SHARED_PREF_KEY, defaultPassword);
editor.apply();
}
- private static String getDefaultPassword(Context context) {
- SharedPreferences sharedPref =
- context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
- if (sharedPref == null) {
+ private String getDefaultPassword(Context context) {
+ if (mSharedPref == null) {
Log.w(TAG, "getDefaultPassword(): sharedPref is empty!");
return "";
}
- String value = sharedPref.getString(SHARED_PREF_KEY, "");
+ String value = mSharedPref.getString(SHARED_PREF_KEY, "");
if (value != null && value.isEmpty()) {
Log.w(TAG, "getDefaultPassword(): default password is empty!");
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
index 59593ba..d026fa7 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java
@@ -81,7 +81,13 @@
@NonNull DialogEventListener listener,
@NonNull Pair<Integer, Object>[] eventData) {
if (!AudioSharingUtils.isFeatureEnabled()) return;
- final FragmentManager manager = host.getChildFragmentManager();
+ 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) {
int newGroupId = AudioSharingUtils.getGroupId(newDevice);
@@ -140,6 +146,13 @@
return sCachedDevice;
}
+ /** Test only: get the {@link DialogEventListener} passed to the dialog. */
+ @VisibleForTesting
+ @Nullable
+ DialogEventListener getListener() {
+ return sListener;
+ }
+
/** Test only: get the event data passed to the dialog. */
@VisibleForTesting
@NonNull
diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
index 89d2c95..9705566 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java
@@ -134,8 +134,11 @@
@Override
public void onBroadcastStartFailed(int reason) {
Log.d(TAG, "onBroadcastStartFailed(), reason = " + reason);
- // TODO: handle broadcast start fail
updateSwitch();
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_START_FAILED,
+ SettingsEnums.AUDIO_SHARING_SETTINGS);
}
@Override
@@ -164,8 +167,11 @@
@Override
public void onBroadcastStopFailed(int reason) {
Log.d(TAG, "onBroadcastStopFailed(), reason = " + reason);
- // TODO: handle broadcast stop fail
updateSwitch();
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_STOP_FAILED,
+ SettingsEnums.AUDIO_SHARING_SETTINGS);
}
@Override
@@ -189,7 +195,8 @@
public void onPlaybackStopped(int reason, int broadcastId) {}
};
- private final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
+ @VisibleForTesting
+ final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
new BluetoothLeBroadcastAssistant.Callback() {
@Override
public void onSearchStarted(int reason) {}
@@ -207,16 +214,8 @@
public void onSourceFound(@NonNull BluetoothLeBroadcastMetadata source) {}
@Override
- public void onSourceAdded(@NonNull BluetoothDevice sink, int sourceId, int reason) {
- Log.d(
- TAG,
- "onSourceAdded(), sink = "
- + sink
- + ", sourceId = "
- + sourceId
- + ", reason = "
- + reason);
- }
+ public void onSourceAdded(
+ @NonNull BluetoothDevice sink, int sourceId, int reason) {}
@Override
public void onSourceAddFailed(
@@ -231,6 +230,10 @@
+ source
+ ", reason = "
+ reason);
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_JOIN_FAILED,
+ SettingsEnums.AUDIO_SHARING_SETTINGS);
AudioSharingUtils.toastMessage(
mContext,
String.format(
@@ -318,15 +321,17 @@
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Filter out unnecessary callbacks when switch is disabled.
if (!buttonView.isEnabled()) return;
+ if (mBroadcast == null || mAssistant == null) {
+ mSwitchBar.setChecked(false);
+ Log.d(TAG, "Skip onCheckedChanged, profile not support.");
+ return;
+ }
+ mSwitchBar.setEnabled(false);
+ boolean isBroadcasting = AudioSharingUtils.isBroadcasting(mBtManager);
if (isChecked) {
- mSwitchBar.setEnabled(false);
- boolean isBroadcasting = AudioSharingUtils.isBroadcasting(mBtManager);
- if (mAssistant == null || mBroadcast == null || isBroadcasting) {
- Log.d(TAG, "Skip startAudioSharing, already broadcasting or not support.");
+ if (isBroadcasting) {
+ Log.d(TAG, "Skip startAudioSharing, already broadcasting.");
mSwitchBar.setEnabled(true);
- if (!isBroadcasting) {
- mSwitchBar.setChecked(false);
- }
return;
}
// FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST is always true in
@@ -352,6 +357,11 @@
}
startAudioSharing();
} else {
+ if (!isBroadcasting) {
+ Log.d(TAG, "Skip stopAudioSharing, already not broadcasting.");
+ mSwitchBar.setEnabled(true);
+ return;
+ }
stopAudioSharing();
}
}
@@ -454,18 +464,18 @@
}
if (mBroadcast != null) {
mBroadcast.startPrivateBroadcast();
+ mMetricsFeatureProvider.action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_MAIN_SWITCH_ON,
+ deviceItems.size());
}
}
private void stopAudioSharing() {
- mSwitchBar.setEnabled(false);
- if (!AudioSharingUtils.isBroadcasting(mBtManager)) {
- Log.d(TAG, "Skip stopAudioSharing, already not broadcasting or broadcast not support.");
- mSwitchBar.setEnabled(true);
- return;
- }
if (mBroadcast != null) {
mBroadcast.stopBroadcast(mBroadcast.getLatestBroadcastId());
+ mMetricsFeatureProvider.action(
+ mContext, SettingsEnums.ACTION_AUDIO_SHARING_MAIN_SWITCH_OFF);
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseState.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseState.java
index 24a28dd..7be01a2 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseState.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseState.java
@@ -36,7 +36,8 @@
@Nullable private static AddSourceWaitForResponseState sInstance = null;
- private AddSourceWaitForResponseState() {}
+ @VisibleForTesting
+ AddSourceWaitForResponseState() {}
static AddSourceWaitForResponseState getInstance() {
if (sInstance == null) {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
index 2661072..939dd5c 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamButtonController.java
@@ -27,6 +27,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;
@@ -48,7 +49,9 @@
private static final String TAG = "AudioStreamButtonController";
private static final String KEY = "audio_stream_button";
private static final int SOURCE_ORIGIN_REPOSITORY = SourceOriginForLogging.REPOSITORY.ordinal();
- private final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
+
+ @VisibleForTesting
+ final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
new AudioStreamsBroadcastAssistantCallback() {
@Override
public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
@@ -97,8 +100,7 @@
}
};
- private final AudioStreamsRepository mAudioStreamsRepository =
- AudioStreamsRepository.getInstance();
+ private AudioStreamsRepository mAudioStreamsRepository = AudioStreamsRepository.getInstance();
private final Executor mExecutor;
private final AudioStreamsHelper mAudioStreamsHelper;
private final @Nullable LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
@@ -228,4 +230,9 @@
void init(int broadcastId) {
mBroadcastId = broadcastId;
}
+
+ @VisibleForTesting
+ void setAudioStreamsRepositoryForTesting(AudioStreamsRepository repository) {
+ mAudioStreamsRepository = repository;
+ }
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
index 6c449a4..148c776 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialog.java
@@ -31,6 +31,7 @@
import android.util.Log;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.bluetooth.Utils;
@@ -43,9 +44,12 @@
public class AudioStreamConfirmDialog extends InstrumentedDialogFragment {
private static final String TAG = "AudioStreamConfirmDialog";
- private static final int DEFAULT_DEVICE_NAME = R.string.audio_streams_dialog_default_device;
+
+ @VisibleForTesting
+ static final int DEFAULT_DEVICE_NAME = R.string.audio_streams_dialog_default_device;
+
private Context mContext;
- @Nullable private Activity mActivity;
+ @VisibleForTesting @Nullable Activity mActivity;
@Nullable private BluetoothLeBroadcastMetadata mBroadcastMetadata;
@Nullable private BluetoothDevice mConnectedDevice;
private int mAudioStreamConfirmDialogId = SettingsEnums.PAGE_UNKNOWN;
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
index 860e62e..e1a178d 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamHeaderController.java
@@ -54,7 +54,9 @@
private final Executor mExecutor;
private final AudioStreamsHelper mAudioStreamsHelper;
@Nullable private final LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
- private final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
+
+ @VisibleForTesting
+ final BluetoothLeBroadcastAssistant.Callback mBroadcastAssistantCallback =
new AudioStreamsBroadcastAssistantCallback() {
@Override
public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java
index 6d297f4..ad358ed 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaService.java
@@ -16,6 +16,8 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static java.util.Collections.emptyList;
+
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -50,10 +52,14 @@
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.VolumeControlProfile;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.utils.ThreadUtils;
-import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
public class AudioStreamMediaService extends Service {
static final String BROADCAST_ID = "audio_stream_media_service_broadcast_id";
@@ -62,102 +68,13 @@
private static final String TAG = "AudioStreamMediaService";
private static final int NOTIFICATION_ID = 1;
private static final int BROADCAST_CONTENT_TEXT = R.string.audio_streams_listening_now;
- private static final String LEAVE_BROADCAST_ACTION = "leave_broadcast_action";
+ @VisibleForTesting static final String LEAVE_BROADCAST_ACTION = "leave_broadcast_action";
private static final String LEAVE_BROADCAST_TEXT = "Leave Broadcast";
private static final String CHANNEL_ID = "bluetooth_notification_channel";
private static final String DEFAULT_DEVICE_NAME = "";
private static final int STATIC_PLAYBACK_DURATION = 100;
private static final int STATIC_PLAYBACK_POSITION = 30;
private static final int ZERO_PLAYBACK_SPEED = 0;
- private final AudioStreamsBroadcastAssistantCallback mBroadcastAssistantCallback =
- new AudioStreamsBroadcastAssistantCallback() {
- @Override
- public void onSourceLost(int broadcastId) {
- super.onSourceLost(broadcastId);
- if (broadcastId == mBroadcastId) {
- stopSelf();
- }
- }
-
- @Override
- public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
- super.onSourceRemoved(sink, sourceId, reason);
- if (mAudioStreamsHelper != null
- && mAudioStreamsHelper.getAllConnectedSources().stream()
- .map(BluetoothLeBroadcastReceiveState::getBroadcastId)
- .noneMatch(id -> id == mBroadcastId)) {
- stopSelf();
- }
- }
- };
-
- private final BluetoothCallback mBluetoothCallback =
- new BluetoothCallback() {
- @Override
- public void onBluetoothStateChanged(int bluetoothState) {
- if (BluetoothAdapter.STATE_OFF == bluetoothState) {
- stopSelf();
- }
- }
-
- @Override
- public void onProfileConnectionStateChanged(
- @NonNull CachedBluetoothDevice cachedDevice,
- @ConnectionState int state,
- int bluetoothProfile) {
- if (state == BluetoothAdapter.STATE_DISCONNECTED
- && bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
- && mDevices != null) {
- mDevices.remove(cachedDevice.getDevice());
- cachedDevice
- .getMemberDevice()
- .forEach(
- m -> {
- // Check nullability to pass NullAway check
- if (mDevices != null) {
- mDevices.remove(m.getDevice());
- }
- });
- }
- if (mDevices == null || mDevices.isEmpty()) {
- stopSelf();
- }
- }
- };
-
- private final BluetoothVolumeControl.Callback mVolumeControlCallback =
- new BluetoothVolumeControl.Callback() {
- @Override
- public void onDeviceVolumeChanged(
- @NonNull BluetoothDevice device,
- @IntRange(from = -255, to = 255) int volume) {
- if (mDevices == null || mDevices.isEmpty()) {
- Log.w(TAG, "active device or device has source is null!");
- return;
- }
- if (mDevices.contains(device)) {
- Log.d(
- TAG,
- "onDeviceVolumeChanged() bluetoothDevice : "
- + device
- + " volume: "
- + volume);
- if (volume == 0) {
- mIsMuted = true;
- } else {
- mIsMuted = false;
- mLatestPositiveVolume = volume;
- }
- if (mLocalSession != null) {
- mLocalSession.setPlaybackState(getPlaybackState());
- if (mNotificationManager != null) {
- mNotificationManager.notify(NOTIFICATION_ID, buildNotification());
- }
- }
- }
- }
- };
-
private final PlaybackState.Builder mPlayStatePlayingBuilder =
new PlaybackState.Builder()
.setActions(PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_SEEK_TO)
@@ -184,20 +101,24 @@
private final MetricsFeatureProvider mMetricsFeatureProvider =
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
+ private final AtomicBoolean mIsMuted = new AtomicBoolean(false);
+ // Set 25 as default as the volume range from `VolumeControlProfile` is from 0 to 255.
+ // If the initial volume from `onDeviceVolumeChanged` is larger than zero (not muted), we will
+ // override this value. Otherwise, we raise the volume to 25 when the play button is clicked.
+ private final AtomicInteger mLatestPositiveVolume = new AtomicInteger(25);
+ private final AtomicBoolean mHasStopped = new AtomicBoolean(false);
private int mBroadcastId;
- @Nullable private ArrayList<BluetoothDevice> mDevices;
+ @Nullable private List<BluetoothDevice> mDevices;
@Nullable private LocalBluetoothManager mLocalBtManager;
@Nullable private AudioStreamsHelper mAudioStreamsHelper;
@Nullable private LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
@Nullable private VolumeControlProfile mVolumeControl;
@Nullable private NotificationManager mNotificationManager;
-
- // Set 25 as default as the volume range from `VolumeControlProfile` is from 0 to 255.
- // If the initial volume from `onDeviceVolumeChanged` is larger than zero (not muted), we will
- // override this value. Otherwise, we raise the volume to 25 when the play button is clicked.
- private int mLatestPositiveVolume = 25;
- private boolean mIsMuted = false;
- @VisibleForTesting @Nullable MediaSession mLocalSession;
+ @Nullable private MediaSession mLocalSession;
+ @VisibleForTesting @Nullable AudioStreamsBroadcastAssistantCallback mBroadcastAssistantCallback;
+ @VisibleForTesting @Nullable BluetoothCallback mBluetoothCallback;
+ @VisibleForTesting @Nullable BluetoothVolumeControl.Callback mVolumeControlCallback;
+ @VisibleForTesting @Nullable MediaSession.Callback mMediaSessionCallback;
@Override
public void onCreate() {
@@ -234,30 +155,33 @@
mNotificationManager.createNotificationChannel(notificationChannel);
}
+ mBluetoothCallback = new BtCallback();
mLocalBtManager.getEventManager().registerCallback(mBluetoothCallback);
mVolumeControl = mLocalBtManager.getProfileManager().getVolumeControlProfile();
if (mVolumeControl != null) {
+ mVolumeControlCallback = new VolumeControlCallback();
mVolumeControl.registerCallback(mExecutor, mVolumeControlCallback);
}
+ mBroadcastAssistantCallback = new AssistantCallback();
mLeBroadcastAssistant.registerServiceCallBack(mExecutor, mBroadcastAssistantCallback);
}
@Override
public void onDestroy() {
+ Log.d(TAG, "onDestroy()");
super.onDestroy();
-
if (!AudioSharingUtils.isFeatureEnabled()) {
return;
}
if (mLocalBtManager != null) {
mLocalBtManager.getEventManager().unregisterCallback(mBluetoothCallback);
}
- if (mLeBroadcastAssistant != null) {
+ if (mLeBroadcastAssistant != null && mBroadcastAssistantCallback != null) {
mLeBroadcastAssistant.unregisterServiceCallBack(mBroadcastAssistantCallback);
}
- if (mVolumeControl != null) {
+ if (mVolumeControl != null && mVolumeControlCallback != null) {
mVolumeControl.unregisterCallback(mVolumeControlCallback);
}
if (mLocalSession != null) {
@@ -269,27 +193,31 @@
@Override
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand()");
-
- mBroadcastId = intent != null ? intent.getIntExtra(BROADCAST_ID, -1) : -1;
+ if (intent == null) {
+ Log.w(TAG, "Intent is null. Service will not start.");
+ mHasStopped.set(true);
+ stopSelf();
+ return START_NOT_STICKY;
+ }
+ mBroadcastId = intent.getIntExtra(BROADCAST_ID, -1);
if (mBroadcastId == -1) {
Log.w(TAG, "Invalid broadcast ID. Service will not start.");
+ mHasStopped.set(true);
stopSelf();
return START_NOT_STICKY;
}
-
- if (intent != null) {
- mDevices = intent.getParcelableArrayListExtra(DEVICES, BluetoothDevice.class);
- }
- if (mDevices == null || mDevices.isEmpty()) {
+ var extra = intent.getParcelableArrayListExtra(DEVICES, BluetoothDevice.class);
+ if (extra == null || extra.isEmpty()) {
Log.w(TAG, "No device. Service will not start.");
+ mHasStopped.set(true);
stopSelf();
return START_NOT_STICKY;
}
- if (intent != null) {
- createLocalMediaSession(intent.getStringExtra(BROADCAST_TITLE));
- startForeground(NOTIFICATION_ID, buildNotification());
- }
-
+ mDevices = Collections.synchronizedList(extra);
+ createLocalMediaSession(intent.getStringExtra(BROADCAST_TITLE));
+ startForeground(NOTIFICATION_ID, buildNotification());
+ // Reset in case the service is previously stopped but not yet destroyed.
+ mHasStopped.set(false);
return START_NOT_STICKY;
}
@@ -302,78 +230,12 @@
.build());
mLocalSession.setActive(true);
mLocalSession.setPlaybackState(getPlaybackState());
- mLocalSession.setCallback(
- new MediaSession.Callback() {
- public void onSeekTo(long pos) {
- Log.d(TAG, "onSeekTo: " + pos);
- if (mLocalSession != null) {
- mLocalSession.setPlaybackState(getPlaybackState());
- if (mNotificationManager != null) {
- mNotificationManager.notify(NOTIFICATION_ID, buildNotification());
- }
- }
- }
-
- @Override
- public void onPause() {
- if (mDevices == null || mDevices.isEmpty()) {
- Log.w(TAG, "active device or device has source is null!");
- return;
- }
- Log.d(
- TAG,
- "onPause() setting volume for device : "
- + mDevices.get(0)
- + " volume: "
- + 0);
- if (mVolumeControl != null) {
- mVolumeControl.setDeviceVolume(mDevices.get(0), 0, true);
- mMetricsFeatureProvider.action(
- getApplicationContext(),
- SettingsEnums
- .ACTION_AUDIO_STREAM_NOTIFICATION_MUTE_BUTTON_CLICK,
- 1);
- }
- }
-
- @Override
- public void onPlay() {
- if (mDevices == null || mDevices.isEmpty()) {
- Log.w(TAG, "active device or device has source is null!");
- return;
- }
- Log.d(
- TAG,
- "onPlay() setting volume for device : "
- + mDevices.get(0)
- + " volume: "
- + mLatestPositiveVolume);
- if (mVolumeControl != null) {
- mVolumeControl.setDeviceVolume(
- mDevices.get(0), mLatestPositiveVolume, true);
- }
- mMetricsFeatureProvider.action(
- getApplicationContext(),
- SettingsEnums.ACTION_AUDIO_STREAM_NOTIFICATION_MUTE_BUTTON_CLICK,
- 0);
- }
-
- @Override
- public void onCustomAction(@NonNull String action, Bundle extras) {
- Log.d(TAG, "onCustomAction: " + action);
- if (action.equals(LEAVE_BROADCAST_ACTION) && mAudioStreamsHelper != null) {
- mAudioStreamsHelper.removeSource(mBroadcastId);
- mMetricsFeatureProvider.action(
- getApplicationContext(),
- SettingsEnums
- .ACTION_AUDIO_STREAM_NOTIFICATION_LEAVE_BUTTON_CLICK);
- }
- }
- });
+ mMediaSessionCallback = new MediaSessionCallback();
+ mLocalSession.setCallback(mMediaSessionCallback);
}
private PlaybackState getPlaybackState() {
- return mIsMuted ? mPlayStatePausingBuilder.build() : mPlayStatePlayingBuilder.build();
+ return mIsMuted.get() ? mPlayStatePausingBuilder.build() : mPlayStatePlayingBuilder.build();
}
private String getDeviceName() {
@@ -414,4 +276,167 @@
public IBinder onBind(Intent intent) {
return null;
}
+
+ private class AssistantCallback extends AudioStreamsBroadcastAssistantCallback {
+ @Override
+ public void onSourceLost(int broadcastId) {
+ super.onSourceLost(broadcastId);
+ handleRemoveSource();
+ }
+
+ @Override
+ public void onSourceRemoved(BluetoothDevice sink, int sourceId, int reason) {
+ super.onSourceRemoved(sink, sourceId, reason);
+ handleRemoveSource();
+ }
+
+ private void handleRemoveSource() {
+ var unused =
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ List<BluetoothLeBroadcastReceiveState> connected =
+ mAudioStreamsHelper == null
+ ? emptyList()
+ : mAudioStreamsHelper.getAllConnectedSources();
+ if (connected.stream()
+ .map(BluetoothLeBroadcastReceiveState::getBroadcastId)
+ .noneMatch(id -> id == mBroadcastId)) {
+ mHasStopped.set(true);
+ stopSelf();
+ }
+ });
+ }
+ }
+
+ private class VolumeControlCallback implements BluetoothVolumeControl.Callback {
+ @Override
+ public void onDeviceVolumeChanged(
+ @NonNull BluetoothDevice device, @IntRange(from = -255, to = 255) int volume) {
+ if (mDevices == null || mDevices.isEmpty()) {
+ Log.w(TAG, "active device or device has source is null!");
+ return;
+ }
+ Log.d(
+ TAG,
+ "onDeviceVolumeChanged() bluetoothDevice : " + device + " volume: " + volume);
+ if (mDevices.contains(device)) {
+ if (volume == 0) {
+ mIsMuted.set(true);
+ } else {
+ mIsMuted.set(false);
+ mLatestPositiveVolume.set(volume);
+ }
+ updateNotification(getPlaybackState());
+ }
+ }
+ }
+
+ private class BtCallback implements BluetoothCallback {
+ @Override
+ public void onBluetoothStateChanged(int bluetoothState) {
+ if (BluetoothAdapter.STATE_OFF == bluetoothState) {
+ Log.d(TAG, "onBluetoothStateChanged() : stopSelf");
+ mHasStopped.set(true);
+ stopSelf();
+ }
+ }
+
+ @Override
+ public void onProfileConnectionStateChanged(
+ @NonNull CachedBluetoothDevice cachedDevice,
+ @ConnectionState int state,
+ int bluetoothProfile) {
+ if (state == BluetoothAdapter.STATE_DISCONNECTED
+ && bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ && mDevices != null) {
+ mDevices.remove(cachedDevice.getDevice());
+ cachedDevice
+ .getMemberDevice()
+ .forEach(
+ m -> {
+ // Check nullability to pass NullAway check
+ if (mDevices != null) {
+ mDevices.remove(m.getDevice());
+ }
+ });
+ }
+ if (mDevices == null || mDevices.isEmpty()) {
+ Log.d(TAG, "onProfileConnectionStateChanged() : stopSelf");
+ mHasStopped.set(true);
+ stopSelf();
+ }
+ }
+ }
+
+ private class MediaSessionCallback extends MediaSession.Callback {
+ public void onSeekTo(long pos) {
+ Log.d(TAG, "onSeekTo: " + pos);
+ updateNotification(getPlaybackState());
+ }
+
+ @Override
+ public void onPause() {
+ if (mDevices == null || mDevices.isEmpty()) {
+ Log.w(TAG, "active device or device has source is null!");
+ return;
+ }
+ Log.d(
+ TAG,
+ "onPause() setting volume for device : " + mDevices.get(0) + " volume: " + 0);
+ setDeviceVolume(mDevices.get(0), /* volume= */ 0);
+ }
+
+ @Override
+ public void onPlay() {
+ if (mDevices == null || mDevices.isEmpty()) {
+ Log.w(TAG, "active device or device has source is null!");
+ return;
+ }
+ Log.d(
+ TAG,
+ "onPlay() setting volume for device : "
+ + mDevices.get(0)
+ + " volume: "
+ + mLatestPositiveVolume.get());
+ setDeviceVolume(mDevices.get(0), mLatestPositiveVolume.get());
+ }
+
+ @Override
+ public void onCustomAction(@NonNull String action, Bundle extras) {
+ Log.d(TAG, "onCustomAction: " + action);
+ if (action.equals(LEAVE_BROADCAST_ACTION) && mAudioStreamsHelper != null) {
+ mAudioStreamsHelper.removeSource(mBroadcastId);
+ mMetricsFeatureProvider.action(
+ getApplicationContext(),
+ SettingsEnums.ACTION_AUDIO_STREAM_NOTIFICATION_LEAVE_BUTTON_CLICK);
+ }
+ }
+
+ private void setDeviceVolume(BluetoothDevice device, int volume) {
+ int event = SettingsEnums.ACTION_AUDIO_STREAM_NOTIFICATION_MUTE_BUTTON_CLICK;
+ var unused =
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ if (mVolumeControl != null) {
+ mVolumeControl.setDeviceVolume(device, volume, true);
+ mMetricsFeatureProvider.action(
+ getApplicationContext(), event, volume == 0 ? 1 : 0);
+ }
+ });
+ }
+ }
+
+ private void updateNotification(PlaybackState playbackState) {
+ var unused =
+ ThreadUtils.postOnBackgroundThread(
+ () -> {
+ if (mLocalSession != null) {
+ mLocalSession.setPlaybackState(playbackState);
+ if (mNotificationManager != null && !mHasStopped.get()) {
+ mNotificationManager.notify(
+ NOTIFICATION_ID, buildNotification());
+ }
+ }
+ });
+ }
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java
index b0c5b6b..4bb8475 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java
@@ -35,10 +35,10 @@
private static final boolean DEBUG = BluetoothUtils.D;
@VisibleForTesting static final int EMPTY_STRING_RES = 0;
- final AudioStreamsRepository mAudioStreamsRepository = AudioStreamsRepository.getInstance();
final Handler mHandler = new Handler(Looper.getMainLooper());
final MetricsFeatureProvider mMetricsFeatureProvider =
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
+ AudioStreamsRepository mAudioStreamsRepository = AudioStreamsRepository.getInstance();
AudioStreamStateHandler() {}
@@ -112,4 +112,9 @@
AudioStreamsProgressCategoryController.AudioStreamState getStateEnum() {
return AudioStreamsProgressCategoryController.AudioStreamState.UNKNOWN;
}
+
+ @VisibleForTesting
+ void setAudioStreamsRepositoryForTesting(AudioStreamsRepository repository) {
+ mAudioStreamsRepository = repository;
+ }
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java
index ab22b07..47ee440 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdater.java
@@ -16,24 +16,22 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.text.TextUtils;
-import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.bluetooth.Utils;
import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.utils.ThreadUtils;
public class AudioStreamsActiveDeviceSummaryUpdater implements BluetoothCallback {
- private static final String TAG = "AudioStreamsActiveDeviceSummaryUpdater";
- private static final boolean DEBUG = BluetoothUtils.D;
private final LocalBluetoothManager mBluetoothManager;
private Context mContext;
@Nullable private String mSummary;
@@ -47,17 +45,20 @@
}
@Override
- public void onActiveDeviceChanged(
- @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
- if (DEBUG) {
- Log.d(
- TAG,
- "onActiveDeviceChanged() with activeDevice : "
- + (activeDevice == null ? "null" : activeDevice.getAddress())
- + " on profile : "
- + bluetoothProfile);
+ public void onBluetoothStateChanged(@AdapterState int bluetoothState) {
+ if (bluetoothState == BluetoothAdapter.STATE_OFF) {
+ notifyChangeIfNeeded();
}
- if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
+ }
+
+ @Override
+ public void onProfileConnectionStateChanged(
+ @NonNull CachedBluetoothDevice cachedDevice,
+ @ConnectionState int state,
+ int bluetoothProfile) {
+ if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ && (state == BluetoothAdapter.STATE_CONNECTED
+ || state == BluetoothAdapter.STATE_DISCONNECTED)) {
notifyChangeIfNeeded();
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
index 3174ace..0107c6e 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsCategoryController.java
@@ -16,12 +16,12 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import com.android.settings.bluetooth.Utils;
@@ -44,9 +44,13 @@
private final BluetoothCallback mBluetoothCallback =
new BluetoothCallback() {
@Override
- public void onActiveDeviceChanged(
- @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
- if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
+ public void onProfileConnectionStateChanged(
+ @NonNull CachedBluetoothDevice cachedDevice,
+ @ConnectionState int state,
+ int bluetoothProfile) {
+ if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ && (state == BluetoothAdapter.STATE_CONNECTED
+ || state == BluetoothAdapter.STATE_DISCONNECTED)) {
updateVisibility();
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
index ce32cdb..ae5cb6e 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragment.java
@@ -23,7 +23,6 @@
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.content.Context;
import android.content.Intent;
-import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
@@ -64,11 +63,6 @@
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
- @Override
public void onAttach(Context context) {
super.onAttach(context);
use(AudioStreamsScanQrCodeController.class).setFragment(this);
@@ -92,11 +86,6 @@
}
@Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- }
-
- @Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (DEBUG) {
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
index 775186a..6e335a0 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelper.java
@@ -71,7 +71,8 @@
*
* @param source The LE broadcast metadata representing the audio source.
*/
- void addSource(BluetoothLeBroadcastMetadata source) {
+ @VisibleForTesting
+ public void addSource(BluetoothLeBroadcastMetadata source) {
if (mLeBroadcastAssistant == null) {
Log.w(TAG, "addSource(): LeBroadcastAssistant is null!");
return;
@@ -97,7 +98,8 @@
}
/** Removes sources from LE broadcasts associated for all active sinks based on broadcast Id. */
- void removeSource(int broadcastId) {
+ @VisibleForTesting
+ public void removeSource(int broadcastId) {
if (mLeBroadcastAssistant == null) {
Log.w(TAG, "removeSource(): LeBroadcastAssistant is null!");
return;
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
index cb3a0da..3370d8d 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallback.java
@@ -19,7 +19,6 @@
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
-import android.util.Log;
public class AudioStreamsProgressCategoryCallback extends AudioStreamsBroadcastAssistantCallback {
private static final String TAG = "AudioStreamsProgressCategoryCallback";
@@ -53,10 +52,6 @@
@Override
public void onSearchStarted(int reason) {
super.onSearchStarted(reason);
- if (mCategoryController == null) {
- Log.w(TAG, "onSearchStarted() : mCategoryController is null!");
- return;
- }
mCategoryController.setScanning(true);
}
@@ -69,10 +64,6 @@
@Override
public void onSearchStopped(int reason) {
super.onSearchStopped(reason);
- if (mCategoryController == null) {
- Log.w(TAG, "onSearchStopped() : mCategoryController is null!");
- return;
- }
mCategoryController.setScanning(false);
}
@@ -86,10 +77,6 @@
@Override
public void onSourceFound(BluetoothLeBroadcastMetadata source) {
super.onSourceFound(source);
- if (mCategoryController == null) {
- Log.w(TAG, "onSourceFound() : mCategoryController is null!");
- return;
- }
mCategoryController.handleSourceFound(source);
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
index 890879e..9bbf135 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryController.java
@@ -20,6 +20,7 @@
import android.app.AlertDialog;
import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.bluetooth.BluetoothProfile;
@@ -27,10 +28,12 @@
import android.util.Log;
import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.bluetooth.Utils;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
@@ -55,13 +58,35 @@
implements DefaultLifecycleObserver {
private static final String TAG = "AudioStreamsProgressCategoryController";
private static final boolean DEBUG = BluetoothUtils.D;
- private static final int UNSET_BROADCAST_ID = -1;
- private final BluetoothCallback mBluetoothCallback =
+ @VisibleForTesting static final int UNSET_BROADCAST_ID = -1;
+
+ @VisibleForTesting
+ final BluetoothCallback mBluetoothCallback =
new BluetoothCallback() {
@Override
- public void onActiveDeviceChanged(
- @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
- if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
+ public void onBluetoothStateChanged(@AdapterState int bluetoothState) {
+ Log.d(TAG, "onBluetoothStateChanged() with bluetoothState : " + bluetoothState);
+ if (bluetoothState == BluetoothAdapter.STATE_OFF) {
+ mExecutor.execute(() -> init());
+ }
+ }
+
+ @Override
+ public void onProfileConnectionStateChanged(
+ @NonNull CachedBluetoothDevice cachedDevice,
+ @ConnectionState int state,
+ int bluetoothProfile) {
+ Log.d(
+ TAG,
+ "onProfileConnectionStateChanged() with cachedDevice : "
+ + cachedDevice.getAddress()
+ + " with state : "
+ + state
+ + " on profile : "
+ + bluetoothProfile);
+ if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ && (state == BluetoothAdapter.STATE_CONNECTED
+ || state == BluetoothAdapter.STATE_DISCONNECTED)) {
mExecutor.execute(() -> init());
}
}
@@ -92,7 +117,7 @@
SOURCE_ADDED,
}
- private final Executor mExecutor;
+ @VisibleForTesting Executor mExecutor;
private final AudioStreamsProgressCategoryCallback mBroadcastAssistantCallback;
private final AudioStreamsHelper mAudioStreamsHelper;
private final MediaControlHelper mMediaControlHelper;
@@ -103,7 +128,7 @@
private @Nullable BluetoothLeBroadcastMetadata mSourceFromQrCode;
private SourceOriginForLogging mSourceFromQrCodeOriginForLogging;
@Nullable private AudioStreamsProgressCategoryPreference mCategoryPreference;
- @Nullable private AudioStreamsDashboardFragment mFragment;
+ @Nullable private Fragment mFragment;
public AudioStreamsProgressCategoryController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -142,12 +167,12 @@
mExecutor.execute(this::stopScanning);
}
- void setFragment(AudioStreamsDashboardFragment fragment) {
+ void setFragment(Fragment fragment) {
mFragment = fragment;
}
@Nullable
- AudioStreamsDashboardFragment getFragment() {
+ Fragment getFragment() {
return mFragment;
}
@@ -546,7 +571,8 @@
return preference;
}
- private void moveToState(AudioStreamPreference preference, AudioStreamState state) {
+ @VisibleForTesting
+ void moveToState(AudioStreamPreference preference, AudioStreamState state) {
AudioStreamStateHandler stateHandler =
switch (state) {
case SYNCED -> SyncedState.getInstance();
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java
index 5f50be7..d0d82fb 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeController.java
@@ -16,6 +16,7 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
import android.util.Log;
@@ -47,9 +48,13 @@
final BluetoothCallback mBluetoothCallback =
new BluetoothCallback() {
@Override
- public void onActiveDeviceChanged(
- @Nullable CachedBluetoothDevice activeDevice, int bluetoothProfile) {
- if (bluetoothProfile == BluetoothProfile.LE_AUDIO) {
+ public void onProfileConnectionStateChanged(
+ @NonNull CachedBluetoothDevice cachedDevice,
+ @ConnectionState int state,
+ int bluetoothProfile) {
+ if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT
+ && (state == BluetoothAdapter.STATE_CONNECTED
+ || state == BluetoothAdapter.STATE_DISCONNECTED)) {
updateVisibility();
}
}
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedState.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedState.java
index ee84429..88393ab 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedState.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedState.java
@@ -25,6 +25,7 @@
import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
class SourceAddedState extends AudioStreamStateHandler {
@VisibleForTesting
@@ -32,7 +33,8 @@
@Nullable private static SourceAddedState sInstance = null;
- private SourceAddedState() {}
+ @VisibleForTesting
+ SourceAddedState() {}
static SourceAddedState getInstance() {
if (sInstance == null) {
@@ -80,13 +82,13 @@
AudioStreamDetailsFragment.BROADCAST_ID_ARG, p.getAudioStreamBroadcastId());
new SubSettingLauncher(p.getContext())
- .setTitleText(
- p.getContext().getString(R.string.audio_streams_detail_page_title))
+ .setTitleRes(R.string.audio_streams_detail_page_title)
.setDestination(AudioStreamDetailsFragment.class.getName())
.setSourceMetricsCategory(
- controller.getFragment() == null
+ !(controller.getFragment() instanceof DashboardFragment)
? SettingsEnums.PAGE_UNKNOWN
- : controller.getFragment().getMetricsCategory())
+ : ((DashboardFragment) controller.getFragment())
+ .getMetricsCategory())
.setArguments(broadcast)
.launch();
return true;
diff --git a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java
index 55f61fd..9689b26 100644
--- a/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java
+++ b/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncState.java
@@ -39,7 +39,8 @@
@Nullable private static WaitForSyncState sInstance = null;
- private WaitForSyncState() {}
+ @VisibleForTesting
+ WaitForSyncState() {}
static WaitForSyncState getInstance() {
if (sInstance == null) {
@@ -114,7 +115,8 @@
SettingsEnums.DIALOG_AUDIO_STREAM_MAIN_WAIT_FOR_SYNC_TIMEOUT);
}
- private void launchQrCodeScanFragment(Context context, Fragment fragment) {
+ @VisibleForTesting
+ void launchQrCodeScanFragment(Context context, Fragment fragment) {
new SubSettingLauncher(context)
.setTitleRes(R.string.audio_streams_main_page_scan_qr_code_title)
.setDestination(AudioStreamsQrCodeScanFragment.class.getName())
diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java
new file mode 100644
index 0000000..09f8e92
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java
@@ -0,0 +1,544 @@
+/*
+ * 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.connecteddevice.display;
+
+
+import static android.view.Display.INVALID_DISPLAY;
+
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isUseDisplaySettingEnabled;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isResolutionSettingEnabled;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isRotationSettingEnabled;
+
+import android.app.Activity;
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.Display;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragmentBase;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DisplayListener;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.Injector;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.widget.FooterPreference;
+import com.android.settingslib.widget.IllustrationPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
+import com.android.settingslib.widget.TwoTargetPreference;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The Settings screen for External Displays configuration and connection management.
+ */
+@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
+public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmentBase
+ implements Indexable {
+ static final int EXTERNAL_DISPLAY_SETTINGS_RESOURCE = R.xml.external_display_settings;
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(EXTERNAL_DISPLAY_SETTINGS_RESOURCE);
+ static final String DISPLAYS_LIST_PREFERENCE_KEY = "displays_list_preference";
+ static final String EXTERNAL_DISPLAY_USE_PREFERENCE_KEY = "external_display_use_preference";
+ static final String EXTERNAL_DISPLAY_ROTATION_KEY = "external_display_rotation";
+ static final String EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY = "external_display_resolution";
+ static final int EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE =
+ R.string.external_display_change_resolution_footer_title;
+ static final int EXTERNAL_DISPLAY_LANDSCAPE_DRAWABLE =
+ R.drawable.external_display_mirror_landscape;
+ static final int EXTERANAL_DISPLAY_TITLE_RESOURCE =
+ R.string.external_display_settings_title;
+ static final int EXTERNAL_DISPLAY_USE_TITLE_RESOURCE =
+ R.string.external_display_use_title;
+ static final int EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE =
+ R.string.external_display_not_found_footer_title;
+ static final int EXTERNAL_DISPLAY_PORTRAIT_DRAWABLE =
+ R.drawable.external_display_mirror_portrait;
+ static final int EXTERNAL_DISPLAY_ROTATION_TITLE_RESOURCE =
+ R.string.external_display_rotation;
+ static final int EXTERNAL_DISPLAY_RESOLUTION_TITLE_RESOURCE =
+ R.string.external_display_resolution_settings_title;
+ @VisibleForTesting
+ static final String PREVIOUSLY_SHOWN_LIST_KEY = "mPreviouslyShownListOfDisplays";
+ private boolean mStarted;
+ @Nullable
+ private MainSwitchPreference mUseDisplayPref;
+ @Nullable
+ private IllustrationPreference mImagePreference;
+ @Nullable
+ private Preference mResolutionPreference;
+ @Nullable
+ private ListPreference mRotationPref;
+ @Nullable
+ private FooterPreference mFooterPreference;
+ @Nullable
+ private PreferenceCategory mDisplaysPreference;
+ @Nullable
+ private Injector mInjector;
+ @Nullable
+ private String[] mRotationEntries;
+ @Nullable
+ private String[] mRotationEntriesValues;
+ @NonNull
+ private final Runnable mUpdateRunnable = this::update;
+ private final DisplayListener mListener = new DisplayListener() {
+ @Override
+ public void update(int displayId) {
+ scheduleUpdate();
+ }
+ };
+ private boolean mPreviouslyShownListOfDisplays;
+
+ public ExternalDisplayPreferenceFragment() {}
+
+ @VisibleForTesting
+ ExternalDisplayPreferenceFragment(@NonNull Injector injector) {
+ mInjector = injector;
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY;
+ }
+
+ @Override
+ public int getHelpResource() {
+ return EXTERNAL_DISPLAY_HELP_URL;
+ }
+
+ @Override
+ public void onSaveInstanceStateCallback(@NonNull Bundle outState) {
+ outState.putSerializable(PREVIOUSLY_SHOWN_LIST_KEY,
+ (Serializable) mPreviouslyShownListOfDisplays);
+ }
+
+ @Override
+ public void onCreateCallback(@Nullable Bundle icicle) {
+ if (mInjector == null) {
+ mInjector = new Injector(getPrefContext());
+ }
+ addPreferencesFromResource(EXTERNAL_DISPLAY_SETTINGS_RESOURCE);
+ }
+
+ @Override
+ public void onActivityCreatedCallback(@Nullable Bundle savedInstanceState) {
+ restoreState(savedInstanceState);
+ View view = getView();
+ TextView emptyView = null;
+ if (view != null) {
+ emptyView = (TextView) view.findViewById(android.R.id.empty);
+ }
+ if (emptyView != null) {
+ emptyView.setText(EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE);
+ setEmptyView(emptyView);
+ }
+ }
+
+ @Override
+ public void onStartCallback() {
+ mStarted = true;
+ if (mInjector == null) {
+ return;
+ }
+ mInjector.registerDisplayListener(mListener);
+ scheduleUpdate();
+ }
+
+ @Override
+ public void onStopCallback() {
+ mStarted = false;
+ if (mInjector == null) {
+ return;
+ }
+ mInjector.unregisterDisplayListener(mListener);
+ unscheduleUpdate();
+ }
+
+ /**
+ * @return id of the preference.
+ */
+ @Override
+ protected int getPreferenceScreenResId() {
+ return EXTERNAL_DISPLAY_SETTINGS_RESOURCE;
+ }
+
+ @VisibleForTesting
+ protected void launchResolutionSelector(@NonNull final Context context, final int displayId) {
+ final Bundle args = new Bundle();
+ args.putInt(DISPLAY_ID_ARG, displayId);
+ new SubSettingLauncher(context)
+ .setDestination(ResolutionPreferenceFragment.class.getName())
+ .setArguments(args)
+ .setSourceMetricsCategory(getMetricsCategory()).launch();
+ }
+
+ @VisibleForTesting
+ protected void launchDisplaySettings(final int displayId) {
+ final Bundle args = new Bundle();
+ var context = getPrefContext();
+ args.putInt(DISPLAY_ID_ARG, displayId);
+ new SubSettingLauncher(context)
+ .setDestination(this.getClass().getName())
+ .setArguments(args)
+ .setSourceMetricsCategory(getMetricsCategory()).launch();
+ }
+
+ /**
+ * Returns the preference for the footer.
+ */
+ @NonNull
+ @VisibleForTesting
+ FooterPreference getFooterPreference(@NonNull Context context) {
+ if (mFooterPreference == null) {
+ mFooterPreference = new FooterPreference(context);
+ mFooterPreference.setPersistent(false);
+ }
+ return mFooterPreference;
+ }
+
+ @NonNull
+ @VisibleForTesting
+ ListPreference getRotationPreference(@NonNull Context context) {
+ if (mRotationPref == null) {
+ mRotationPref = new ListPreference(context);
+ mRotationPref.setPersistent(false);
+ }
+ return mRotationPref;
+ }
+
+ @NonNull
+ @VisibleForTesting
+ Preference getResolutionPreference(@NonNull Context context) {
+ if (mResolutionPreference == null) {
+ mResolutionPreference = new Preference(context);
+ mResolutionPreference.setPersistent(false);
+ }
+ return mResolutionPreference;
+ }
+
+ @NonNull
+ @VisibleForTesting
+ MainSwitchPreference getUseDisplayPreference(@NonNull Context context) {
+ if (mUseDisplayPref == null) {
+ mUseDisplayPref = new MainSwitchPreference(context);
+ mUseDisplayPref.setPersistent(false);
+ }
+ return mUseDisplayPref;
+ }
+
+ @NonNull
+ @VisibleForTesting
+ IllustrationPreference getIllustrationPreference(@NonNull Context context) {
+ if (mImagePreference == null) {
+ mImagePreference = new IllustrationPreference(context);
+ mImagePreference.setPersistent(false);
+ }
+ return mImagePreference;
+ }
+
+ /**
+ * @return return display id argument of this settings page.
+ */
+ @VisibleForTesting
+ protected int getDisplayIdArg() {
+ var args = getArguments();
+ return args != null ? args.getInt(DISPLAY_ID_ARG, INVALID_DISPLAY) : INVALID_DISPLAY;
+ }
+
+ @NonNull
+ private PreferenceCategory getDisplaysListPreference(@NonNull Context context) {
+ if (mDisplaysPreference == null) {
+ mDisplaysPreference = new PreferenceCategory(context);
+ mDisplaysPreference.setPersistent(false);
+ }
+ return mDisplaysPreference;
+ }
+
+ private void restoreState(@Nullable Bundle savedInstanceState) {
+ if (savedInstanceState == null) {
+ return;
+ }
+ mPreviouslyShownListOfDisplays = Boolean.TRUE.equals(savedInstanceState.getSerializable(
+ PREVIOUSLY_SHOWN_LIST_KEY, Boolean.class));
+ }
+
+ private void update() {
+ final var screen = getPreferenceScreen();
+ if (screen == null || mInjector == null || mInjector.getContext() == null) {
+ return;
+ }
+ screen.removeAll();
+ updateScreenForDisplayId(getDisplayIdArg(), screen, mInjector.getContext());
+ }
+
+ private void updateScreenForDisplayId(final int displayId,
+ @NonNull final PreferenceScreen screen, @NonNull Context context) {
+ final var displaysToShow = getDisplaysToShow(displayId);
+ if (displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) {
+ showTextWhenNoDisplaysToShow(screen, context);
+ } else if (displaysToShow.size() == 1
+ && ((displayId == INVALID_DISPLAY && !mPreviouslyShownListOfDisplays)
+ || displaysToShow.get(0).getDisplayId() == displayId)) {
+ showDisplaySettings(displaysToShow.get(0), screen, context);
+ } else if (displayId == INVALID_DISPLAY) {
+ // If ever shown a list of displays - keep showing it for consistency after
+ // disconnecting one of the displays, and only one display is left.
+ mPreviouslyShownListOfDisplays = true;
+ showDisplaysList(displaysToShow, screen, context);
+ }
+ updateSettingsTitle(displaysToShow, displayId);
+ }
+
+ private void updateSettingsTitle(@NonNull final List<Display> displaysToShow, int displayId) {
+ final Activity activity = getCurrentActivity();
+ if (activity == null) {
+ return;
+ }
+ if (displaysToShow.size() == 1 && displaysToShow.get(0).getDisplayId() == displayId) {
+ var displayName = displaysToShow.get(0).getName();
+ if (!displayName.isEmpty()) {
+ activity.setTitle(displayName.substring(0, Math.min(displayName.length(), 40)));
+ return;
+ }
+ }
+ activity.setTitle(EXTERANAL_DISPLAY_TITLE_RESOURCE);
+ }
+
+ private void showTextWhenNoDisplaysToShow(@NonNull final PreferenceScreen screen,
+ @NonNull Context context) {
+ if (isUseDisplaySettingEnabled(mInjector)) {
+ screen.addPreference(updateUseDisplayPreferenceNoDisplaysFound(context));
+ }
+ screen.addPreference(updateFooterPreference(context,
+ EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE));
+ }
+
+ private void showDisplaySettings(@NonNull Display display, @NonNull PreferenceScreen screen,
+ @NonNull Context context) {
+ final var isEnabled = mInjector != null && mInjector.isDisplayEnabled(display);
+ if (isUseDisplaySettingEnabled(mInjector)) {
+ screen.addPreference(updateUseDisplayPreference(context, display, isEnabled));
+ }
+ if (!isEnabled) {
+ // Skip all other settings
+ return;
+ }
+ final var displayRotation = getDisplayRotation(display.getDisplayId());
+ screen.addPreference(updateIllustrationImage(context, displayRotation));
+ screen.addPreference(updateResolutionPreference(context, display));
+ screen.addPreference(updateRotationPreference(context, display, displayRotation));
+ if (isResolutionSettingEnabled(mInjector)) {
+ screen.addPreference(updateFooterPreference(context,
+ EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE));
+ }
+ }
+
+ private void showDisplaysList(@NonNull List<Display> displaysToShow,
+ @NonNull PreferenceScreen screen, @NonNull Context context) {
+ var pref = getDisplaysListPreference(context);
+ pref.setKey(DISPLAYS_LIST_PREFERENCE_KEY);
+ pref.removeAll();
+ if (!displaysToShow.isEmpty()) {
+ screen.addPreference(pref);
+ }
+ for (var display : displaysToShow) {
+ pref.addPreference(new DisplayPreference(context, display));
+ }
+ }
+
+ private List<Display> getDisplaysToShow(int displayIdToShow) {
+ if (mInjector == null) {
+ return List.of();
+ }
+ if (displayIdToShow != INVALID_DISPLAY) {
+ var display = mInjector.getDisplay(displayIdToShow);
+ if (display != null && isDisplayAllowed(display, mInjector)) {
+ return List.of(display);
+ }
+ }
+ var displaysToShow = new ArrayList<Display>();
+ for (var display : mInjector.getAllDisplays()) {
+ if (display != null && isDisplayAllowed(display, mInjector)) {
+ displaysToShow.add(display);
+ }
+ }
+ return displaysToShow;
+ }
+
+ private Preference updateUseDisplayPreferenceNoDisplaysFound(@NonNull Context context) {
+ final var pref = getUseDisplayPreference(context);
+ pref.setKey(EXTERNAL_DISPLAY_USE_PREFERENCE_KEY);
+ pref.setTitle(EXTERNAL_DISPLAY_USE_TITLE_RESOURCE);
+ pref.setChecked(false);
+ pref.setEnabled(false);
+ pref.setOnPreferenceChangeListener(null);
+ return pref;
+ }
+
+ private Preference updateUseDisplayPreference(@NonNull final Context context,
+ @NonNull final Display display, boolean isEnabled) {
+ final var pref = getUseDisplayPreference(context);
+ pref.setKey(EXTERNAL_DISPLAY_USE_PREFERENCE_KEY);
+ pref.setTitle(EXTERNAL_DISPLAY_USE_TITLE_RESOURCE);
+ pref.setChecked(isEnabled);
+ pref.setEnabled(true);
+ pref.setOnPreferenceChangeListener((p, newValue) -> {
+ writePreferenceClickMetric(p);
+ final boolean result;
+ if (mInjector == null) {
+ return false;
+ }
+ if ((Boolean) newValue) {
+ result = mInjector.enableConnectedDisplay(display.getDisplayId());
+ } else {
+ result = mInjector.disableConnectedDisplay(display.getDisplayId());
+ }
+ if (result) {
+ pref.setChecked((Boolean) newValue);
+ }
+ return result;
+ });
+ return pref;
+ }
+
+ private Preference updateIllustrationImage(@NonNull final Context context,
+ final int displayRotation) {
+ var pref = getIllustrationPreference(context);
+ if (displayRotation % 2 == 0) {
+ pref.setLottieAnimationResId(EXTERNAL_DISPLAY_PORTRAIT_DRAWABLE);
+ } else {
+ pref.setLottieAnimationResId(EXTERNAL_DISPLAY_LANDSCAPE_DRAWABLE);
+ }
+ return pref;
+ }
+
+ private Preference updateFooterPreference(@NonNull final Context context, final int title) {
+ var pref = getFooterPreference(context);
+ pref.setTitle(title);
+ return pref;
+ }
+
+ private Preference updateRotationPreference(@NonNull final Context context,
+ @NonNull final Display display, final int displayRotation) {
+ var pref = getRotationPreference(context);
+ pref.setKey(EXTERNAL_DISPLAY_ROTATION_KEY);
+ pref.setTitle(EXTERNAL_DISPLAY_ROTATION_TITLE_RESOURCE);
+ if (mRotationEntries == null || mRotationEntriesValues == null) {
+ mRotationEntries = new String[] {
+ context.getString(R.string.external_display_standard_rotation),
+ context.getString(R.string.external_display_rotation_90),
+ context.getString(R.string.external_display_rotation_180),
+ context.getString(R.string.external_display_rotation_270)};
+ mRotationEntriesValues = new String[] {"0", "1", "2", "3"};
+ }
+ pref.setEntries(mRotationEntries);
+ pref.setEntryValues(mRotationEntriesValues);
+ pref.setValueIndex(displayRotation);
+ pref.setSummary(mRotationEntries[displayRotation]);
+ pref.setOnPreferenceChangeListener((p, newValue) -> {
+ writePreferenceClickMetric(p);
+ var rotation = Integer.parseInt((String) newValue);
+ var displayId = display.getDisplayId();
+ if (mInjector == null || !mInjector.freezeDisplayRotation(displayId, rotation)) {
+ return false;
+ }
+ pref.setValueIndex(rotation);
+ return true;
+ });
+ pref.setEnabled(isRotationSettingEnabled(mInjector));
+ return pref;
+ }
+
+ private Preference updateResolutionPreference(@NonNull final Context context,
+ @NonNull final Display display) {
+ var pref = getResolutionPreference(context);
+ pref.setKey(EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY);
+ pref.setTitle(EXTERNAL_DISPLAY_RESOLUTION_TITLE_RESOURCE);
+ pref.setSummary(display.getMode().getPhysicalWidth() + " x "
+ + display.getMode().getPhysicalHeight());
+ pref.setOnPreferenceClickListener((Preference p) -> {
+ writePreferenceClickMetric(p);
+ launchResolutionSelector(context, display.getDisplayId());
+ return true;
+ });
+ pref.setEnabled(isResolutionSettingEnabled(mInjector));
+ return pref;
+ }
+
+ private int getDisplayRotation(int displayId) {
+ if (mInjector == null) {
+ return 0;
+ }
+ return Math.min(3, Math.max(0, mInjector.getDisplayUserRotation(displayId)));
+ }
+
+ private void scheduleUpdate() {
+ if (mInjector == null || !mStarted) {
+ return;
+ }
+ unscheduleUpdate();
+ mInjector.getHandler().post(mUpdateRunnable);
+ }
+
+ private void unscheduleUpdate() {
+ if (mInjector == null || !mStarted) {
+ return;
+ }
+ mInjector.getHandler().removeCallbacks(mUpdateRunnable);
+ }
+
+ @VisibleForTesting
+ class DisplayPreference extends TwoTargetPreference
+ implements Preference.OnPreferenceClickListener {
+ private final int mDisplayId;
+
+ DisplayPreference(@NonNull final Context context, @NonNull final Display display) {
+ super(context);
+ mDisplayId = display.getDisplayId();
+ setPersistent(false);
+ setKey("display_id_" + mDisplayId);
+ setTitle(display.getName());
+ setSummary(display.getMode().getPhysicalWidth() + " x "
+ + display.getMode().getPhysicalHeight());
+ setOnPreferenceClickListener(this);
+ }
+
+ @Override
+ public boolean onPreferenceClick(@NonNull Preference preference) {
+ launchDisplaySettings(mDisplayId);
+ writePreferenceClickMetric(preference);
+ return true;
+ }
+ }
+}
diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java
new file mode 100644
index 0000000..89d464c
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java
@@ -0,0 +1,341 @@
+/*
+ * 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.connecteddevice.display;
+
+import static android.content.Context.DISPLAY_SERVICE;
+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.view.Display.INVALID_DISPLAY;
+
+import android.content.Context;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.DisplayManagerGlobal;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.os.SystemProperties;
+import android.view.Display;
+import android.view.Display.Mode;
+import android.view.IWindowManager;
+import android.view.WindowManagerGlobal;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.settings.R;
+import com.android.settings.flags.FeatureFlags;
+import com.android.settings.flags.FeatureFlagsImpl;
+
+public class ExternalDisplaySettingsConfiguration {
+ static final String VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY =
+ "persist.demo.userrotation.package_name";
+ static final String DISPLAY_ID_ARG = "display_id";
+ static final int EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE = R.string.external_display_not_found;
+ static final int EXTERNAL_DISPLAY_HELP_URL = R.string.help_url_external_display;
+
+ public static class SystemServicesProvider {
+ @Nullable
+ private IWindowManager mWindowManager;
+ @Nullable
+ private DisplayManager mDisplayManager;
+ @Nullable
+ protected Context mContext;
+ /**
+ * @param name of a system property.
+ * @return the value of the system property.
+ */
+ @NonNull
+ public String getSystemProperty(@NonNull String name) {
+ return SystemProperties.get(name);
+ }
+
+ /**
+ * @return return public Display manager.
+ */
+ @Nullable
+ public DisplayManager getDisplayManager() {
+ if (mDisplayManager == null && getContext() != null) {
+ mDisplayManager = (DisplayManager) getContext().getSystemService(DISPLAY_SERVICE);
+ }
+ return mDisplayManager;
+ }
+
+ /**
+ * @return internal IWindowManager
+ */
+ @Nullable
+ public IWindowManager getWindowManager() {
+ if (mWindowManager == null) {
+ mWindowManager = WindowManagerGlobal.getWindowManagerService();
+ }
+ return mWindowManager;
+ }
+
+ /**
+ * @return context.
+ */
+ @Nullable
+ public Context getContext() {
+ return mContext;
+ }
+ }
+
+ public static class Injector extends SystemServicesProvider {
+ @NonNull
+ private final FeatureFlags mFlags;
+ @NonNull
+ private final Handler mHandler;
+
+ Injector(@Nullable Context context) {
+ this(context, new FeatureFlagsImpl(), new Handler(Looper.getMainLooper()));
+ }
+
+ Injector(@Nullable Context context, @NonNull FeatureFlags flags, @NonNull Handler handler) {
+ mContext = context;
+ mFlags = flags;
+ mHandler = handler;
+ }
+
+ /**
+ * @return all displays including disabled.
+ */
+ @NonNull
+ public Display[] getAllDisplays() {
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return new Display[0];
+ }
+ return dm.getDisplays(DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED);
+ }
+
+ /**
+ * @return enabled displays only.
+ */
+ @NonNull
+ public Display[] getEnabledDisplays() {
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return new Display[0];
+ }
+ return dm.getDisplays();
+ }
+
+ /**
+ * @return true if the display is enabled
+ */
+ public boolean isDisplayEnabled(@NonNull Display display) {
+ for (var enabledDisplay : getEnabledDisplays()) {
+ if (enabledDisplay.getDisplayId() == display.getDisplayId()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Register display listener.
+ */
+ public void registerDisplayListener(@NonNull DisplayManager.DisplayListener listener) {
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return;
+ }
+ dm.registerDisplayListener(listener, mHandler, EVENT_FLAG_DISPLAY_ADDED
+ | EVENT_FLAG_DISPLAY_CHANGED | EVENT_FLAG_DISPLAY_REMOVED
+ | EVENT_FLAG_DISPLAY_CONNECTION_CHANGED);
+ }
+
+ /**
+ * Unregister display listener.
+ */
+ public void unregisterDisplayListener(@NonNull DisplayManager.DisplayListener listener) {
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return;
+ }
+ dm.unregisterDisplayListener(listener);
+ }
+
+ /**
+ * @return feature flags.
+ */
+ @NonNull
+ public FeatureFlags getFlags() {
+ return mFlags;
+ }
+
+ /**
+ * Enable connected display.
+ */
+ public boolean enableConnectedDisplay(int displayId) {
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return false;
+ }
+ dm.enableConnectedDisplay(displayId);
+ return true;
+ }
+
+ /**
+ * Disable connected display.
+ */
+ public boolean disableConnectedDisplay(int displayId) {
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return false;
+ }
+ dm.disableConnectedDisplay(displayId);
+ return true;
+ }
+
+ /**
+ * @param displayId which must be returned
+ * @return display object for the displayId
+ */
+ @Nullable
+ public Display getDisplay(int displayId) {
+ if (displayId == INVALID_DISPLAY) {
+ return null;
+ }
+ var dm = getDisplayManager();
+ if (dm == null) {
+ return null;
+ }
+ return dm.getDisplay(displayId);
+ }
+
+ /**
+ * @return handler
+ */
+ @NonNull
+ public Handler getHandler() {
+ return mHandler;
+ }
+
+ /**
+ * Get display rotation
+ * @param displayId display identifier
+ * @return rotation
+ */
+ public int getDisplayUserRotation(int displayId) {
+ var wm = getWindowManager();
+ if (wm == null) {
+ return 0;
+ }
+ try {
+ return wm.getDisplayUserRotation(displayId);
+ } catch (RemoteException e) {
+ return 0;
+ }
+ }
+
+ /**
+ * Freeze rotation of the display in the specified rotation.
+ * @param displayId display identifier
+ * @param rotation [0, 1, 2, 3]
+ * @return true if successful
+ */
+ public boolean freezeDisplayRotation(int displayId, int rotation) {
+ var wm = getWindowManager();
+ if (wm == null) {
+ return false;
+ }
+ try {
+ wm.freezeDisplayRotation(displayId, rotation,
+ "ExternalDisplayPreferenceFragment");
+ return true;
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Enforce display mode on the given display.
+ */
+ public void setUserPreferredDisplayMode(int displayId, @NonNull Mode mode) {
+ DisplayManagerGlobal.getInstance().setUserPreferredDisplayMode(displayId, mode);
+ }
+ }
+
+ public abstract static class DisplayListener implements DisplayManager.DisplayListener {
+ @Override
+ public void onDisplayAdded(int displayId) {
+ update(displayId);
+ }
+
+ @Override
+ public void onDisplayRemoved(int displayId) {
+ update(displayId);
+ }
+
+ @Override
+ public void onDisplayChanged(int displayId) {
+ update(displayId);
+ }
+
+ @Override
+ public void onDisplayConnected(int displayId) {
+ update(displayId);
+ }
+
+ @Override
+ public void onDisplayDisconnected(int displayId) {
+ update(displayId);
+ }
+
+ /**
+ * Called from other listener methods to trigger update of the settings page.
+ */
+ public abstract void update(int displayId);
+ }
+
+ /**
+ * @return whether the settings page is enabled or not.
+ */
+ public static boolean isExternalDisplaySettingsPageEnabled(@NonNull FeatureFlags flags) {
+ return flags.rotationConnectedDisplaySetting()
+ || flags.resolutionAndEnableConnectedDisplaySetting();
+ }
+
+ static boolean isDisplayAllowed(@NonNull Display display,
+ @NonNull SystemServicesProvider props) {
+ return display.getType() == Display.TYPE_EXTERNAL
+ || display.getType() == Display.TYPE_OVERLAY
+ || isVirtualDisplayAllowed(display, props);
+ }
+
+ static boolean isVirtualDisplayAllowed(@NonNull Display display,
+ @NonNull SystemServicesProvider properties) {
+ var sysProp = properties.getSystemProperty(VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY);
+ return !sysProp.isEmpty() && display.getType() == Display.TYPE_VIRTUAL
+ && sysProp.equals(display.getOwnerPackageName());
+ }
+
+ static boolean isUseDisplaySettingEnabled(@Nullable Injector injector) {
+ return injector != null && injector.getFlags().resolutionAndEnableConnectedDisplaySetting();
+ }
+
+ static boolean isResolutionSettingEnabled(@Nullable Injector injector) {
+ return injector != null && injector.getFlags().resolutionAndEnableConnectedDisplaySetting();
+ }
+
+ static boolean isRotationSettingEnabled(@Nullable Injector injector) {
+ return injector != null && injector.getFlags().rotationConnectedDisplaySetting();
+ }
+}
diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java
new file mode 100644
index 0000000..64dd7bb
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java
@@ -0,0 +1,181 @@
+/*
+ * 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.connecteddevice.display;
+
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.connecteddevice.DevicePreferenceCallback;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DisplayListener;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.Injector;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedPreference;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+
+public class ExternalDisplayUpdater {
+
+ private static final String PREF_KEY = "external_display_settings";
+ private final int mMetricsCategory;
+ @NonNull
+ private final MetricsFeatureProvider mMetricsFeatureProvider;
+ @NonNull
+ private final Runnable mUpdateRunnable = this::update;
+ @NonNull
+ private final DevicePreferenceCallback mDevicePreferenceCallback;
+ @Nullable
+ private RestrictedPreference mPreference;
+ @Nullable
+ private Injector mInjector;
+ private final DisplayListener mListener = new DisplayListener() {
+ @Override
+ public void update(int displayId) {
+ scheduleUpdate();
+ }
+ };
+
+ public ExternalDisplayUpdater(@NonNull DevicePreferenceCallback callback, int metricsCategory) {
+ mDevicePreferenceCallback = callback;
+ mMetricsCategory = metricsCategory;
+ mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
+ }
+
+ /**
+ * Set the context to generate the {@link Preference}, so it could get the correct theme.
+ */
+ public void initPreference(@NonNull Context context) {
+ initPreference(context, new Injector(context));
+ }
+
+ @VisibleForTesting
+ void initPreference(@NonNull Context context, Injector injector) {
+ mInjector = injector;
+ mPreference = new RestrictedPreference(context, null /* AttributeSet */);
+ mPreference.setTitle(R.string.external_display_settings_title);
+ mPreference.setSummary(getSummary());
+ mPreference.setIcon(getDrawable(context));
+ mPreference.setKey(PREF_KEY);
+ mPreference.setDisabledByAdmin(checkIfUsbDataSignalingIsDisabled(context));
+ mPreference.setOnPreferenceClickListener((Preference p) -> {
+ mMetricsFeatureProvider.logClickedPreference(p, mMetricsCategory);
+ // New version - uses a separate screen.
+ new SubSettingLauncher(context)
+ .setDestination(ExternalDisplayPreferenceFragment.class.getName())
+ .setTitleRes(R.string.external_display_settings_title)
+ .setSourceMetricsCategory(mMetricsCategory)
+ .launch();
+ return true;
+ });
+
+ scheduleUpdate();
+ }
+
+ /**
+ * Unregister the display listener.
+ */
+ public void unregisterCallback() {
+ if (mInjector != null) {
+ mInjector.unregisterDisplayListener(mListener);
+ }
+ }
+
+ /**
+ * Register the display listener.
+ */
+ public void registerCallback() {
+ if (mInjector != null) {
+ mInjector.registerDisplayListener(mListener);
+ }
+ }
+
+ @VisibleForTesting
+ @Nullable
+ protected RestrictedLockUtils.EnforcedAdmin checkIfUsbDataSignalingIsDisabled(Context context) {
+ return RestrictedLockUtilsInternal.checkIfUsbDataSignalingIsDisabled(context,
+ UserHandle.myUserId());
+ }
+
+ @VisibleForTesting
+ @Nullable
+ protected Drawable getDrawable(Context context) {
+ return context.getDrawable(R.drawable.ic_external_display_32dp);
+ }
+
+ @Nullable
+ protected CharSequence getSummary() {
+ if (mInjector == null) {
+ return null;
+ }
+ var context = mInjector.getContext();
+ if (context == null) {
+ return null;
+ }
+
+ for (var display : mInjector.getEnabledDisplays()) {
+ if (display != null && isDisplayAllowed(display, mInjector)) {
+ return context.getString(R.string.external_display_on);
+ }
+ }
+
+ for (var display : mInjector.getAllDisplays()) {
+ if (display != null && isDisplayAllowed(display, mInjector)) {
+ return context.getString(R.string.external_display_off);
+ }
+ }
+
+ return null;
+ }
+
+ private void scheduleUpdate() {
+ if (mInjector == null) {
+ return;
+ }
+ unscheduleUpdate();
+ mInjector.getHandler().post(mUpdateRunnable);
+ }
+
+ private void unscheduleUpdate() {
+ if (mInjector == null) {
+ return;
+ }
+ mInjector.getHandler().removeCallbacks(mUpdateRunnable);
+ }
+
+ private void update() {
+ var summary = getSummary();
+ if (mPreference == null) {
+ return;
+ }
+ mPreference.setSummary(summary);
+ if (summary != null) {
+ mDevicePreferenceCallback.onDeviceAdded(mPreference);
+ } else {
+ mDevicePreferenceCallback.onDeviceRemoved(mPreference);
+ }
+ }
+}
diff --git a/src/com/android/settings/connecteddevice/display/OWNERS b/src/com/android/settings/connecteddevice/display/OWNERS
new file mode 100644
index 0000000..78aecb9
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/display/OWNERS
@@ -0,0 +1,7 @@
+# Default reviewers for this and subdirectories.
+santoscordon@google.com
+petsjonkin@google.com
+flc@google.com
+wilczynskip@google.com
+brup@google.com
+olb@google.com
diff --git a/src/com/android/settings/connecteddevice/display/ResolutionPreferenceFragment.java b/src/com/android/settings/connecteddevice/display/ResolutionPreferenceFragment.java
new file mode 100644
index 0000000..10314cb
--- /dev/null
+++ b/src/com/android/settings/connecteddevice/display/ResolutionPreferenceFragment.java
@@ -0,0 +1,343 @@
+/*
+ * 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.connecteddevice.display;
+
+import static android.view.Display.INVALID_DISPLAY;
+
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Log;
+import android.util.Pair;
+import android.view.Display;
+import android.view.Display.Mode;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
+
+import com.android.internal.util.ToBooleanFunction;
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragmentBase;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DisplayListener;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.Injector;
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+
+public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase {
+ private static final String TAG = "ResolutionPreferenceFragment";
+ static final int DEFAULT_LOW_REFRESH_RATE = 60;
+ static final String MORE_OPTIONS_KEY = "more_options";
+ static final String TOP_OPTIONS_KEY = "top_options";
+ static final int MORE_OPTIONS_TITLE_RESOURCE =
+ R.string.external_display_more_options_title;
+ static final int EXTERNAL_DISPLAY_RESOLUTION_SETTINGS_RESOURCE =
+ R.xml.external_display_resolution_settings;
+ @Nullable
+ private Injector mInjector;
+ @Nullable
+ private PreferenceCategory mTopOptionsPreference;
+ @Nullable
+ private PreferenceCategory mMoreOptionsPreference;
+ private boolean mStarted;
+ private final HashSet<String> mResolutionPreferences = new HashSet<>();
+ private int mExternalDisplayPeakWidth;
+ private int mExternalDisplayPeakHeight;
+ private int mExternalDisplayPeakRefreshRate;
+ private boolean mRefreshRateSynchronizationEnabled;
+ private boolean mMoreOptionsExpanded;
+ private final Runnable mUpdateRunnable = this::update;
+ private final DisplayListener mListener = new DisplayListener() {
+ @Override
+ public void update(int displayId) {
+ scheduleUpdate();
+ }
+ };
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY;
+ }
+
+ @Override
+ public int getHelpResource() {
+ return EXTERNAL_DISPLAY_HELP_URL;
+ }
+
+ @Override
+ public void onCreateCallback(@Nullable Bundle icicle) {
+ if (mInjector == null) {
+ mInjector = new Injector(getPrefContext());
+ }
+ addPreferencesFromResource(EXTERNAL_DISPLAY_RESOLUTION_SETTINGS_RESOURCE);
+ updateDisplayModeLimits(mInjector.getContext());
+ }
+
+ @Override
+ public void onActivityCreatedCallback(@Nullable Bundle savedInstanceState) {
+ View view = getView();
+ TextView emptyView = null;
+ if (view != null) {
+ emptyView = (TextView) view.findViewById(android.R.id.empty);
+ }
+ if (emptyView != null) {
+ emptyView.setText(EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE);
+ setEmptyView(emptyView);
+ }
+ }
+
+ @Override
+ public void onStartCallback() {
+ mStarted = true;
+ if (mInjector == null) {
+ return;
+ }
+ mInjector.registerDisplayListener(mListener);
+ scheduleUpdate();
+ }
+
+ @Override
+ public void onStopCallback() {
+ mStarted = false;
+ if (mInjector == null) {
+ return;
+ }
+ mInjector.unregisterDisplayListener(mListener);
+ unscheduleUpdate();
+ }
+
+ public ResolutionPreferenceFragment() {}
+
+ @VisibleForTesting
+ ResolutionPreferenceFragment(@NonNull Injector injector) {
+ mInjector = injector;
+ }
+
+ @VisibleForTesting
+ protected int getDisplayIdArg() {
+ var args = getArguments();
+ return args != null ? args.getInt(DISPLAY_ID_ARG, INVALID_DISPLAY) : INVALID_DISPLAY;
+ }
+
+ @VisibleForTesting
+ @NonNull
+ protected Resources getResources(@NonNull Context context) {
+ return context.getResources();
+ }
+
+ private void update() {
+ final PreferenceScreen screen = getPreferenceScreen();
+ if (screen == null || mInjector == null) {
+ return;
+ }
+ var context = mInjector.getContext();
+ if (context == null) {
+ return;
+ }
+ var display = mInjector.getDisplay(getDisplayIdArg());
+ if (display == null || !isDisplayAllowed(display, mInjector)) {
+ screen.removeAll();
+ mTopOptionsPreference = null;
+ mMoreOptionsPreference = null;
+ return;
+ }
+ mResolutionPreferences.clear();
+ var remainingModes = addModePreferences(context,
+ getTopPreference(context, screen),
+ display.getSupportedModes(), this::isTopMode, display);
+ addRemainingPreferences(context,
+ getMorePreference(context, screen),
+ display, remainingModes.first, remainingModes.second);
+ }
+
+ private PreferenceCategory getTopPreference(@NonNull Context context,
+ @NonNull PreferenceScreen screen) {
+ if (mTopOptionsPreference == null) {
+ mTopOptionsPreference = new PreferenceCategory(context);
+ mTopOptionsPreference.setPersistent(false);
+ mTopOptionsPreference.setKey(TOP_OPTIONS_KEY);
+ screen.addPreference(mTopOptionsPreference);
+ } else {
+ mTopOptionsPreference.removeAll();
+ }
+ return mTopOptionsPreference;
+ }
+
+ private PreferenceCategory getMorePreference(@NonNull Context context,
+ @NonNull PreferenceScreen screen) {
+ if (mMoreOptionsPreference == null) {
+ mMoreOptionsPreference = new PreferenceCategory(context);
+ mMoreOptionsPreference.setPersistent(false);
+ mMoreOptionsPreference.setTitle(MORE_OPTIONS_TITLE_RESOURCE);
+ mMoreOptionsPreference.setOnExpandButtonClickListener(() -> {
+ mMoreOptionsExpanded = true;
+ });
+ mMoreOptionsPreference.setKey(MORE_OPTIONS_KEY);
+ screen.addPreference(mMoreOptionsPreference);
+ } else {
+ mMoreOptionsPreference.removeAll();
+ }
+ return mMoreOptionsPreference;
+ }
+
+ private void addRemainingPreferences(@NonNull Context context,
+ @NonNull PreferenceCategory group, @NonNull Display display,
+ boolean isSelectedModeFound, @NonNull Mode[] moreModes) {
+ if (moreModes.length == 0) {
+ return;
+ }
+ mMoreOptionsExpanded |= !isSelectedModeFound;
+ group.setInitialExpandedChildrenCount(mMoreOptionsExpanded ? Integer.MAX_VALUE : 0);
+ addModePreferences(context, group, moreModes, /*checkMode=*/ null, display);
+ }
+
+ private Pair<Boolean, Mode[]> addModePreferences(@NonNull Context context,
+ @NonNull PreferenceGroup group,
+ @NonNull Mode[] modes,
+ @Nullable ToBooleanFunction<Mode> checkMode,
+ @NonNull Display display) {
+ Display.Mode curMode = display.getMode();
+ var currentResolution = curMode.getPhysicalWidth() + "x" + curMode.getPhysicalHeight();
+ var rotatedResolution = curMode.getPhysicalHeight() + "x" + curMode.getPhysicalWidth();
+ var skippedModes = new ArrayList<Mode>();
+ var isAnyOfModesSelected = false;
+ for (var mode : modes) {
+ var modeStr = mode.getPhysicalWidth() + "x" + mode.getPhysicalHeight();
+ SelectorWithWidgetPreference pref = group.findPreference(modeStr);
+ if (pref != null) {
+ continue;
+ }
+ if (checkMode != null && !checkMode.apply(mode)) {
+ skippedModes.add(mode);
+ continue;
+ }
+ var isCurrentMode =
+ currentResolution.equals(modeStr) || rotatedResolution.equals(modeStr);
+ if (!isCurrentMode && !isAllowedMode(mode)) {
+ continue;
+ }
+ if (mResolutionPreferences.contains(modeStr)) {
+ // Added to "Top modes" already.
+ continue;
+ }
+ mResolutionPreferences.add(modeStr);
+ pref = new SelectorWithWidgetPreference(context);
+ pref.setPersistent(false);
+ pref.setKey(modeStr);
+ pref.setTitle(mode.getPhysicalWidth() + " x " + mode.getPhysicalHeight());
+ pref.setSingleLineTitle(true);
+ pref.setOnClickListener(preference -> onDisplayModeClicked(preference, display));
+ pref.setChecked(isCurrentMode);
+ isAnyOfModesSelected |= isCurrentMode;
+ group.addPreference(pref);
+ }
+ return new Pair<>(isAnyOfModesSelected, skippedModes.toArray(Mode.EMPTY_ARRAY));
+ }
+
+ private boolean isTopMode(@NonNull Mode mode) {
+ return mTopOptionsPreference != null
+ && mTopOptionsPreference.getPreferenceCount() < 3;
+ }
+
+ private boolean isAllowedMode(@NonNull Mode mode) {
+ if (mRefreshRateSynchronizationEnabled
+ && (mode.getRefreshRate() < DEFAULT_LOW_REFRESH_RATE - 1
+ || mode.getRefreshRate() > DEFAULT_LOW_REFRESH_RATE + 1)) {
+ Log.d(TAG, mode + " refresh rate is out of synchronization range");
+ return false;
+ }
+ if (mExternalDisplayPeakHeight > 0
+ && mode.getPhysicalHeight() > mExternalDisplayPeakHeight) {
+ Log.d(TAG, mode + " height is above the allowed limit");
+ return false;
+ }
+ if (mExternalDisplayPeakWidth > 0
+ && mode.getPhysicalWidth() > mExternalDisplayPeakWidth) {
+ Log.d(TAG, mode + " width is above the allowed limit");
+ return false;
+ }
+ if (mExternalDisplayPeakRefreshRate > 0
+ && mode.getRefreshRate() > mExternalDisplayPeakRefreshRate) {
+ Log.d(TAG, mode + " refresh rate is above the allowed limit");
+ return false;
+ }
+ return true;
+ }
+
+ private void scheduleUpdate() {
+ if (mInjector == null || !mStarted) {
+ return;
+ }
+ unscheduleUpdate();
+ mInjector.getHandler().post(mUpdateRunnable);
+ }
+
+ private void unscheduleUpdate() {
+ if (mInjector == null || !mStarted) {
+ return;
+ }
+ mInjector.getHandler().removeCallbacks(mUpdateRunnable);
+ }
+
+ private void onDisplayModeClicked(@NonNull SelectorWithWidgetPreference preference,
+ @NonNull Display display) {
+ if (mInjector == null) {
+ return;
+ }
+ String[] modeResolution = preference.getKey().split("x");
+ int width = Integer.parseInt(modeResolution[0]);
+ int height = Integer.parseInt(modeResolution[1]);
+ for (var mode : display.getSupportedModes()) {
+ if (mode.getPhysicalWidth() == width && mode.getPhysicalHeight() == height
+ && isAllowedMode(mode)) {
+ mInjector.setUserPreferredDisplayMode(display.getDisplayId(), mode);
+ return;
+ }
+ }
+ }
+
+ private void updateDisplayModeLimits(@Nullable Context context) {
+ if (context == null) {
+ return;
+ }
+ mExternalDisplayPeakRefreshRate = getResources(context).getInteger(
+ com.android.internal.R.integer.config_externalDisplayPeakRefreshRate);
+ mExternalDisplayPeakWidth = getResources(context).getInteger(
+ com.android.internal.R.integer.config_externalDisplayPeakWidth);
+ mExternalDisplayPeakHeight = getResources(context).getInteger(
+ com.android.internal.R.integer.config_externalDisplayPeakHeight);
+ mRefreshRateSynchronizationEnabled = getResources(context).getBoolean(
+ com.android.internal.R.bool.config_refreshRateSynchronizationEnabled);
+ Log.d(TAG, "mExternalDisplayPeakRefreshRate=" + mExternalDisplayPeakRefreshRate);
+ Log.d(TAG, "mExternalDisplayPeakWidth=" + mExternalDisplayPeakWidth);
+ Log.d(TAG, "mExternalDisplayPeakHeight=" + mExternalDisplayPeakHeight);
+ Log.d(TAG, "mRefreshRateSynchronizationEnabled=" + mRefreshRateSynchronizationEnabled);
+ }
+}
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
index 04fab7d..ae9dbeb 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
@@ -31,6 +31,7 @@
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settings.flags.Flags;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import java.util.LinkedHashMap;
@@ -130,39 +131,54 @@
@Override
public void onRadioButtonClicked(SelectorWithWidgetPreference preference) {
- requireAuthAndExecute(() -> {
- final long function = UsbBackend.usbFunctionsFromString(preference.getKey());
- final long previousFunction = mUsbBackend.getCurrentFunctions();
- if (DEBUG) {
- Log.d(TAG, "onRadioButtonClicked() function : " + function + ", toString() : "
- + UsbManager.usbFunctionsToString(function) + ", previousFunction : "
- + previousFunction + ", toString() : "
- + UsbManager.usbFunctionsToString(previousFunction));
- }
- if (function != previousFunction && !Utils.isMonkeyRunning()
- && !isClickEventIgnored(function, previousFunction)) {
- mPreviousFunction = previousFunction;
+ final long function = UsbBackend.usbFunctionsFromString(preference.getKey());
+ if (isAuthRequired(function)) {
+ requireAuthAndExecute(()->handleRadioButtonClicked(preference, function));
+ } else {
+ handleRadioButtonClicked(preference, function);
+ }
+ }
- //Update the UI in advance to make it looks smooth
- final SelectorWithWidgetPreference prevPref =
- (SelectorWithWidgetPreference) mProfilesContainer.findPreference(
- UsbBackend.usbFunctionsToString(mPreviousFunction));
- if (prevPref != null) {
- prevPref.setChecked(false);
- preference.setChecked(true);
- }
+ private void handleRadioButtonClicked(SelectorWithWidgetPreference preference, long function) {
+ final long previousFunction = mUsbBackend.getCurrentFunctions();
+ if (DEBUG) {
+ Log.d(TAG, "onRadioButtonClicked() function : " + function + ", toString() : "
+ + UsbManager.usbFunctionsToString(function) + ", previousFunction : "
+ + previousFunction + ", toString() : "
+ + UsbManager.usbFunctionsToString(previousFunction));
+ }
+ if (function != previousFunction && !Utils.isMonkeyRunning()
+ && !isClickEventIgnored(function, previousFunction)) {
+ mPreviousFunction = previousFunction;
- if (function == UsbManager.FUNCTION_RNDIS || function == UsbManager.FUNCTION_NCM) {
- // We need to have entitlement check for usb tethering, so use API in
- // TetheringManager.
- mTetheringManager.startTethering(
- TetheringManager.TETHERING_USB, new HandlerExecutor(mHandler),
- mOnStartTetheringCallback);
- } else {
- mUsbBackend.setCurrentFunctions(function);
- }
+ //Update the UI in advance to make it looks smooth
+ final SelectorWithWidgetPreference prevPref =
+ (SelectorWithWidgetPreference) mProfilesContainer.findPreference(
+ UsbBackend.usbFunctionsToString(mPreviousFunction));
+ if (prevPref != null) {
+ prevPref.setChecked(false);
+ preference.setChecked(true);
}
- });
+
+ if (function == UsbManager.FUNCTION_RNDIS || function == UsbManager.FUNCTION_NCM) {
+ // We need to have entitlement check for usb tethering, so use API in
+ // TetheringManager.
+ mTetheringManager.startTethering(
+ TetheringManager.TETHERING_USB, new HandlerExecutor(mHandler),
+ mOnStartTetheringCallback);
+ } else {
+ mUsbBackend.setCurrentFunctions(function);
+ }
+ }
+ }
+
+ private boolean isAuthRequired(long function) {
+ if (!Flags.excludeWebcamAuthChallenge()) {
+ return true;
+ }
+ // Since webcam and MIDI don't transfer any persistent data over USB
+ // don't require authentication.
+ return !(function == UsbManager.FUNCTION_UVC || function == UsbManager.FUNCTION_MIDI);
}
private boolean isClickEventIgnored(long function, long previousFunction) {
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 1c14712..734bddc 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -156,12 +156,15 @@
import com.android.settings.notification.ConfigureNotificationSettings;
import com.android.settings.notification.NotificationAccessSettings;
import com.android.settings.notification.NotificationAssistantPicker;
+import com.android.settings.notification.PoliteNotificationsPreferenceFragment;
import com.android.settings.notification.SoundSettings;
import com.android.settings.notification.app.AppBubbleNotificationSettings;
import com.android.settings.notification.app.AppNotificationSettings;
import com.android.settings.notification.app.ChannelNotificationSettings;
import com.android.settings.notification.app.ConversationListSettings;
import com.android.settings.notification.history.NotificationStation;
+import com.android.settings.notification.modes.ZenModeFragment;
+import com.android.settings.notification.modes.ZenModesListFragment;
import com.android.settings.notification.zen.ZenAccessSettings;
import com.android.settings.notification.zen.ZenModeAutomationSettings;
import com.android.settings.notification.zen.ZenModeBlockedEffectsSettings;
@@ -312,6 +315,7 @@
AppInfoDashboardFragment.class.getName(),
BatterySaverSettings.class.getName(),
AppNotificationSettings.class.getName(),
+ PoliteNotificationsPreferenceFragment.class.getName(),
NotificationAssistantPicker.class.getName(),
ChannelNotificationSettings.class.getName(),
SatelliteSetting.class.getName(),
@@ -396,6 +400,8 @@
CellularSecuritySettingsFragment.class.getName(),
AccessibilityHearingAidsFragment.class.getName(),
HearingDevicePairingFragment.class.getName(),
+ ZenModesListFragment.class.getName(),
+ ZenModeFragment.class.getName()
};
public static final String[] SETTINGS_FOR_RESTRICTED = {
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 9abc6c2..0808da1 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -649,8 +649,12 @@
DynamicDataObserver observer) {
Log.d(TAG, "register observer: @" + Integer.toHexString(observer.hashCode())
+ ", uri: " + observer.getUri());
- resolver.registerContentObserver(observer.getUri(), false, observer);
- mRegisteredObservers.add(observer);
+ try {
+ resolver.registerContentObserver(observer.getUri(), false, observer);
+ mRegisteredObservers.add(observer);
+ } catch (Exception e) {
+ Log.w(TAG, "Cannot register observer: " + observer.getUri(), e);
+ }
}
private void unregisterDynamicDataObservers(List<DynamicDataObserver> observers) {
@@ -661,8 +665,13 @@
observers.forEach(observer -> {
Log.d(TAG, "unregister observer: @" + Integer.toHexString(observer.hashCode())
+ ", uri: " + observer.getUri());
- mRegisteredObservers.remove(observer);
- resolver.unregisterContentObserver(observer);
+ if (mRegisteredObservers.remove(observer)) {
+ try {
+ resolver.unregisterContentObserver(observer);
+ } catch (Exception e) {
+ Log.w(TAG, "Cannot unregister observer: " + observer.getUri(), e);
+ }
+ }
});
}
diff --git a/src/com/android/settings/datausage/DataUsageList.kt b/src/com/android/settings/datausage/DataUsageList.kt
index af115d9..a293277 100644
--- a/src/com/android/settings/datausage/DataUsageList.kt
+++ b/src/com/android/settings/datausage/DataUsageList.kt
@@ -33,13 +33,10 @@
import com.android.settings.dashboard.DashboardFragment
import com.android.settings.datausage.lib.BillingCycleRepository
import com.android.settings.datausage.lib.NetworkUsageData
-import com.android.settings.network.MobileNetworkRepository
import com.android.settings.network.SubscriptionUtil
-import com.android.settings.network.telephony.requireSubscriptionManager
-import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity
+import com.android.settings.network.telephony.SubscriptionRepository
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import com.android.settingslib.spaprivileged.framework.common.userManager
-import com.android.settingslib.utils.ThreadUtils
import kotlin.jvm.optionals.getOrNull
/**
@@ -59,7 +56,6 @@
private lateinit var billingCycleRepository: BillingCycleRepository
private var usageAmount: Preference? = null
- private var subscriptionInfoEntity: SubscriptionInfoEntity? = null
private var dataUsageListAppsController: DataUsageListAppsController? = null
private var chartDataUsagePreferenceController: ChartDataUsagePreferenceController? = null
private var dataUsageListHeaderController: DataUsageListHeaderController? = null
@@ -90,7 +86,6 @@
finish()
return
}
- updateSubscriptionInfoEntity()
dataUsageListAppsController = use(DataUsageListAppsController::class.java).apply {
init(template)
}
@@ -132,6 +127,16 @@
viewModel.chartDataFlow.collectLatestWithLifecycle(viewLifecycleOwner) { chartData ->
chartDataUsagePreferenceController?.update(chartData)
}
+ finishIfSubscriptionDisabled()
+ }
+
+ private fun finishIfSubscriptionDisabled() {
+ if (SubscriptionManager.isUsableSubscriptionId(subId)) {
+ SubscriptionRepository(requireContext()).isSubscriptionEnabledFlow(subId)
+ .collectLatestWithLifecycle(viewLifecycleOwner) { isSubscriptionEnabled ->
+ if (!isSubscriptionEnabled) finish()
+ }
+ }
}
override fun getPreferenceScreenResId() = R.xml.data_usage_list
@@ -155,23 +160,12 @@
}
}
- private fun updateSubscriptionInfoEntity() {
- ThreadUtils.postOnBackgroundThread {
- subscriptionInfoEntity =
- MobileNetworkRepository.getInstance(context).getSubInfoById(subId.toString())
- }
- }
-
/** Update chart sweeps and cycle list to reflect [NetworkPolicy] for current [template]. */
private fun updatePolicy(isModifiable: Boolean) {
- val isBillingCycleModifiable = isModifiable && isActiveSubscription()
- dataUsageListHeaderController?.setConfigButtonVisible(isBillingCycleModifiable)
- chartDataUsagePreferenceController?.setBillingCycleModifiable(isBillingCycleModifiable)
+ dataUsageListHeaderController?.setConfigButtonVisible(isModifiable)
+ chartDataUsagePreferenceController?.setBillingCycleModifiable(isModifiable)
}
- private fun isActiveSubscription(): Boolean =
- requireContext().requireSubscriptionManager().getActiveSubscriptionInfo(subId) != null
-
/**
* Updates the chart and detail data when initial loaded or selected cycle changed.
*/
@@ -187,7 +181,7 @@
/** Updates applications data usage. */
private fun updateApps(usageData: NetworkUsageData) {
dataUsageListAppsController?.update(
- carrierId = subscriptionInfoEntity?.carrierId,
+ subId = subId,
startTime = usageData.startTime,
endTime = usageData.endTime,
)
diff --git a/src/com/android/settings/datausage/DataUsageListAppsController.kt b/src/com/android/settings/datausage/DataUsageListAppsController.kt
index 93623f4..d8bddde 100644
--- a/src/com/android/settings/datausage/DataUsageListAppsController.kt
+++ b/src/com/android/settings/datausage/DataUsageListAppsController.kt
@@ -20,6 +20,7 @@
import android.content.Context
import android.net.NetworkTemplate
import android.os.Bundle
+import android.telephony.SubscriptionManager
import androidx.annotation.OpenForTesting
import androidx.annotation.VisibleForTesting
import androidx.lifecycle.LifecycleCoroutineScope
@@ -32,6 +33,7 @@
import com.android.settings.core.SubSettingLauncher
import com.android.settings.datausage.lib.AppDataUsageRepository
import com.android.settings.datausage.lib.NetworkUsageData
+import com.android.settings.network.telephony.requireSubscriptionManager
import com.android.settingslib.AppItem
import com.android.settingslib.net.UidDetailProvider
import kotlinx.coroutines.Dispatchers
@@ -74,8 +76,11 @@
this.cycleData = cycleData
}
- fun update(carrierId: Int?, startTime: Long, endTime: Long) = lifecycleScope.launch {
+ fun update(subId: Int, startTime: Long, endTime: Long) = lifecycleScope.launch {
val apps = withContext(Dispatchers.Default) {
+ val carrierId = if (SubscriptionManager.isValidSubscriptionId(subId)) {
+ mContext.requireSubscriptionManager().getActiveSubscriptionInfo(subId)?.carrierId
+ } else null
repository.getAppPercent(carrierId, startTime, endTime).map { (appItem, percent) ->
AppDataUsagePreference(mContext, appItem, percent, uidDetailProvider).apply {
setOnPreferenceClickListener {
diff --git a/src/com/android/settings/datausage/lib/BillingCycleRepository.kt b/src/com/android/settings/datausage/lib/BillingCycleRepository.kt
index d324c75..59c853d 100644
--- a/src/com/android/settings/datausage/lib/BillingCycleRepository.kt
+++ b/src/com/android/settings/datausage/lib/BillingCycleRepository.kt
@@ -21,7 +21,7 @@
import android.os.ServiceManager
import android.util.Log
import androidx.annotation.OpenForTesting
-import com.android.settings.network.telephony.TelephonyRepository
+import com.android.settings.network.telephony.MobileDataRepository
import com.android.settingslib.spaprivileged.framework.common.userManager
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
@@ -36,13 +36,13 @@
INetworkManagementService.Stub.asInterface(
ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE)
),
- private val telephonyRepository: TelephonyRepository = TelephonyRepository(context),
+ private val mobileDataRepository: MobileDataRepository = MobileDataRepository(context),
) {
private val userManager = context.userManager
fun isModifiableFlow(subId: Int): Flow<Boolean> =
- telephonyRepository.isDataEnabledFlow(subId).map { isDataEnabled ->
- isDataEnabled && isBandwidthControlEnabled() && userManager.isAdminUser
+ mobileDataRepository.isMobileDataEnabledFlow(subId).map { mobileDataEnabled ->
+ mobileDataEnabled && isBandwidthControlEnabled() && userManager.isAdminUser
}.conflate().flowOn(Dispatchers.Default)
open fun isBandwidthControlEnabled(): Boolean = try {
diff --git a/src/com/android/settings/development/DesktopModePreferenceController.java b/src/com/android/settings/development/DesktopModePreferenceController.java
index c6b2397..a9a4b07 100644
--- a/src/com/android/settings/development/DesktopModePreferenceController.java
+++ b/src/com/android/settings/development/DesktopModePreferenceController.java
@@ -16,11 +16,12 @@
package com.android.settings.development;
-import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS;
+import static android.provider.Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES;
import android.content.Context;
-import android.os.Build;
+import android.os.SystemProperties;
import android.provider.Settings;
+import android.util.Log;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
@@ -30,19 +31,29 @@
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+import com.android.window.flags.Flags;
+/**
+ * Preference controller to control Desktop mode features
+ */
public class DesktopModePreferenceController extends DeveloperOptionsPreferenceController
implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin,
RebootConfirmationDialogHost {
- private static final String FORCE_DESKTOP_MODE_KEY = "force_desktop_mode_on_external_displays";
+ private static final String OVERRIDE_DESKTOP_MODE_FEATURES_KEY =
+ "override_desktop_mode_features";
+
+ private static final String TAG = "DesktopModePreferenceController";
@VisibleForTesting
static final int SETTING_VALUE_OFF = 0;
@VisibleForTesting
static final int SETTING_VALUE_ON = 1;
+ @VisibleForTesting
+ static final int SETTING_VALUE_UNSET = -1;
- @Nullable private final DevelopmentSettingsDashboardFragment mFragment;
+ @Nullable
+ private final DevelopmentSettingsDashboardFragment mFragment;
public DesktopModePreferenceController(
Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) {
@@ -51,40 +62,59 @@
}
@Override
+ public boolean isAvailable() {
+ return isDeviceEligibleForDesktopMode() && Flags.showDesktopWindowingDevOption();
+ }
+
+ @Override
public String getPreferenceKey() {
- return FORCE_DESKTOP_MODE_KEY;
+ return OVERRIDE_DESKTOP_MODE_FEATURES_KEY;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean isEnabled = (Boolean) newValue;
Settings.Global.putInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS,
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES,
isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF);
- if (isEnabled) {
+ if (mFragment != null) {
RebootConfirmationDialogFragment.show(
- mFragment, R.string.reboot_dialog_force_desktop_mode, this);
+ mFragment, R.string.reboot_dialog_override_desktop_mode, this);
}
return true;
}
@Override
public void updateState(Preference preference) {
+ // Use overridden state, if not present, then use default state
+ final boolean shouldDevOptionBeEnabledByDefault = Flags.enableDesktopWindowingMode();
final int mode = Settings.Global.getInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF);
- ((TwoStatePreference) mPreference).setChecked(mode != SETTING_VALUE_OFF);
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES,
+ shouldDevOptionBeEnabledByDefault ? SETTING_VALUE_ON : SETTING_VALUE_OFF);
+ final boolean shouldDevOptionBeEnabled = switch (mode) {
+ case SETTING_VALUE_OFF -> false;
+ case SETTING_VALUE_ON -> true;
+ case SETTING_VALUE_UNSET -> shouldDevOptionBeEnabledByDefault;
+ default -> {
+ Log.w(TAG, "Invalid override for desktop mode: " + mode);
+ yield shouldDevOptionBeEnabledByDefault;
+ }
+ };
+ ((TwoStatePreference) mPreference).setChecked(shouldDevOptionBeEnabled);
}
@Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
Settings.Global.putInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF);
- ((TwoStatePreference) mPreference).setChecked(false);
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_UNSET);
}
- @VisibleForTesting
- String getBuildType() {
- return Build.TYPE;
+ private boolean isDeviceEligibleForDesktopMode() {
+ boolean enforceDeviceRestrictions = SystemProperties.getBoolean(
+ "persist.wm.debug.desktop_mode_enforce_device_restrictions", true);
+ boolean isDesktopModeSupported = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_isDesktopModeSupported);
+ return !enforceDeviceRestrictions || isDesktopModeSupported;
}
}
diff --git a/src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceController.java b/src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceController.java
new file mode 100644
index 0000000..ff513c2
--- /dev/null
+++ b/src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceController.java
@@ -0,0 +1,96 @@
+/*
+ * 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.development;
+
+import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS;
+
+import android.content.Context;
+import android.os.Build;
+import android.provider.Settings;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.settings.R;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+
+/**
+ * Preference controller to control Desktop mode features on secondary display
+ */
+public class DesktopModeSecondaryDisplayPreferenceController extends
+ DeveloperOptionsPreferenceController
+ implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin,
+ RebootConfirmationDialogHost {
+
+ private static final String ENABLE_DESKTOP_MODE_ON_SECONDARY_DISPLAY =
+ "force_desktop_mode_on_external_displays";
+
+ @VisibleForTesting
+ static final int SETTING_VALUE_OFF = 0;
+ @VisibleForTesting
+ static final int SETTING_VALUE_ON = 1;
+
+ @Nullable
+ private final DevelopmentSettingsDashboardFragment mFragment;
+
+ public DesktopModeSecondaryDisplayPreferenceController(
+ Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) {
+ super(context);
+ mFragment = fragment;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return ENABLE_DESKTOP_MODE_ON_SECONDARY_DISPLAY;
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ final boolean isEnabled = (Boolean) newValue;
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS,
+ isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF);
+ if (isEnabled && mFragment != null) {
+ RebootConfirmationDialogFragment.show(
+ mFragment, R.string.reboot_dialog_force_desktop_mode, this);
+ }
+ return true;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ final int mode = Settings.Global.getInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF);
+ ((TwoStatePreference) mPreference).setChecked(mode != SETTING_VALUE_OFF);
+ }
+
+ @Override
+ protected void onDeveloperOptionsSwitchDisabled() {
+ super.onDeveloperOptionsSwitchDisabled();
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF);
+ ((TwoStatePreference) mPreference).setChecked(false);
+ }
+
+ @VisibleForTesting
+ String getBuildType() {
+ return Build.TYPE;
+ }
+}
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 38cb6c7..0389b45 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -749,6 +749,7 @@
controllers.add(new ResizableActivityPreferenceController(context));
controllers.add(new FreeformWindowsPreferenceController(context, fragment));
controllers.add(new DesktopModePreferenceController(context, fragment));
+ controllers.add(new DesktopModeSecondaryDisplayPreferenceController(context, fragment));
controllers.add(new NonResizableMultiWindowPreferenceController(context));
controllers.add(new ShortcutManagerThrottlingPreferenceController(context));
controllers.add(new EnableGnssRawMeasFullTrackingPreferenceController(context));
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepository.kt b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepository.kt
index 5ed6993..760f8b6 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepository.kt
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepository.kt
@@ -23,10 +23,10 @@
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
+import com.android.settings.network.telephony.CarrierConfigRepository
import com.android.settings.network.telephony.SimSlotRepository
import com.android.settings.network.telephony.ims.ImsMmTelRepository
import com.android.settings.network.telephony.ims.ImsMmTelRepositoryImpl
-import com.android.settings.network.telephony.safeGetConfig
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
@@ -39,7 +39,9 @@
import kotlinx.coroutines.launch
@OptIn(ExperimentalCoroutinesApi::class)
-class SimStatusDialogRepository @JvmOverloads constructor(
+class SimStatusDialogRepository
+@JvmOverloads
+constructor(
private val context: Context,
private val simSlotRepository: SimSlotRepository = SimSlotRepository(context),
private val signalStrengthRepository: SignalStrengthRepository =
@@ -48,7 +50,7 @@
ImsMmTelRepositoryImpl(context, subId)
},
) {
- private val carrierConfigManager = context.getSystemService(CarrierConfigManager::class.java)!!
+ private val carrierConfigRepository = CarrierConfigRepository(context)
data class SimStatusDialogInfo(
val signalStrength: String? = null,
@@ -73,7 +75,8 @@
}
private fun simStatusDialogInfoBySlotFlow(simSlotIndex: Int): Flow<SimStatusDialogInfo> =
- simSlotRepository.subIdInSimSlotFlow(simSlotIndex)
+ simSlotRepository
+ .subIdInSimSlotFlow(simSlotIndex)
.flatMapLatest { subId ->
if (SubscriptionManager.isValidSubscriptionId(subId)) {
simStatusDialogInfoFlow(subId)
@@ -99,22 +102,16 @@
}
private fun showUpFlow(subId: Int) = flow {
- val config = carrierConfigManager.safeGetConfig(
- keys = listOf(
- CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL,
- CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL,
- ),
- subId = subId,
- )
- val visibility = SimStatusDialogVisibility(
- signalStrengthShowUp = config.getBoolean(
- CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL,
- true, // by default we show the signal strength in sim status
- ),
- imsRegisteredShowUp = config.getBoolean(
- CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL
- ),
- )
+ val visibility =
+ carrierConfigRepository.transformConfig(subId) {
+ SimStatusDialogVisibility(
+ signalStrengthShowUp =
+ getBoolean(
+ CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL),
+ imsRegisteredShowUp =
+ getBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL),
+ )
+ }
emit(visibility)
}
}
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index b54801a..fa30253 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -53,7 +53,8 @@
public int batteryStatus;
public int pluggedStatus;
public boolean discharging = true;
- public boolean isBatteryDefender;
+ public boolean isBatteryDefender = false;
+ public boolean isLongLife = false;
public boolean isFastCharging;
public long remainingTimeUs = 0;
public long averageTimeToDischarge = EstimateKt.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN;
@@ -306,12 +307,13 @@
info.pluggedStatus = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
info.mCharging = info.pluggedStatus != 0;
info.averageTimeToDischarge = estimate.getAverageDischargeTime();
- info.isBatteryDefender =
- batteryBroadcast.getIntExtra(
- BatteryManager.EXTRA_CHARGING_STATUS,
- BatteryManager.CHARGING_POLICY_DEFAULT)
- == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
+ final int chargingPolicy =
+ batteryBroadcast.getIntExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
+ BatteryManager.CHARGING_POLICY_DEFAULT);
+
+ info.isLongLife = chargingPolicy == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
info.batteryStatus =
batteryBroadcast.getIntExtra(
@@ -319,13 +321,21 @@
info.isFastCharging =
BatteryStatus.getChargingSpeed(context, batteryBroadcast)
== BatteryStatus.CHARGING_FAST;
- if (info.isBatteryDefender) {
+ if (info.isLongLife) {
info.isBatteryDefender =
FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider()
.isBatteryDefend(info);
}
- if (!info.mCharging) {
+ Log.d(
+ TAG,
+ "chargingPolicy = "
+ + chargingPolicy
+ + ", pluggedStatus = "
+ + info.pluggedStatus
+ + ", batteryStatus = "
+ + info.batteryStatus);
+ if (!isPluggedIn(context, info.mCharging, chargingPolicy)) {
updateBatteryInfoDischarging(context, shortString, estimate, info);
} else {
updateBatteryInfoCharging(
@@ -555,6 +565,14 @@
}
}
+ private static boolean isPluggedIn(Context context, boolean isCharging, int chargingPolicy) {
+ return isCharging
+ || (chargingPolicy == BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE
+ && FeatureFactory.getFeatureFactory()
+ .getBatterySettingsFeatureProvider()
+ .isChargingOptimizationMode(context));
+ }
+
public interface BatteryDataParser {
void onParsingStarted(long startTime, long endTime);
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 9e08664..7cb5733 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -600,12 +600,12 @@
context.getContentResolver(), SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0)
== 1) {
return DockDefenderMode.TEMPORARILY_BYPASSED;
- } else if (batteryInfo.isBatteryDefender
+ } else if (batteryInfo.isLongLife
&& FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider()
.isExtraDefend()) {
return DockDefenderMode.ACTIVE;
- } else if (!batteryInfo.isBatteryDefender) {
+ } else if (!batteryInfo.isLongLife) {
return DockDefenderMode.FUTURE_BYPASS;
}
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index f63b649..e12cc9f 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -23,11 +23,16 @@
import android.util.ArrayMap;
import android.util.SparseIntArray;
+import androidx.annotation.NonNull;
+
+import com.android.settings.fuelgauge.batteryusage.BatteryDiffData;
+import com.android.settings.fuelgauge.batteryusage.BatteryEvent;
import com.android.settings.fuelgauge.batteryusage.DetectRequestSourceType;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList;
import com.android.settingslib.fuelgauge.Estimate;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/** Feature Provider used in power usage */
@@ -39,6 +44,12 @@
/** Check whether the battery tips card is enabled in the battery usage page */
boolean isBatteryTipsEnabled();
+ /** Check whether overwrite the app optimization mode to restricted mode is enabled */
+ boolean isRestrictedModeOverwriteEnabled();
+
+ /** Check whether force expire the app optimization mode. */
+ boolean isForceExpireAppOptimizationModeEnabled();
+
/** Check whether to log the optimization mode of app entry in period job */
boolean isAppOptimizationModeLogged();
@@ -154,4 +165,11 @@
/** Whether the device is under the battery defender mode */
boolean isBatteryDefend(BatteryInfo info);
+
+ /** Collect and process battery reattribute data if needed. */
+ boolean processBatteryReattributeData(
+ @NonNull Context context,
+ @NonNull Map<Long, BatteryDiffData> batteryDiffDataMap,
+ @NonNull List<BatteryEvent> batteryEventList,
+ final boolean isFromPeriodJob);
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index cc6659a..4f163a2 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -18,7 +18,6 @@
import static com.android.settings.Utils.SYSTEMUI_PACKAGE_NAME;
-import android.annotation.Nullable;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -27,13 +26,19 @@
import android.util.ArraySet;
import android.util.SparseIntArray;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.internal.util.ArrayUtils;
+import com.android.settings.fuelgauge.batteryusage.BatteryDiffData;
+import com.android.settings.fuelgauge.batteryusage.BatteryEvent;
import com.android.settings.fuelgauge.batteryusage.DetectRequestSourceType;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList;
import com.android.settingslib.fuelgauge.Estimate;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/** Implementation of {@code PowerUsageFeatureProvider} */
@@ -84,6 +89,16 @@
}
@Override
+ public boolean isRestrictedModeOverwriteEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isForceExpireAppOptimizationModeEnabled() {
+ return false;
+ }
+
+ @Override
public boolean isAppOptimizationModeLogged() {
return false;
}
@@ -238,6 +253,15 @@
@Override
public boolean isBatteryDefend(BatteryInfo info) {
- return info.isBatteryDefender && !isExtraDefend();
+ return info.isLongLife && !isExtraDefend();
+ }
+
+ @Override
+ public boolean processBatteryReattributeData(
+ @NonNull Context context,
+ @NonNull Map<Long, BatteryDiffData> batteryDiffDataMap,
+ @NonNull List<BatteryEvent> batteryEventList,
+ final boolean isFromPeriodJob) {
+ return false;
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
index 639b3c7..6ff2665 100644
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
+++ b/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetector.java
@@ -21,7 +21,6 @@
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.batterytip.tips.BatteryDefenderTip;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
-import com.android.settings.overlay.FeatureFactory;
/** Detect whether the battery is overheated */
public class BatteryDefenderDetector implements BatteryTipDetector {
@@ -35,12 +34,10 @@
@Override
public BatteryTip detect() {
- final boolean isBasicBatteryDefend =
- FeatureFactory.getFeatureFactory()
- .getPowerUsageFeatureProvider()
- .isBatteryDefend(mBatteryInfo);
final int state =
- isBasicBatteryDefend ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;
+ mBatteryInfo.isBatteryDefender
+ ? BatteryTip.StateType.NEW
+ : BatteryTip.StateType.INVISIBLE;
final boolean isPluggedIn = mBatteryInfo.pluggedStatus != 0;
return new BatteryDefenderTip(state, isPluggedIn);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
index 1111bd4..508c4df 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
+++ b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
@@ -25,6 +25,7 @@
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action
import com.android.settings.fuelgauge.BatteryOptimizeUtils
import com.android.settings.fuelgauge.BatteryUtils
+import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
/** A util to store and update app optimization mode expiration event data. */
object AppOptModeSharedPreferencesUtils {
@@ -74,10 +75,13 @@
@JvmStatic
fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) =
synchronized(appOptimizationModeLock) {
+ val forceExpireEnabled =
+ featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled
val eventsMap = getAppOptModeEventsMap(context)
val expirationUids = ArrayList<Int>(eventsMap.size)
for ((uid, event) in eventsMap) {
- if (event.expirationTime > queryTimestampMs) {
+ // Not reset the mode if forceExpireEnabled is false and not expired.
+ if (!forceExpireEnabled && event.expirationTime > queryTimestampMs) {
continue
}
updateBatteryOptimizationMode(
@@ -108,12 +112,22 @@
getBatteryOptimizeUtils: (Int, String) -> BatteryOptimizeUtils,
) =
synchronized(appOptimizationModeLock) {
+ val restrictedModeOverwriteEnabled =
+ featureFactory.powerUsageFeatureProvider.isRestrictedModeOverwriteEnabled
val eventsMap = getAppOptModeEventsMap(context)
val expirationEvents: MutableMap<Int, AppOptimizationModeEvent> = ArrayMap()
for (i in uids.indices) {
val uid = uids[i]
val packageName = packageNames[i]
val optimizationMode = optimizationModes[i]
+ if (
+ !restrictedModeOverwriteEnabled &&
+ optimizationMode == BatteryOptimizeUtils.MODE_RESTRICTED
+ ) {
+ // Unable to set restricted mode due to flag protection.
+ Log.w(TAG, "setOptimizationMode($packageName) into restricted ignored")
+ continue
+ }
val originalOptMode: Int =
updateBatteryOptimizationMode(
context,
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java
index 7ea7203..b5d5099 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java
@@ -77,11 +77,13 @@
processAndSortEntries(mSystemEntries);
}
- long getStartTimestamp() {
+ /** Gets the start timestamp. */
+ public long getStartTimestamp() {
return mStartTimestamp;
}
- long getEndTimestamp() {
+ /** Gets the end timestamp. */
+ public long getEndTimestamp() {
return mEndTimestamp;
}
@@ -97,7 +99,8 @@
return mScreenOnTime;
}
- List<BatteryDiffEntry> getAppDiffEntryList() {
+ /** Gets the {@link BatteryDiffEntry} list for apps. */
+ public List<BatteryDiffEntry> getAppDiffEntryList() {
return mAppEntries;
}
@@ -296,8 +299,7 @@
* Sets total consume power, and adjusts the percentages to ensure the total round percentage
* could be 100%, and then sorts entries based on the sorting key.
*/
- @VisibleForTesting
- static void processAndSortEntries(final List<BatteryDiffEntry> batteryDiffEntries) {
+ public static void processAndSortEntries(final List<BatteryDiffEntry> batteryDiffEntries) {
if (batteryDiffEntries.isEmpty()) {
return;
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
index 5b05e34..4d1545a 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java
@@ -422,7 +422,8 @@
return;
}
final boolean isValidPackage =
- BatteryUtils.getInstance(mContext).getPackageUid(getPackageName())
+ BatteryUtils.getInstance(mContext)
+ .getPackageUidAsUser(getPackageName(), (int) mUserId)
!= BatteryUtils.UID_NULL;
if (!isValidPackage) {
mValidForRestriction = false;
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
index ddb8ecb..fef3056 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryEntry.java
@@ -22,7 +22,6 @@
import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo;
import android.graphics.drawable.Drawable;
import android.os.BatteryConsumer;
@@ -176,18 +175,7 @@
}
}
if (mDefaultPackageName != null) {
- PackageManager pm = context.getPackageManager();
- try {
- ApplicationInfo appInfo =
- pm.getApplicationInfo(mDefaultPackageName, 0 /* no flags */);
- mName = pm.getApplicationLabel(appInfo).toString();
- } catch (NameNotFoundException e) {
- Log.d(
- TAG,
- "PackageManager failed to retrieve ApplicationInfo for: "
- + mDefaultPackageName);
- mName = mDefaultPackageName;
- }
+ mName = mDefaultPackageName;
}
mTimeInForegroundMs =
uidBatteryConsumer.getTimeInProcessStateMs(
diff --git a/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
index 1c6ff54..8f4d4dd 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java
@@ -201,6 +201,20 @@
return defaultInstance;
}
+ /** Gets the encoded string from {@link BatteryReattribute} instance. */
+ @NonNull
+ public static String encodeBatteryReattribute(
+ @NonNull BatteryReattribute batteryReattribute) {
+ return Base64.encodeToString(batteryReattribute.toByteArray(), Base64.DEFAULT);
+ }
+
+ /** Gets the decoded {@link BatteryReattribute} instance from string. */
+ @NonNull
+ public static BatteryReattribute decodeBatteryReattribute(@NonNull String content) {
+ return BatteryUtils.parseProtoFromString(
+ content, BatteryReattribute.getDefaultInstance());
+ }
+
/** Converts to {@link BatteryHistEntry} */
public static BatteryHistEntry convertToBatteryHistEntry(
BatteryEntry entry, BatteryUsageStats batteryUsageStats) {
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
index 719d3bd..0a1a547 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
@@ -28,6 +28,8 @@
import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
import java.util.ArrayList;
import java.util.Calendar;
@@ -78,6 +80,7 @@
// Raw start timestamp with round to the nearest hour.
private final long mRawStartTimestamp;
private final long mLastFullChargeTimestamp;
+ private final boolean mIsFromPeriodJob;
private final Context mContext;
private final Handler mHandler;
private final UserIdsSeries mUserIdsSeries;
@@ -122,6 +125,7 @@
Context context,
Handler handler,
final UserIdsSeries userIdsSeries,
+ final boolean isFromPeriodJob,
final long rawStartTimestamp,
final long lastFullChargeTimestamp,
@NonNull final OnBatteryDiffDataMapLoadedListener callbackFunction,
@@ -130,6 +134,7 @@
mContext = context.getApplicationContext();
mHandler = handler;
mUserIdsSeries = userIdsSeries;
+ mIsFromPeriodJob = isFromPeriodJob;
mRawStartTimestamp = rawStartTimestamp;
mLastFullChargeTimestamp = lastFullChargeTimestamp;
mCallbackFunction = callbackFunction;
@@ -147,6 +152,7 @@
mHandler = handler;
mUserIdsSeries = userIdsSeries;
mCallbackFunction = callbackFunction;
+ mIsFromPeriodJob = false;
mRawStartTimestamp = 0L;
mLastFullChargeTimestamp = 0L;
mHourlyBatteryLevelsPerDay = null;
@@ -158,14 +164,9 @@
/** Starts the async tasks to load battery history data and app usage data. */
public void start() {
- start(/* isFromPeriodJob= */ false);
- }
-
- /** Starts the async tasks to load battery history data and app usage data. */
- public void start(boolean isFromPeriodJob) {
// If we have battery level data, load the battery history map and app usage simultaneously.
if (mHourlyBatteryLevelsPerDay != null) {
- if (isFromPeriodJob) {
+ if (mIsFromPeriodJob) {
mIsCurrentBatteryHistoryLoaded = true;
mIsCurrentAppUsageLoaded = true;
mIsBatteryUsageSlotLoaded = true;
@@ -514,6 +515,14 @@
mAppUsagePeriodMap,
getSystemAppsPackageNames(),
getSystemAppsUids()));
+ // Process the reattributate data for the following two cases:
+ // 1) the latest slot for the timestamp "until now"
+ // 2) walkthrough all BatteryDiffData again to handle "re-compute" case
+ final PowerUsageFeatureProvider featureProvider =
+ FeatureFactory.getFeatureFactory()
+ .getPowerUsageFeatureProvider();
+ featureProvider.processBatteryReattributeData(
+ mContext, batteryDiffDataMap, mBatteryEventList, mIsFromPeriodJob);
Log.d(
TAG,
@@ -683,12 +692,13 @@
context,
handler,
userIdsSeries,
+ isFromPeriodJob,
startTimestamp,
lastFullChargeTime,
onBatteryDiffDataMapLoadedListener,
batteryLevelData.getHourlyBatteryLevelsPerDay(),
processedBatteryHistoryMap)
- .start(isFromPeriodJob);
+ .start();
return batteryLevelData;
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
index 0bb6286..7620323 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java
@@ -429,6 +429,7 @@
database.batteryEventDao().clearAll();
database.batteryStateDao().clearAll();
database.batteryUsageSlotDao().clearAll();
+ database.batteryReattributeDao().clearAll();
} catch (RuntimeException e) {
Log.e(TAG, "clearAll() failed", e);
}
@@ -446,6 +447,7 @@
database.batteryEventDao().clearAllAfter(startTimestamp);
database.batteryStateDao().clearAllAfter(startTimestamp);
database.batteryUsageSlotDao().clearAllAfter(startTimestamp);
+ database.batteryReattributeDao().clearAllAfter(startTimestamp);
} catch (RuntimeException e) {
Log.e(TAG, "clearAllAfter() failed", e);
}
@@ -466,6 +468,7 @@
database.batteryEventDao().clearAllBefore(earliestTimestamp);
database.batteryStateDao().clearAllBefore(earliestTimestamp);
database.batteryUsageSlotDao().clearAllBefore(earliestTimestamp);
+ database.batteryReattributeDao().clearAllBefore(earliestTimestamp);
} catch (RuntimeException e) {
Log.e(TAG, "clearAllBefore() failed", e);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java
index 7613d9a..7e759ee 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BugReportContentProvider.java
@@ -55,6 +55,7 @@
}
writer.println("dump BatteryUsage and AppUsage states:");
LogUtils.dumpAppOptimizationModeEventHist(context, writer);
+ LogUtils.dumpBatteryReattributeDatabaseHist(context, writer);
LogUtils.dumpBatteryUsageDatabaseHist(context, writer);
LogUtils.dumpAppUsageDatabaseHist(context, writer);
LogUtils.dumpBatteryUsageSlotDatabaseHist(context, writer);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java
index b230030..d2f3adc 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java
@@ -19,6 +19,8 @@
import android.content.Context;
import android.util.Log;
+import androidx.annotation.VisibleForTesting;
+
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils;
import com.android.settings.fuelgauge.batteryusage.AppOptimizationModeEvent;
@@ -29,6 +31,8 @@
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity;
import com.android.settings.fuelgauge.batteryusage.db.BatteryEventDao;
import com.android.settings.fuelgauge.batteryusage.db.BatteryEventEntity;
+import com.android.settings.fuelgauge.batteryusage.db.BatteryReattributeDao;
+import com.android.settings.fuelgauge.batteryusage.db.BatteryReattributeEntity;
import com.android.settings.fuelgauge.batteryusage.db.BatteryState;
import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDao;
import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase;
@@ -127,6 +131,24 @@
dumpListItems(writer, entities, entity -> entity);
}
+ static void dumpBatteryReattributeDatabaseHist(Context context, PrintWriter writer) {
+ dumpBatteryReattributeDatabaseHist(
+ BatteryStateDatabase.getInstance(context).batteryReattributeDao(),
+ writer);
+ }
+
+ @VisibleForTesting
+ static void dumpBatteryReattributeDatabaseHist(
+ BatteryReattributeDao batteryReattributeDao, PrintWriter writer) {
+ writer.println("\n\tBatteryReattribute DatabaseHistory:");
+ final List<BatteryReattributeEntity> entities =
+ batteryReattributeDao.getAllAfter(
+ Clock.systemUTC().millis() - DUMP_TIME_OFFSET.toMillis());
+ if (entities != null && !entities.isEmpty()) {
+ dumpListItems(writer, entities, entity -> entity);
+ }
+ }
+
private static <T, S> void dumpListItems(
PrintWriter writer, List<T> itemList, Function<T, S> itemConverter) {
final AtomicInteger counter = new AtomicInteger(0);
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java
deleted file mode 100644
index 2497801..0000000
--- a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2022 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.batteryusage.db;
-
-import android.database.Cursor;
-
-import androidx.room.Dao;
-import androidx.room.Insert;
-import androidx.room.OnConflictStrategy;
-import androidx.room.Query;
-
-import java.util.List;
-
-/** Data access object for accessing {@link AppUsageEventEntity} in the database. */
-@Dao
-public interface AppUsageEventDao {
-
- /** Inserts a {@link AppUsageEventEntity} data into the database. */
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insert(AppUsageEventEntity event);
-
- /** Inserts {@link AppUsageEventEntity} data into the database. */
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insertAll(List<AppUsageEventEntity> events);
-
- /** Lists all recorded data after a specific timestamp. */
- @Query("SELECT * FROM AppUsageEventEntity WHERE timestamp > :timestamp ORDER BY timestamp DESC")
- List<AppUsageEventEntity> getAllAfter(long timestamp);
-
- /** Gets the {@link Cursor} of all recorded data after a specific timestamp of the users. */
- @Query(
- "SELECT * FROM AppUsageEventEntity WHERE timestamp >= :timestamp"
- + " AND userId IN (:userIds) ORDER BY timestamp ASC")
- Cursor getAllForUsersAfter(List<Long> userIds, long timestamp);
-
- /** Gets the {@link Cursor} of the latest timestamp of the specific user. */
- @Query("SELECT MAX(timestamp) as timestamp FROM AppUsageEventEntity WHERE userId = :userId")
- Cursor getLatestTimestampOfUser(long userId);
-
- /** Deletes all recorded data before a specific timestamp. */
- @Query("DELETE FROM AppUsageEventEntity WHERE timestamp <= :timestamp")
- void clearAllBefore(long timestamp);
-
- /** Deletes all recorded data after a specific timestamp. */
- @Query("DELETE FROM AppUsageEventEntity WHERE timestamp >= :timestamp")
- void clearAllAfter(long timestamp);
-
- /** Clears all recorded data in the database. */
- @Query("DELETE FROM AppUsageEventEntity")
- void clearAll();
-}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.kt b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.kt
new file mode 100644
index 0000000..fa5fbc7
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/AppUsageEventDao.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.fuelgauge.batteryusage.db
+
+import android.database.Cursor
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+
+/** Data access object for accessing [AppUsageEventEntity] in the database. */
+@Dao
+interface AppUsageEventDao {
+ /** Inserts a [AppUsageEventEntity] data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(event: AppUsageEventEntity)
+
+ /** Inserts [AppUsageEventEntity] data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ fun insertAll(events: List<AppUsageEventEntity>)
+
+ /** Lists all recorded data after a specific timestamp. */
+ @Query("SELECT * FROM AppUsageEventEntity WHERE timestamp > :timestamp ORDER BY timestamp DESC")
+ fun getAllAfter(timestamp: Long): List<AppUsageEventEntity>
+
+ /** Gets the [Cursor] of all recorded data after a specific timestamp of the users. */
+ @Query(
+ "SELECT * FROM AppUsageEventEntity WHERE timestamp >= :timestamp" +
+ " AND userId IN (:userIds) ORDER BY timestamp ASC"
+ )
+ fun getAllForUsersAfter(userIds: List<Long>, timestamp: Long): Cursor
+
+ /** Gets the [Cursor] of the latest timestamp of the specific user. */
+ @Query("SELECT MAX(timestamp) as timestamp FROM AppUsageEventEntity WHERE userId = :userId")
+ fun getLatestTimestampOfUser(userId: Long): Cursor
+
+ /** Deletes all recorded data before a specific timestamp. */
+ @Query("DELETE FROM AppUsageEventEntity WHERE timestamp <= :timestamp")
+ fun clearAllBefore(timestamp: Long)
+
+ /** Deletes all recorded data after a specific timestamp. */
+ @Query("DELETE FROM AppUsageEventEntity WHERE timestamp >= :timestamp")
+ fun clearAllAfter(timestamp: Long)
+
+ /** Clears all recorded data in the database. */
+ @Query("DELETE FROM AppUsageEventEntity") fun clearAll()
+}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java
deleted file mode 100644
index 19d2043..0000000
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java
+++ /dev/null
@@ -1,75 +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.batteryusage.db;
-
-import android.database.Cursor;
-
-import androidx.room.Dao;
-import androidx.room.Insert;
-import androidx.room.OnConflictStrategy;
-import androidx.room.Query;
-
-import java.util.List;
-
-/** Data access object for accessing {@link BatteryEventEntity} in the database. */
-@Dao
-public interface BatteryEventDao {
- /** Inserts a {@link BatteryEventEntity} data into the database. */
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insert(BatteryEventEntity event);
-
- /** Gets all recorded data. */
- @Query("SELECT * FROM BatteryEventEntity ORDER BY timestamp DESC")
- List<BatteryEventEntity> getAll();
-
- /** Gets the {@link Cursor} of the last full charge time . */
- @Query(
- "SELECT MAX(timestamp) FROM BatteryEventEntity"
- + " WHERE batteryEventType = 3") // BatteryEventType.FULL_CHARGED = 3
- Cursor getLastFullChargeTimestamp();
-
- /** Gets the {@link Long} of the last full charge time . */
- @Query(
- "SELECT MAX(timestamp) FROM BatteryEventEntity"
- + " WHERE batteryEventType = 3") // BatteryEventType.FULL_CHARGED = 3
- Long getLastFullChargeTimestampForLog();
-
- /** Gets the {@link Cursor} of all recorded data after a specific timestamp. */
- @Query(
- "SELECT * FROM BatteryEventEntity"
- + " WHERE timestamp >= :timestamp AND batteryEventType IN (:batteryEventTypes)"
- + " ORDER BY timestamp DESC")
- Cursor getAllAfter(long timestamp, List<Integer> batteryEventTypes);
-
- /** Gets all recorded data after a specific timestamp for log.*/
- @Query(
- "SELECT * FROM BatteryEventEntity "
- + "WHERE timestamp >= :timestamp ORDER BY timestamp DESC")
- List<BatteryEventEntity> getAllAfterForLog(long timestamp);
-
- /** Deletes all recorded data before a specific timestamp. */
- @Query("DELETE FROM BatteryEventEntity WHERE timestamp <= :timestamp")
- void clearAllBefore(long timestamp);
-
- /** Deletes all recorded data after a specific timestamp. */
- @Query("DELETE FROM BatteryEventEntity WHERE timestamp >= :timestamp")
- void clearAllAfter(long timestamp);
-
- /** Clears all recorded data in the database. */
- @Query("DELETE FROM BatteryEventEntity")
- void clearAll();
-}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.kt b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.kt
new file mode 100644
index 0000000..bac97d0
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.kt
@@ -0,0 +1,73 @@
+/*
+ * 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.batteryusage.db
+
+import android.database.Cursor
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+
+/** Data access object for accessing [BatteryEventEntity] in the database. */
+@Dao
+interface BatteryEventDao {
+ /** Inserts a [BatteryEventEntity] data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(event: BatteryEventEntity)
+
+ /** Gets all recorded data. */
+ @Query("SELECT * FROM BatteryEventEntity ORDER BY timestamp DESC")
+ fun getAll(): List<BatteryEventEntity>
+
+ /** Gets the [Cursor] of the last full charge time. */
+ @Query(
+ "SELECT MAX(timestamp) FROM BatteryEventEntity" +
+ " WHERE batteryEventType = 3" // BatteryEventType.FULL_CHARGED = 3
+ )
+ fun getLastFullChargeTimestamp(): Cursor
+
+ /** Gets the [Long] of the last full charge time. */
+ @Query(
+ "SELECT MAX(timestamp) FROM BatteryEventEntity" +
+ " WHERE batteryEventType = 3" // BatteryEventType.FULL_CHARGED = 3
+ )
+ fun getLastFullChargeTimestampForLog(): Long?
+
+ /** Gets the [Cursor] of all recorded data after a specific timestamp. */
+ @Query(
+ "SELECT * FROM BatteryEventEntity" +
+ " WHERE timestamp >= :timestamp AND batteryEventType IN (:batteryEventTypes)" +
+ " ORDER BY timestamp DESC"
+ )
+ fun getAllAfter(timestamp: Long, batteryEventTypes: List<Int>): Cursor
+
+ /** Gets all recorded data after a specific timestamp for log. */
+ @Query(
+ "SELECT * FROM BatteryEventEntity " +
+ "WHERE timestamp >= :timestamp ORDER BY timestamp DESC"
+ )
+ fun getAllAfterForLog(timestamp: Long): List<BatteryEventEntity>
+
+ /** Deletes all recorded data before a specific timestamp. */
+ @Query("DELETE FROM BatteryEventEntity WHERE timestamp <= :timestamp")
+ fun clearAllBefore(timestamp: Long)
+
+ /** Deletes all recorded data after a specific timestamp. */
+ @Query("DELETE FROM BatteryEventEntity WHERE timestamp >= :timestamp")
+ fun clearAllAfter(timestamp: Long)
+
+ /** Clears all recorded data in the database. */
+ @Query("DELETE FROM BatteryEventEntity") fun clearAll()
+}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeDao.kt b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeDao.kt
new file mode 100644
index 0000000..4151a5b
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeDao.kt
@@ -0,0 +1,48 @@
+/*
+ * 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.batteryusage.db;
+
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+
+/** DAO for accessing {@link BatteryReattributeEntity} in the database. */
+@Dao
+interface BatteryReattributeDao {
+
+ /** Inserts a {@link BatteryReattributeEntity} data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ fun insert(event: BatteryReattributeEntity)
+
+ /** Gets all recorded data after a specific timestamp. */
+ @Query(
+ "SELECT * FROM BatteryReattributeEntity WHERE "
+ + "timestampStart >= :timestampStart ORDER BY timestampStart DESC")
+ fun getAllAfter(timestampStart: Long): List<BatteryReattributeEntity>
+
+ /** Deletes all recorded data before a specific timestamp. */
+ @Query("DELETE FROM BatteryReattributeEntity WHERE timestampStart <= :timestampStart")
+ fun clearAllBefore(timestampStart: Long)
+
+ /** Deletes all recorded data after a specific timestamp. */
+ @Query("DELETE FROM BatteryReattributeEntity WHERE timestampStart >= :timestampStart")
+ fun clearAllAfter(timestampStart: Long)
+
+ /** Clears all recorded data in the database. */
+ @Query("DELETE FROM BatteryReattributeEntity") fun clearAll()
+}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeEntity.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeEntity.java
new file mode 100644
index 0000000..0ee2260
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeEntity.java
@@ -0,0 +1,73 @@
+/*
+ * 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.batteryusage.db;
+
+import static com.android.settings.fuelgauge.batteryusage.ConvertUtils.utcToLocalTimeForLogging;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+import com.android.settings.fuelgauge.batteryusage.BatteryReattribute;
+import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
+
+/** A {@link Entity} for battery usage reattribution data in the database. */
+@Entity
+public class BatteryReattributeEntity {
+
+ /** The start timestamp of this record data. */
+ @PrimaryKey
+ public final long timestampStart;
+
+ /** The end timestamp of this record data. */
+ public final long timestampEnd;
+
+ /** The battery usage reattribution data for corresponding uids. */
+ @NonNull public final String reattributeData;
+
+ public BatteryReattributeEntity(@NonNull BatteryReattribute batteryReattribute) {
+ this(
+ batteryReattribute.getTimestampStart(),
+ batteryReattribute.getTimestampEnd(),
+ ConvertUtils.encodeBatteryReattribute(batteryReattribute));
+ }
+
+ @VisibleForTesting
+ BatteryReattributeEntity(
+ long timestampStart, long timestampEnd, @NonNull String reattributeData) {
+ this.timestampStart = timestampStart;
+ this.timestampEnd = timestampEnd;
+ this.reattributeData = reattributeData;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ final BatteryReattribute batteryReattribute =
+ ConvertUtils.decodeBatteryReattribute(reattributeData);
+ final StringBuilder builder = new StringBuilder()
+ .append("\nBatteryReattributeEntity{")
+ .append("\n\t" + utcToLocalTimeForLogging(timestampStart))
+ .append("\n\t" + utcToLocalTimeForLogging(timestampEnd))
+ .append("\n\t" + batteryReattribute);
+ if (batteryReattribute != null) {
+ builder.append("\n\t" + batteryReattribute.getReattributeDataMap());
+ }
+ return builder.append("\n}").toString();
+ }
+}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDao.java
deleted file mode 100644
index 049251e..0000000
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDao.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2022 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.batteryusage.db;
-
-import android.database.Cursor;
-
-import androidx.room.Dao;
-import androidx.room.Insert;
-import androidx.room.OnConflictStrategy;
-import androidx.room.Query;
-
-import java.util.List;
-
-/** Data access object for accessing {@link BatteryState} in the database. */
-@Dao
-public interface BatteryStateDao {
-
- /** Inserts a {@link BatteryState} data into the database. */
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insert(BatteryState state);
-
- /** Inserts {@link BatteryState} data into the database. */
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insertAll(List<BatteryState> states);
-
- /** Gets the {@link Cursor} of the latest record timestamp no later than the given timestamp. */
- @Query("SELECT MAX(timestamp) FROM BatteryState WHERE timestamp <= :timestamp")
- Cursor getLatestTimestampBefore(long timestamp);
-
- /** Lists all recorded battery states after a specific timestamp. */
- @Query("SELECT * FROM BatteryState WHERE timestamp >= :timestamp ORDER BY timestamp ASC")
- Cursor getBatteryStatesAfter(long timestamp);
-
- /** Lists all recorded data after a specific timestamp. */
- @Query("SELECT * FROM BatteryState WHERE timestamp > :timestamp ORDER BY timestamp DESC")
- List<BatteryState> getAllAfter(long timestamp);
-
- /** Get the count of distinct timestamp after a specific timestamp. */
- @Query("SELECT COUNT(DISTINCT timestamp) FROM BatteryState WHERE timestamp > :timestamp")
- int getDistinctTimestampCount(long timestamp);
-
- /** Lists all distinct timestamps after a specific timestamp. */
- @Query("SELECT DISTINCT timestamp FROM BatteryState WHERE timestamp > :timestamp")
- List<Long> getDistinctTimestamps(long timestamp);
-
- /** Deletes all recorded data before a specific timestamp. */
- @Query("DELETE FROM BatteryState WHERE timestamp <= :timestamp")
- void clearAllBefore(long timestamp);
-
- /** Deletes all recorded data after a specific timestamp. */
- @Query("DELETE FROM BatteryState WHERE timestamp >= :timestamp")
- void clearAllAfter(long timestamp);
-
- /** Clears all recorded data in the database. */
- @Query("DELETE FROM BatteryState")
- void clearAll();
-}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDao.kt b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDao.kt
new file mode 100644
index 0000000..6d31e07
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDao.kt
@@ -0,0 +1,63 @@
+/*
+ * 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.batteryusage.db
+
+import android.database.Cursor
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+
+/** Data access object for accessing [BatteryState] in the database. */
+@Dao
+interface BatteryStateDao {
+ /** Inserts a [BatteryState] data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(state: BatteryState)
+
+ /** Inserts [BatteryState] data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(states: List<BatteryState>)
+
+ /** Gets the [Cursor] of the latest record timestamp no later than the given timestamp. */
+ @Query("SELECT MAX(timestamp) FROM BatteryState WHERE timestamp <= :timestamp")
+ fun getLatestTimestampBefore(timestamp: Long): Cursor
+
+ /** Lists all recorded battery states after a specific timestamp. */
+ @Query("SELECT * FROM BatteryState WHERE timestamp >= :timestamp ORDER BY timestamp ASC")
+ fun getBatteryStatesAfter(timestamp: Long): Cursor
+
+ /** Lists all recorded data after a specific timestamp. */
+ @Query("SELECT * FROM BatteryState WHERE timestamp > :timestamp ORDER BY timestamp DESC")
+ fun getAllAfter(timestamp: Long): List<BatteryState>
+
+ /** Get the count of distinct timestamp after a specific timestamp. */
+ @Query("SELECT COUNT(DISTINCT timestamp) FROM BatteryState WHERE timestamp > :timestamp")
+ fun getDistinctTimestampCount(timestamp: Long): Int
+
+ /** Lists all distinct timestamps after a specific timestamp. */
+ @Query("SELECT DISTINCT timestamp FROM BatteryState WHERE timestamp > :timestamp")
+ fun getDistinctTimestamps(timestamp: Long): List<Long>
+
+ /** Deletes all recorded data before a specific timestamp. */
+ @Query("DELETE FROM BatteryState WHERE timestamp <= :timestamp")
+ fun clearAllBefore(timestamp: Long)
+
+ /** Deletes all recorded data after a specific timestamp. */
+ @Query("DELETE FROM BatteryState WHERE timestamp >= :timestamp")
+ fun clearAllAfter(timestamp: Long)
+
+ /** Clears all recorded data in the database. */
+ @Query("DELETE FROM BatteryState") fun clearAll()
+}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java
index 7504775..c3aea08 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryStateDatabase.java
@@ -19,6 +19,7 @@
import android.content.Context;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
@@ -29,11 +30,13 @@
AppUsageEventEntity.class,
BatteryEventEntity.class,
BatteryState.class,
- BatteryUsageSlotEntity.class
+ BatteryUsageSlotEntity.class,
+ BatteryReattributeEntity.class
},
- version = 1)
+ version = 3)
public abstract class BatteryStateDatabase extends RoomDatabase {
private static final String TAG = "BatteryStateDatabase";
+ private static final String DB_FILE_NAME = "battery-usage-db-v11";
private static BatteryStateDatabase sBatteryStateDatabase;
@@ -49,11 +52,15 @@
/** Provides DAO for battery usage slot table. */
public abstract BatteryUsageSlotDao batteryUsageSlotDao();
+ /** Provides DAO for battery reattribution table. */
+ @NonNull
+ public abstract BatteryReattributeDao batteryReattributeDao();
+
/** Gets or creates an instance of {@link RoomDatabase}. */
public static BatteryStateDatabase getInstance(Context context) {
if (sBatteryStateDatabase == null) {
sBatteryStateDatabase =
- Room.databaseBuilder(context, BatteryStateDatabase.class, "battery-usage-db-v9")
+ Room.databaseBuilder(context, BatteryStateDatabase.class, DB_FILE_NAME)
// Allows accessing data in the main thread for dumping bugreport.
.allowMainThreadQueries()
.fallbackToDestructiveMigration()
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java
deleted file mode 100644
index d53b0cf..0000000
--- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.java
+++ /dev/null
@@ -1,62 +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.batteryusage.db;
-
-import android.database.Cursor;
-
-import androidx.room.Dao;
-import androidx.room.Insert;
-import androidx.room.OnConflictStrategy;
-import androidx.room.Query;
-
-import java.util.List;
-
-/** Data access object for accessing {@link BatteryUsageSlotEntity} in the database. */
-@Dao
-public interface BatteryUsageSlotDao {
- /** Inserts a {@link BatteryUsageSlotEntity} data into the database. */
- @Insert(onConflict = OnConflictStrategy.REPLACE)
- void insert(BatteryUsageSlotEntity event);
-
- /** Gets all recorded data. */
- @Query("SELECT * FROM BatteryUsageSlotEntity ORDER BY timestamp ASC")
- List<BatteryUsageSlotEntity> getAll();
-
- /** Gets the {@link Cursor} of all recorded data after a specific timestamp. */
- @Query(
- "SELECT * FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp"
- + " ORDER BY timestamp ASC")
- Cursor getAllAfter(long timestamp);
-
- /** Gets all recorded data after a specific timestamp for log.*/
- @Query(
- "SELECT * FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp"
- + " ORDER BY timestamp DESC")
- List<BatteryUsageSlotEntity> getAllAfterForLog(long timestamp);
-
- /** Deletes all recorded data before a specific timestamp. */
- @Query("DELETE FROM BatteryUsageSlotEntity WHERE timestamp <= :timestamp")
- void clearAllBefore(long timestamp);
-
- /** Deletes all recorded data after a specific timestamp. */
- @Query("DELETE FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp")
- void clearAllAfter(long timestamp);
-
- /** Clears all recorded data in the database. */
- @Query("DELETE FROM BatteryUsageSlotEntity")
- void clearAll();
-}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.kt b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.kt
new file mode 100644
index 0000000..434c61a
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryUsageSlotDao.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.fuelgauge.batteryusage.db
+
+import android.database.Cursor
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+
+/** Data access object for accessing [BatteryUsageSlotEntity] in the database. */
+@Dao
+interface BatteryUsageSlotDao {
+ /** Inserts a [BatteryUsageSlotEntity] data into the database. */
+ @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(event: BatteryUsageSlotEntity)
+
+ /** Gets all recorded data. */
+ @Query("SELECT * FROM BatteryUsageSlotEntity ORDER BY timestamp ASC")
+ fun getAll(): List<BatteryUsageSlotEntity>
+
+ /** Gets the [Cursor] of all recorded data after a specific timestamp. */
+ @Query(
+ "SELECT * FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp" +
+ " ORDER BY timestamp ASC"
+ )
+ fun getAllAfter(timestamp: Long): Cursor
+
+ /** Gets all recorded data after a specific timestamp for log. */
+ @Query(
+ "SELECT * FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp" +
+ " ORDER BY timestamp DESC"
+ )
+ fun getAllAfterForLog(timestamp: Long): List<BatteryUsageSlotEntity>
+
+ /** Deletes all recorded data before a specific timestamp. */
+ @Query("DELETE FROM BatteryUsageSlotEntity WHERE timestamp <= :timestamp")
+ fun clearAllBefore(timestamp: Long)
+
+ /** Deletes all recorded data after a specific timestamp. */
+ @Query("DELETE FROM BatteryUsageSlotEntity WHERE timestamp >= :timestamp")
+ fun clearAllAfter(timestamp: Long)
+
+ /** Clears all recorded data in the database. */
+ @Query("DELETE FROM BatteryUsageSlotEntity") fun clearAll()
+}
diff --git a/src/com/android/settings/fuelgauge/protos/battery_reattribute.proto b/src/com/android/settings/fuelgauge/protos/battery_reattribute.proto
new file mode 100644
index 0000000..8185a22
--- /dev/null
+++ b/src/com/android/settings/fuelgauge/protos/battery_reattribute.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+option java_package = "com.android.settings.fuelgauge.batteryusage";
+option java_outer_classname = "BatteryReaatributeProto";
+
+// Battery usage reattribute data for a specific timestamp slot.
+message BatteryReattribute {
+ optional int64 timestamp_start = 1;
+ optional int64 timestamp_end = 2;
+ // Battery reattribute data for uid and its corresponding ratio.
+ map<int32, float> reattribute_data = 3;
+}
diff --git a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java
index e69a336..6362068 100644
--- a/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java
+++ b/src/com/android/settings/homepage/contextualcards/conditional/DndConditionCardController.java
@@ -105,7 +105,8 @@
+ mAppContext.getText(R.string.condition_zen_title))
.setTitleText(mAppContext.getText(R.string.condition_zen_title).toString())
.setSummaryText(getSummary())
- .setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
+ .setIconDrawable(mAppContext.getDrawable(
+ com.android.settingslib.R.drawable.ic_do_not_disturb_on_24dp))
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
.build();
}
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index 5ba1c84..29292a1 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -70,7 +70,6 @@
private static final String KEYBOARD_OPTIONS_CATEGORY = "keyboard_options_category";
private static final String KEYBOARD_A11Y_CATEGORY = "keyboard_a11y_category";
- private static final String SHOW_VIRTUAL_KEYBOARD_SWITCH = "show_virtual_keyboard_switch";
private static final String ACCESSIBILITY_BOUNCE_KEYS = "accessibility_bounce_keys";
private static final String ACCESSIBILITY_SLOW_KEYS = "accessibility_slow_keys";
private static final String ACCESSIBILITY_STICKY_KEYS = "accessibility_sticky_keys";
@@ -100,8 +99,6 @@
@Nullable
private PreferenceCategory mKeyboardA11yCategory = null;
@Nullable
- private TwoStatePreference mShowVirtualKeyboardSwitch = null;
- @Nullable
private TwoStatePreference mAccessibilityBounceKeys = null;
@Nullable
private TwoStatePreference mAccessibilitySlowKeys = null;
@@ -129,8 +126,6 @@
mImm = Preconditions.checkNotNull(activity.getSystemService(InputMethodManager.class));
mKeyboardAssistanceCategory = Preconditions.checkNotNull(
findPreference(KEYBOARD_OPTIONS_CATEGORY));
- mShowVirtualKeyboardSwitch = Objects.requireNonNull(
- mKeyboardAssistanceCategory.findPreference(SHOW_VIRTUAL_KEYBOARD_SWITCH));
mKeyboardA11yCategory = Objects.requireNonNull(findPreference(KEYBOARD_A11Y_CATEGORY));
mAccessibilityBounceKeys = Objects.requireNonNull(
@@ -207,8 +202,6 @@
mLastHardKeyboards.clear();
scheduleUpdateHardKeyboards();
mIm.registerInputDeviceListener(this, null);
- Objects.requireNonNull(mShowVirtualKeyboardSwitch).setOnPreferenceChangeListener(
- mShowVirtualKeyboardSwitchPreferenceChangeListener);
Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener(
mAccessibilityBounceKeysSwitchPreferenceChangeListener);
Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener(
@@ -223,7 +216,6 @@
super.onPause();
mLastHardKeyboards.clear();
mIm.unregisterInputDeviceListener(this);
- Objects.requireNonNull(mShowVirtualKeyboardSwitch).setOnPreferenceChangeListener(null);
Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener(null);
Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener(null);
Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener(null);
@@ -314,7 +306,6 @@
if (mSupportsFirmwareUpdate) {
mFeatureProvider.addFirmwareUpdateCategory(getPrefContext(), preferenceScreen);
}
- updateShowVirtualKeyboardSwitch();
if (InputSettings.isAccessibilityBounceKeysFeatureEnabled()
|| InputSettings.isAccessibilityStickyKeysFeatureEnabled()
@@ -374,7 +365,6 @@
mContentObserver,
UserHandle.myUserId());
}
- updateShowVirtualKeyboardSwitch();
updateAccessibilityBounceKeysSwitch();
updateAccessibilitySlowKeysSwitch();
updateAccessibilityStickyKeysSwitch();
@@ -384,11 +374,6 @@
getActivity().getContentResolver().unregisterContentObserver(mContentObserver);
}
- private void updateShowVirtualKeyboardSwitch() {
- Objects.requireNonNull(mShowVirtualKeyboardSwitch).setChecked(
- Secure.getInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0) != 0);
- }
-
private void updateAccessibilityBounceKeysSwitch() {
if (!InputSettings.isAccessibilityBounceKeysFeatureEnabled()) {
return;
@@ -417,15 +402,6 @@
getActivity().requestShowKeyboardShortcuts();
}
- private final OnPreferenceChangeListener mShowVirtualKeyboardSwitchPreferenceChangeListener =
- (preference, newValue) -> {
- final ContentResolver cr = getContentResolver();
- Secure.putInt(cr, Secure.SHOW_IME_WITH_HARD_KEYBOARD, ((Boolean) newValue) ? 1 : 0);
- cr.notifyChange(Secure.getUriFor(Secure.SHOW_IME_WITH_HARD_KEYBOARD),
- null /* observer */, ContentResolver.NOTIFY_NO_DELAY);
- return true;
- };
-
private final OnPreferenceChangeListener
mAccessibilityBounceKeysSwitchPreferenceChangeListener = (preference, newValue) -> {
InputSettings.setAccessibilityBounceKeysThreshold(getContext(),
@@ -449,9 +425,7 @@
private final ContentObserver mContentObserver = new ContentObserver(new Handler(true)) {
@Override
public void onChange(boolean selfChange, Uri uri) {
- if (sVirtualKeyboardSettingsUri.equals(uri)) {
- updateShowVirtualKeyboardSwitch();
- } else if (sAccessibilityBounceKeysUri.equals(uri)) {
+ if (sAccessibilityBounceKeysUri.equals(uri)) {
updateAccessibilityBounceKeysSwitch();
} else if (sAccessibilitySlowKeysUri.equals(uri)) {
updateAccessibilitySlowKeysSwitch();
diff --git a/src/com/android/settings/inputmethod/PointerScaleSeekBarController.java b/src/com/android/settings/inputmethod/PointerScaleSeekBarController.java
new file mode 100644
index 0000000..06d5203
--- /dev/null
+++ b/src/com/android/settings/inputmethod/PointerScaleSeekBarController.java
@@ -0,0 +1,95 @@
+/*
+ * 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 android.view.PointerIcon.DEFAULT_POINTER_SCALE;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.widget.SeekBar;
+
+import androidx.annotation.NonNull;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.widget.LabeledSeekBarPreference;
+
+public class PointerScaleSeekBarController extends BasePreferenceController {
+
+ private final int mProgressMin;
+ private final int mProgressMax;
+ private final float mScaleMin;
+ private final float mScaleMax;
+
+ public PointerScaleSeekBarController(@NonNull Context context, @NonNull String key) {
+ super(context, key);
+
+ Resources res = context.getResources();
+ mProgressMin = res.getInteger(R.integer.pointer_scale_seek_bar_start);
+ mProgressMax = res.getInteger(R.integer.pointer_scale_seek_bar_end);
+ mScaleMin = res.getFloat(R.dimen.pointer_scale_size_start);
+ mScaleMax = res.getFloat(R.dimen.pointer_scale_size_end);
+ }
+
+ @AvailabilityStatus
+ public int getAvailabilityStatus() {
+ return android.view.flags.Flags.enableVectorCursorA11ySettings() ? AVAILABLE
+ : CONDITIONALLY_UNAVAILABLE;
+ }
+
+ @Override
+ public void displayPreference(@NonNull PreferenceScreen screen) {
+ super.displayPreference(screen);
+
+ LabeledSeekBarPreference seekBarPreference = screen.findPreference(getPreferenceKey());
+ seekBarPreference.setMax(mProgressMax);
+ seekBarPreference.setContinuousUpdates(/* continuousUpdates= */ true);
+ seekBarPreference.setProgress(scaleToProgress(
+ Settings.System.getFloatForUser(mContext.getContentResolver(),
+ Settings.System.POINTER_SCALE, DEFAULT_POINTER_SCALE,
+ UserHandle.USER_CURRENT)));
+ seekBarPreference.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(@NonNull SeekBar seekBar, int progress,
+ boolean fromUser) {
+ Settings.System.putFloatForUser(mContext.getContentResolver(),
+ Settings.System.POINTER_SCALE, progressToScale(progress),
+ UserHandle.USER_CURRENT);
+ }
+
+ @Override
+ public void onStartTrackingTouch(@NonNull SeekBar seekBar) {}
+
+ @Override
+ public void onStopTrackingTouch(@NonNull SeekBar seekBar) {}
+ });
+ }
+
+ private float progressToScale(int progress) {
+ return (((progress - mProgressMin) * (mScaleMax - mScaleMin)) / (mProgressMax
+ - mProgressMin)) + mScaleMin;
+ }
+
+ private int scaleToProgress(float scale) {
+ return (int) (
+ (((scale - mScaleMin) * (mProgressMax - mProgressMin)) / (mScaleMax - mScaleMin))
+ + mProgressMin);
+ }
+}
diff --git a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java
index 648a3e6..245901e 100644
--- a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java
+++ b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java
@@ -16,8 +16,11 @@
package com.android.settings.inputmethod;
+import static com.android.systemui.shared.Flags.newTouchpadGesturesTutorial;
+
import android.app.settings.SettingsEnums;
import android.content.Context;
+import android.content.Intent;
import android.util.FeatureFlagUtils;
import androidx.fragment.app.Fragment;
@@ -34,6 +37,7 @@
private static final int ORDER_BOTTOM = 100;
private static final String PREFERENCE_KEY = "trackpad_touch_gesture";
private static final String GESTURE_DIALOG_TAG = "GESTURE_DIALOG_TAG";
+ private static final String TUTORIAL_ACTION = "com.android.systemui.action.TOUCHPAD_TUTORIAL";
private Fragment mParent;
private MetricsFeatureProvider mMetricsFeatureProvider;
@@ -73,8 +77,15 @@
private void showTouchpadGestureEducation() {
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_LEARN_TOUCHPAD_GESTURE_CLICK);
- TrackpadGestureDialogFragment fragment = new TrackpadGestureDialogFragment();
- fragment.setTargetFragment(mParent, 0);
- fragment.show(mParent.getActivity().getSupportFragmentManager(), GESTURE_DIALOG_TAG);
+ if (newTouchpadGesturesTutorial()) {
+ Intent intent = new Intent(TUTORIAL_ACTION);
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ } else {
+ TrackpadGestureDialogFragment fragment = new TrackpadGestureDialogFragment();
+ fragment.setTargetFragment(mParent, 0);
+ fragment.show(mParent.getActivity().getSupportFragmentManager(), GESTURE_DIALOG_TAG);
+ }
}
}
diff --git a/src/com/android/settings/network/InternetPreferenceControllerV2.kt b/src/com/android/settings/network/InternetPreferenceControllerV2.kt
index a181abd..3c79342 100644
--- a/src/com/android/settings/network/InternetPreferenceControllerV2.kt
+++ b/src/com/android/settings/network/InternetPreferenceControllerV2.kt
@@ -28,7 +28,7 @@
class InternetPreferenceControllerV2(context: Context, preferenceKey: String) :
BasePreferenceController(context, preferenceKey) {
- private val repository = InternetPreferenceRepository(mContext)
+ private val repository by lazy { InternetPreferenceRepository(mContext) }
private var preference: Preference? = null
override fun getAvailabilityStatus() =
diff --git a/src/com/android/settings/network/MobileDataEnabledFlow.kt b/src/com/android/settings/network/MobileDataEnabledFlow.kt
deleted file mode 100644
index 1f995a9..0000000
--- a/src/com/android/settings/network/MobileDataEnabledFlow.kt
+++ /dev/null
@@ -1,43 +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.network
-
-import android.content.Context
-import android.provider.Settings
-import android.telephony.SubscriptionManager
-import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalChangeFlow
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.merge
-
-/**
- * Flow for mobile data enabled changed event.
- *
- * Note: This flow can only notify enabled status changes, cannot provide the latest status.
- */
-fun Context.mobileDataEnabledFlow(subId: Int, sendInitialValue: Boolean = true): Flow<Unit> {
- val flow = settingsGlobalChangeFlow(Settings.Global.MOBILE_DATA, sendInitialValue)
- return when (subId) {
- SubscriptionManager.INVALID_SUBSCRIPTION_ID -> flow
- else -> {
- val subIdFlow = settingsGlobalChangeFlow(
- name = Settings.Global.MOBILE_DATA + subId,
- sendInitialValue = false,
- )
- merge(flow, subIdFlow)
- }
- }
-}
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index 8ee5389..bd892c8 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -41,7 +41,6 @@
import androidx.lifecycle.LifecycleOwner;
import com.android.internal.telephony.flags.Flags;
-import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.mobile.dataservice.MobileNetworkDatabase;
@@ -49,7 +48,6 @@
import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoDao;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
-import com.android.settingslib.mobile.dataservice.UiccInfoDao;
import com.android.settingslib.mobile.dataservice.UiccInfoEntity;
import java.util.ArrayList;
@@ -81,15 +79,11 @@
private SubscriptionManager mSubscriptionManager;
private MobileNetworkDatabase mMobileNetworkDatabase;
private SubscriptionInfoDao mSubscriptionInfoDao;
- private UiccInfoDao mUiccInfoDao;
private MobileNetworkInfoDao mMobileNetworkInfoDao;
private List<SubscriptionInfoEntity> mAvailableSubInfoEntityList = new ArrayList<>();
private List<SubscriptionInfoEntity> mActiveSubInfoEntityList = new ArrayList<>();
- private List<UiccInfoEntity> mUiccInfoEntityList = new ArrayList<>();
- private List<MobileNetworkInfoEntity> mMobileNetworkInfoEntityList = new ArrayList<>();
private Context mContext;
private AirplaneModeObserver mAirplaneModeObserver;
- private DataRoamingObserver mDataRoamingObserver;
private MetricsFeatureProvider mMetricsFeatureProvider;
private int mPhysicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
private int mLogicalSlotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
@@ -124,10 +118,8 @@
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_MOBILE_NETWORK_DB_CREATED);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mSubscriptionInfoDao = mMobileNetworkDatabase.mSubscriptionInfoDao();
- mUiccInfoDao = mMobileNetworkDatabase.mUiccInfoDao();
mMobileNetworkInfoDao = mMobileNetworkDatabase.mMobileNetworkInfoDao();
mAirplaneModeObserver = new AirplaneModeObserver(new Handler(Looper.getMainLooper()));
- mDataRoamingObserver = new DataRoamingObserver(new Handler(Looper.getMainLooper()));
}
private class AirplaneModeObserver extends ContentObserver {
@@ -158,47 +150,6 @@
}
}
- private class DataRoamingObserver extends ContentObserver {
- private int mRegSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
- private String mBaseField = Settings.Global.DATA_ROAMING;
-
- DataRoamingObserver(Handler handler) {
- super(handler);
- }
-
- public void register(Context context, int subId) {
- mRegSubId = subId;
- String lastField = mBaseField;
- createTelephonyManagerBySubId(subId);
- TelephonyManager tm = mTelephonyManagerMap.get(subId);
- if (tm.getSimCount() != 1) {
- lastField += subId;
- }
- context.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(lastField), false, this);
- }
-
- public void unRegister(Context context) {
- context.getContentResolver().unregisterContentObserver(this);
- }
-
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- TelephonyManager tm = mTelephonyManagerMap.get(mRegSubId);
- if (tm == null) {
- return;
- }
- sExecutor.execute(() -> {
- Log.d(TAG, "DataRoamingObserver changed");
- insertMobileNetworkInfo(mContext, mRegSubId, tm);
- });
- boolean isDataRoamingEnabled = tm.isDataRoamingEnabled();
- for (MobileNetworkCallback callback : sCallbacks) {
- callback.onDataRoamingChanged(mRegSubId, isDataRoamingEnabled);
- }
- }
- }
-
/**
* Register all callbacks and listener.
*
@@ -224,7 +175,6 @@
observeAllMobileNetworkInfo(lifecycleOwner);
if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
createTelephonyManagerBySubId(subId);
- mDataRoamingObserver.register(mContext, subId);
}
// When one client registers callback first time, convey the cached results to the client
// so that the client is aware of the content therein.
@@ -288,7 +238,6 @@
if (sCallbacks.isEmpty()) {
mSubscriptionManager.removeOnSubscriptionsChangedListener(this);
mAirplaneModeObserver.unRegister(mContext);
- mDataRoamingObserver.unRegister(mContext);
mTelephonyManagerMap.forEach((id, manager) -> {
TelephonyCallback callback = mTelephonyCallbackMap.get(id);
@@ -338,22 +287,6 @@
lifecycleOwner, this::onAllMobileNetworkInfoChanged);
}
- public List<SubscriptionInfoEntity> getAvailableSubInfoEntityList() {
- return mAvailableSubInfoEntityList;
- }
-
- public List<SubscriptionInfoEntity> getActiveSubscriptionInfoList() {
- return mActiveSubInfoEntityList;
- }
-
- public List<UiccInfoEntity> getUiccInfoEntityList() {
- return mUiccInfoEntityList;
- }
-
- public List<MobileNetworkInfoEntity> getMobileNetworkInfoEntityList() {
- return mMobileNetworkInfoEntityList;
- }
-
public SubscriptionInfoEntity getSubInfoById(String subId) {
return mSubscriptionInfoDao.querySubInfoById(subId);
}
@@ -464,7 +397,6 @@
}
private void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
- mUiccInfoEntityList = new ArrayList<>(uiccInfoEntityList);
for (MobileNetworkCallback callback : sCallbacks) {
callback.onAllUiccInfoChanged(uiccInfoEntityList);
}
@@ -474,7 +406,6 @@
private void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
- mMobileNetworkInfoEntityList = new ArrayList<>(mobileNetworkInfoEntityList);
for (MobileNetworkCallback callback : sCallbacks) {
callback.onAllMobileNetworkInfoChanged(mobileNetworkInfoEntityList);
}
@@ -503,7 +434,7 @@
mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_MOBILE_NETWORK_DB_INSERT_SUB_INFO, subId);
insertUiccInfo(subId, telephonyManager);
- insertMobileNetworkInfo(context, subId, telephonyManager);
+ insertMobileNetworkInfo(subId, telephonyManager);
}
} else if (DEBUG) {
Log.d(TAG, "Can not insert subInfo, the entity is null");
@@ -515,8 +446,6 @@
mMobileNetworkDatabase.deleteSubInfoBySubId(subId);
mMobileNetworkDatabase.deleteUiccInfoBySubId(subId);
mMobileNetworkDatabase.deleteMobileNetworkInfoBySubId(subId);
- mUiccInfoEntityList.removeIf(info -> info.subId.equals(subId));
- mMobileNetworkInfoEntityList.removeIf(info -> info.subId.equals(subId));
int id = Integer.parseInt(subId);
removerRegisterBySubId(id);
mSubscriptionInfoMap.remove(id);
@@ -587,20 +516,13 @@
}
}
- private void insertMobileNetworkInfo(Context context, int subId,
- TelephonyManager telephonyManager) {
- MobileNetworkInfoEntity mobileNetworkInfoEntity = convertToMobileNetworkInfoEntity(context,
- subId, telephonyManager);
-
+ private void insertMobileNetworkInfo(int subId, TelephonyManager telephonyManager) {
+ MobileNetworkInfoEntity mobileNetworkInfoEntity =
+ convertToMobileNetworkInfoEntity(subId, telephonyManager);
Log.d(TAG, "insertMobileNetworkInfo, mobileNetworkInfoEntity = "
+ mobileNetworkInfoEntity);
-
- if (mobileNetworkInfoEntity == null) {
- return;
- }
-
if (!sCacheMobileNetworkInfoEntityMap.containsKey(subId)
|| !sCacheMobileNetworkInfoEntityMap.get(subId).equals(mobileNetworkInfoEntity)) {
sCacheMobileNetworkInfoEntityMap.put(subId, mobileNetworkInfoEntity);
@@ -610,29 +532,17 @@
}
}
- private MobileNetworkInfoEntity convertToMobileNetworkInfoEntity(Context context, int subId,
+ private MobileNetworkInfoEntity convertToMobileNetworkInfoEntity(int subId,
TelephonyManager telephonyManager) {
boolean isDataEnabled = false;
- boolean isDataRoamingEnabled = false;
if (telephonyManager != null) {
isDataEnabled = telephonyManager.isDataEnabled();
- isDataRoamingEnabled = telephonyManager.isDataRoamingEnabled();
} else {
Log.d(TAG, "TelephonyManager is null, subId = " + subId);
}
- return new MobileNetworkInfoEntity(String.valueOf(subId),
- MobileNetworkUtils.isContactDiscoveryEnabled(context, subId),
- MobileNetworkUtils.isContactDiscoveryVisible(context, subId),
- isDataEnabled,
- MobileNetworkUtils.isCdmaOptions(context, subId),
- MobileNetworkUtils.isGsmOptions(context, subId),
- MobileNetworkUtils.isWorldMode(context, subId),
- MobileNetworkUtils.shouldDisplayNetworkSelectOptions(context, subId),
- MobileNetworkUtils.isTdscdmaSupported(context, subId),
- MobileNetworkUtils.activeNetworkIsCellular(context),
- SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager),
- isDataRoamingEnabled
+ return new MobileNetworkInfoEntity(String.valueOf(subId), isDataEnabled,
+ SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)
);
}
@@ -741,7 +651,6 @@
}
private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
- TelephonyCallback.CallStateListener,
TelephonyCallback.UserMobileDataStateListener {
private int mSubId;
@@ -751,18 +660,10 @@
}
@Override
- public void onCallStateChanged(int state) {
- for (MobileNetworkCallback callback : sCallbacks) {
- callback.onCallStateChanged(state);
- }
- }
-
- @Override
public void onUserMobileDataStateChanged(boolean enabled) {
Log.d(TAG, "onUserMobileDataStateChanged enabled " + enabled + " on SUB " + mSubId);
sExecutor.execute(() -> {
- insertMobileNetworkInfo(mContext, mSubId,
- getTelephonyManagerBySubId(mContext, mSubId));
+ insertMobileNetworkInfo(mSubId, getTelephonyManagerBySubId(mContext, mSubId));
});
}
}
@@ -787,15 +688,6 @@
default void onAirplaneModeChanged(boolean enabled) {
}
-
- /**
- * Notify clients data roaming changed of subscription.
- */
- default void onDataRoamingChanged(int subId, boolean enabled) {
- }
-
- default void onCallStateChanged(int state) {
- }
}
public void dump(IndentingPrintWriter printwriter) {
@@ -803,8 +695,6 @@
printwriter.increaseIndent();
printwriter.println(" availableSubInfoEntityList= " + mAvailableSubInfoEntityList);
printwriter.println(" activeSubInfoEntityList=" + mActiveSubInfoEntityList);
- printwriter.println(" mobileNetworkInfoEntityList= " + mMobileNetworkInfoEntityList);
- printwriter.println(" uiccInfoEntityList= " + mUiccInfoEntityList);
printwriter.println(" CacheSubscriptionInfoEntityMap= " + sCacheSubscriptionInfoEntityMap);
printwriter.println(" SubscriptionInfoMap= " + mSubscriptionInfoMap);
printwriter.flush();
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index a4193f8..0fcfcb5 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -36,6 +36,7 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.EventLog;
@@ -370,7 +371,7 @@
mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE);
mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext()));
mDataUsagePreference.setTemplate(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
- .build(), 0 /*subId*/);
+ .build(), SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mResetInternetPreference = findPreference(PREF_KEY_RESET_INTERNET);
if (mResetInternetPreference != null) {
mResetInternetPreference.setVisible(false);
diff --git a/src/com/android/settings/network/ResetNetworkOperationBuilder.java b/src/com/android/settings/network/ResetNetworkOperationBuilder.java
index 6f36074..dfcca52 100644
--- a/src/com/android/settings/network/ResetNetworkOperationBuilder.java
+++ b/src/com/android/settings/network/ResetNetworkOperationBuilder.java
@@ -18,6 +18,7 @@
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothManager;
+import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.Context;
import android.net.ConnectivityManager;
@@ -28,11 +29,14 @@
import android.net.wifi.p2p.WifiP2pManager;
import android.os.Looper;
import android.os.RecoverySystem;
+import android.os.RemoteException;
import android.os.SystemClock;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
+import androidx.annotation.Nullable;
+
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.ResetNetworkRequest;
@@ -61,6 +65,8 @@
private Context mContext;
private List<Runnable> mResetSequence = new ArrayList<Runnable>();
+ @Nullable
+ private Consumer<Boolean> mResetEsimResultCallback = null;
/**
* Constructor of builder.
@@ -125,31 +131,32 @@
}
/**
- * Append a step of resetting E-SIM.
- * @param callerPackage package name of caller
+ * Append a result callback of resetting E-SIM.
+ * @param resultCallback a callback dealing with result of resetting eSIM
* @return this
*/
- public ResetNetworkOperationBuilder resetEsim(String callerPackage) {
- resetEsim(callerPackage, null);
+ public ResetNetworkOperationBuilder resetEsimResultCallback(Consumer<Boolean> resultCallback) {
+ mResetEsimResultCallback = resultCallback;
return this;
}
/**
* Append a step of resetting E-SIM.
* @param callerPackage package name of caller
- * @param resultCallback a Consumer<Boolean> dealing with result of resetting eSIM
* @return this
*/
- public ResetNetworkOperationBuilder resetEsim(String callerPackage,
- Consumer<Boolean> resultCallback) {
+ public ResetNetworkOperationBuilder resetEsim(String callerPackage) {
Runnable runnable = () -> {
long startTime = SystemClock.elapsedRealtime();
- if (!DRY_RUN) {
- Boolean wipped = RecoverySystem.wipeEuiccData(mContext, callerPackage);
- if (resultCallback != null) {
- resultCallback.accept(wipped);
- }
+ boolean wipped;
+ if (DRY_RUN) {
+ wipped = true;
+ } else {
+ wipped = RecoverySystem.wipeEuiccData(mContext, callerPackage);
+ }
+ if (mResetEsimResultCallback != null) {
+ mResetEsimResultCallback.accept(wipped);
}
long endTime = SystemClock.elapsedRealtime();
@@ -257,15 +264,15 @@
*/
public ResetNetworkOperationBuilder restartPhoneProcess() {
Runnable runnable = () -> {
- try {
- mContext.getContentResolver().call(
- getResetTelephonyContentProviderAuthority(),
- METHOD_RESTART_PHONE_PROCESS,
- /* arg= */ null,
- /* extras= */ null);
- Log.i(TAG, "Phone process was restarted.");
- } catch (IllegalArgumentException iae) {
- Log.w(TAG, "Fail to restart phone process: " + iae);
+ // Unstable content provider can avoid us getting killed together with phone process
+ try (ContentProviderClient client = getUnstableTelephonyContentProviderClient()) {
+ if (client != null) {
+ client.call(METHOD_RESTART_PHONE_PROCESS, /* arg= */ null, /* extra= */ null);
+ Log.i(TAG, "Phone process was restarted.");
+ }
+ } catch (RemoteException re) {
+ // It's normal to throw RE since phone process immediately dies
+ Log.i(TAG, "Phone process has been restarted: " + re);
}
};
mResetSequence.add(runnable);
@@ -279,15 +286,13 @@
*/
public ResetNetworkOperationBuilder restartRild() {
Runnable runnable = () -> {
- try {
- mContext.getContentResolver().call(
- getResetTelephonyContentProviderAuthority(),
- METHOD_RESTART_RILD,
- /* arg= */ null,
- /* extras= */ null);
- Log.i(TAG, "RILD was restarted.");
- } catch (IllegalArgumentException iae) {
- Log.w(TAG, "Fail to restart RILD: " + iae);
+ try (ContentProviderClient client = getUnstableTelephonyContentProviderClient()) {
+ if (client != null) {
+ client.call(METHOD_RESTART_RILD, /* arg= */ null, /* extra= */ null);
+ Log.i(TAG, "RILD was restarted.");
+ }
+ } catch (RemoteException re) {
+ Log.w(TAG, "Fail to restart RILD: " + re);
}
};
mResetSequence.add(runnable);
@@ -322,9 +327,18 @@
* @return the authority of the telephony content provider that support methods
* resetPhoneProcess and resetRild.
*/
- @VisibleForTesting
- String getResetTelephonyContentProviderAuthority() {
+ private String getResetTelephonyContentProviderAuthority() {
return mContext.getResources().getString(
R.string.reset_telephony_stack_content_provider_authority);
}
+
+ /**
+ * @return the unstable content provider to avoid us getting killed with phone process
+ */
+ @Nullable
+ @VisibleForTesting
+ public ContentProviderClient getUnstableTelephonyContentProviderClient() {
+ return mContext.getContentResolver().acquireUnstableContentProviderClient(
+ getResetTelephonyContentProviderAuthority());
+ }
}
diff --git a/src/com/android/settings/network/SimOnboardingService.kt b/src/com/android/settings/network/SimOnboardingService.kt
index f6c6065..ea0b5ac 100644
--- a/src/com/android/settings/network/SimOnboardingService.kt
+++ b/src/com/android/settings/network/SimOnboardingService.kt
@@ -27,9 +27,8 @@
import android.telephony.UiccSlotInfo
import android.util.Log
import com.android.settings.network.SimOnboardingActivity.Companion.CallbackType
-import com.android.settings.network.telephony.TelephonyRepository
+import com.android.settings.network.telephony.MobileDataRepository
import com.android.settings.sim.SimActivationNotifier
-import com.android.settings.spa.network.setAutomaticData
import com.android.settings.spa.network.setDefaultData
import com.android.settings.spa.network.setDefaultSms
import com.android.settings.spa.network.setDefaultVoice
@@ -366,7 +365,7 @@
wifiPickerTrackerHelper,
targetPrimarySimMobileData
)
- TelephonyRepository(context).setAutomaticData(
+ MobileDataRepository(context).setAutoDataSwitch(
targetNonDds,
targetPrimarySimAutoDataSwitch.value
)
diff --git a/src/com/android/settings/network/apn/ApnEditCarrierEnabled.kt b/src/com/android/settings/network/apn/ApnEditCarrierEnabled.kt
new file mode 100644
index 0000000..bd58da8
--- /dev/null
+++ b/src/com/android/settings/network/apn/ApnEditCarrierEnabled.kt
@@ -0,0 +1,40 @@
+/*
+ * 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.apn
+
+import android.provider.Telephony
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.res.booleanResource
+import androidx.compose.ui.res.stringResource
+import com.android.settings.R
+import com.android.settingslib.spa.widget.preference.SwitchPreference
+import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
+
+@Composable
+fun ApnEditCarrierEnabled(apnData: ApnData, onCarrierEnabledChanged: (Boolean) -> Unit) {
+ SwitchPreference(
+ object : SwitchPreferenceModel {
+ override val title = stringResource(R.string.carrier_enabled)
+ val allowEdit = booleanResource(R.bool.config_allow_edit_carrier_enabled)
+ override val changeable = {
+ allowEdit && apnData.isFieldEnabled(Telephony.Carriers.CARRIER_ENABLED)
+ }
+ override val checked = { apnData.carrierEnabled }
+ override val onCheckedChange = onCarrierEnabledChanged
+ }
+ )
+}
diff --git a/src/com/android/settings/network/apn/ApnEditPageProvider.kt b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
index 099e2fa..5442082 100644
--- a/src/com/android/settings/network/apn/ApnEditPageProvider.kt
+++ b/src/com/android/settings/network/apn/ApnEditPageProvider.kt
@@ -235,19 +235,7 @@
enabled = apnData.isFieldEnabled(Telephony.Carriers.ROAMING_PROTOCOL),
) { apnData = apnData.copy(apnRoaming = it) }
ApnNetworkTypeCheckBox(apnData) { apnData = apnData.copy(networkType = it) }
- SwitchPreference(
- object : SwitchPreferenceModel {
- override val title = stringResource(R.string.carrier_enabled)
- override val changeable = {
- apnData.apnEnableEnabled &&
- apnData.isFieldEnabled(Telephony.Carriers.CARRIER_ENABLED)
- }
- override val checked = { apnData.apnEnable }
- override val onCheckedChange = { newChecked: Boolean ->
- apnData = apnData.copy(apnEnable = newChecked)
- }
- }
- )
+ ApnEditCarrierEnabled(apnData) { apnData = apnData.copy(carrierEnabled = it) }
}
}
}
\ No newline at end of file
diff --git a/src/com/android/settings/network/apn/ApnPreference.java b/src/com/android/settings/network/apn/ApnPreference.java
index 879fcb6..55258c1 100644
--- a/src/com/android/settings/network/apn/ApnPreference.java
+++ b/src/com/android/settings/network/apn/ApnPreference.java
@@ -85,10 +85,11 @@
final RelativeLayout textArea = (RelativeLayout) view.findViewById(R.id.text_layout);
textArea.setOnClickListener(this);
+ final View radioButtonFrame = view.itemView.requireViewById(R.id.apn_radio_button_frame);
final RadioButton rb = view.itemView.requireViewById(R.id.apn_radiobutton);
mRadioButton = rb;
if (mDefaultSelectable) {
- view.itemView.requireViewById(R.id.apn_radio_button_frame).setOnClickListener((v) -> {
+ radioButtonFrame.setOnClickListener((v) -> {
rb.performClick();
});
rb.setOnCheckedChangeListener(this);
@@ -96,9 +97,9 @@
mProtectFromCheckedChange = true;
rb.setChecked(mIsChecked);
mProtectFromCheckedChange = false;
- rb.setVisibility(View.VISIBLE);
+ radioButtonFrame.setVisibility(View.VISIBLE);
} else {
- rb.setVisibility(View.GONE);
+ radioButtonFrame.setVisibility(View.GONE);
}
}
diff --git a/src/com/android/settings/network/apn/ApnRepository.kt b/src/com/android/settings/network/apn/ApnRepository.kt
index 2d41976..8433715 100644
--- a/src/com/android/settings/network/apn/ApnRepository.kt
+++ b/src/com/android/settings/network/apn/ApnRepository.kt
@@ -90,7 +90,7 @@
apnRoaming = context.convertProtocol2Options(
cursor.getString(Telephony.Carriers.ROAMING_PROTOCOL)
),
- apnEnable = cursor.getInt(Telephony.Carriers.CARRIER_ENABLED) == 1,
+ carrierEnabled = cursor.getInt(Telephony.Carriers.CARRIER_ENABLED) == 1,
networkType = cursor.getLong(Telephony.Carriers.NETWORK_TYPE_BITMASK),
edited = cursor.getInt(Telephony.Carriers.EDITED_STATUS),
userEditable = cursor.getInt(Telephony.Carriers.USER_EDITABLE),
diff --git a/src/com/android/settings/network/apn/ApnStatus.kt b/src/com/android/settings/network/apn/ApnStatus.kt
index dc50452..6492d39 100644
--- a/src/com/android/settings/network/apn/ApnStatus.kt
+++ b/src/com/android/settings/network/apn/ApnStatus.kt
@@ -44,11 +44,10 @@
val apnType: String = "",
val apnProtocol: Int = -1,
val apnRoaming: Int = -1,
- val apnEnable: Boolean = true,
+ val carrierEnabled: Boolean = true,
val networkType: Long = 0,
val edited: Int = Telephony.Carriers.USER_EDITED,
val userEditable: Int = 1,
- val apnEnableEnabled: Boolean = true,
val newApn: Boolean = false,
val subId: Int = -1,
val validEnabled: Boolean = false,
@@ -72,7 +71,7 @@
Telephony.Carriers.NETWORK_TYPE_BITMASK to networkType,
// Copy network type into lingering network type.
Telephony.Carriers.LINGERING_NETWORK_TYPE_BITMASK to networkType,
- Telephony.Carriers.CARRIER_ENABLED to apnEnable,
+ Telephony.Carriers.CARRIER_ENABLED to carrierEnabled,
Telephony.Carriers.EDITED_STATUS to Telephony.Carriers.USER_EDITED,
)
@@ -134,10 +133,6 @@
)
}
- apnDataInit = apnDataInit.copy(
- apnEnableEnabled =
- context.resources.getBoolean(R.bool.config_allow_edit_carrier_enabled)
- )
// TODO: mIsCarrierIdApn
return disableInit(apnDataInit)
}
diff --git a/src/com/android/settings/network/telephony/CallStateRepository.kt b/src/com/android/settings/network/telephony/CallStateRepository.kt
index 4b6cdc8..e5a21bf 100644
--- a/src/com/android/settings/network/telephony/CallStateRepository.kt
+++ b/src/com/android/settings/network/telephony/CallStateRepository.kt
@@ -25,14 +25,17 @@
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.onEach
@OptIn(ExperimentalCoroutinesApi::class)
-class CallStateRepository(private val context: Context) {
- private val subscriptionManager = context.requireSubscriptionManager()
+class CallStateRepository(
+ private val context: Context,
+ private val subscriptionRepository: SubscriptionRepository = SubscriptionRepository(context),
+) {
/** Flow for call state of given [subId]. */
fun callStateFlow(subId: Int): Flow<Int> = context.telephonyCallbackFlow(subId) {
@@ -48,9 +51,8 @@
*
* @return true if any active subscription's call state is not idle.
*/
- fun isInCallFlow(): Flow<Boolean> = context.subscriptionsChangedFlow()
- .flatMapLatest {
- val subIds = subscriptionManager.activeSubscriptionIdList
+ fun isInCallFlow(): Flow<Boolean> = subscriptionRepository.activeSubscriptionIdListFlow()
+ .flatMapLatest { subIds ->
if (subIds.isEmpty()) {
flowOf(false)
} else {
@@ -59,9 +61,10 @@
}
}
}
+ .distinctUntilChanged()
.conflate()
- .flowOn(Dispatchers.Default)
.onEach { Log.d(TAG, "isInCallFlow: $it") }
+ .flowOn(Dispatchers.Default)
private companion object {
private const val TAG = "CallStateRepository"
diff --git a/src/com/android/settings/network/telephony/CarrierConfigManagerExt.kt b/src/com/android/settings/network/telephony/CarrierConfigManagerExt.kt
index 05b4c07..5408ab0 100644
--- a/src/com/android/settings/network/telephony/CarrierConfigManagerExt.kt
+++ b/src/com/android/settings/network/telephony/CarrierConfigManagerExt.kt
@@ -24,6 +24,7 @@
/**
* Gets the configuration values of the specified config keys applied.
*/
+@Deprecated("Use CarrierConfigRepository instead")
fun CarrierConfigManager.safeGetConfig(
keys: List<String>,
subId: Int = SubscriptionManager.getDefaultSubscriptionId(),
diff --git a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
new file mode 100644
index 0000000..3ec529d
--- /dev/null
+++ b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
@@ -0,0 +1,217 @@
+/*
+ * 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
+
+import android.content.Context
+import android.os.PersistableBundle
+import android.telephony.CarrierConfigManager
+import android.telephony.SubscriptionManager
+import android.util.Log
+import androidx.annotation.VisibleForTesting
+import java.util.concurrent.ConcurrentHashMap
+import kotlinx.atomicfu.atomic
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.asExecutor
+
+class CarrierConfigRepository(private val context: Context) {
+
+ private val carrierConfigManager: CarrierConfigManager? =
+ context.getSystemService(CarrierConfigManager::class.java)
+
+ private enum class KeyType {
+ BOOLEAN,
+ INT,
+ STRING
+ }
+
+ interface CarrierConfigAccessor {
+ fun getBoolean(key: String): Boolean
+
+ fun getInt(key: String): Int
+
+ fun getString(key: String): String?
+ }
+
+ private class Accessor(private val cache: ConfigCache) : CarrierConfigAccessor {
+ private val keysToRetrieve = mutableMapOf<String, KeyType>()
+
+ override fun getBoolean(key: String): Boolean {
+ check(key.endsWith("_bool")) { "Boolean key should ends with _bool" }
+ val value = cache[key]
+ return if (value == null) {
+ keysToRetrieve += key to KeyType.BOOLEAN
+ DefaultConfig.getBoolean(key)
+ } else {
+ check(value is BooleanConfigValue) { "Boolean value type wrong" }
+ value.value
+ }
+ }
+
+ override fun getInt(key: String): Int {
+ check(key.endsWith("_int")) { "Int key should ends with _int" }
+ val value = cache[key]
+ return if (value == null) {
+ keysToRetrieve += key to KeyType.INT
+ DefaultConfig.getInt(key)
+ } else {
+ check(value is IntConfigValue) { "Int value type wrong" }
+ value.value
+ }
+ }
+
+ override fun getString(key: String): String? {
+ check(key.endsWith("_string")) { "String key should ends with _string" }
+ val value = cache[key]
+ return if (value == null) {
+ keysToRetrieve += key to KeyType.STRING
+ DefaultConfig.getString(key)
+ } else {
+ check(value is StringConfigValue) { "String value type wrong" }
+ value.value
+ }
+ }
+
+ fun getKeysToRetrieve(): Map<String, KeyType> = keysToRetrieve
+ }
+
+ /**
+ * Gets the configuration values for the given [subId].
+ *
+ * Configuration values could be accessed in [block]. Note: [block] could be called multiple
+ * times, so it should be pure function without side effort.
+ */
+ fun <T> transformConfig(subId: Int, block: CarrierConfigAccessor.() -> T): T {
+ val perSubCache = getPerSubCache(subId)
+ val accessor = Accessor(perSubCache)
+ val result = accessor.block()
+ val keysToRetrieve = accessor.getKeysToRetrieve()
+ // If all keys found in the first pass, no need to collect again
+ if (keysToRetrieve.isEmpty()) return result
+
+ perSubCache.update(subId, keysToRetrieve)
+
+ return accessor.block()
+ }
+
+ /** Gets the configuration boolean for the given [subId] and [key]. */
+ fun getBoolean(subId: Int, key: String): Boolean = transformConfig(subId) { getBoolean(key) }
+
+ /** Gets the configuration int for the given [subId] and [key]. */
+ fun getInt(subId: Int, key: String): Int = transformConfig(subId) { getInt(key) }
+
+ /** Gets the configuration string for the given [subId] and [key]. */
+ fun getString(subId: Int, key: String): String? = transformConfig(subId) { getString(key) }
+
+ private fun ConfigCache.update(subId: Int, keysToRetrieve: Map<String, KeyType>) {
+ val config = safeGetConfig(subId, keysToRetrieve.keys) ?: return
+ for ((key, type) in keysToRetrieve) {
+ when (type) {
+ KeyType.BOOLEAN -> this[key] = BooleanConfigValue(config.getBoolean(key))
+ KeyType.INT -> this[key] = IntConfigValue(config.getInt(key))
+ KeyType.STRING -> this[key] = StringConfigValue(config.getString(key))
+ }
+ }
+ }
+
+ /** Gets the configuration values of the specified config keys applied. */
+ private fun safeGetConfig(subId: Int, keys: Collection<String>): PersistableBundle? {
+ if (carrierConfigManager == null || !SubscriptionManager.isValidSubscriptionId(subId)) {
+ return null
+ }
+ tryRegisterListener(context)
+ return try {
+ carrierConfigManager.getConfigForSubId(subId, *keys.toTypedArray())
+ } catch (e: Exception) {
+ Log.e(TAG, "safeGetConfig: exception", e)
+ // The CarrierConfigLoader (the service implemented the CarrierConfigManager) hasn't
+ // been initialized yet. This may occurs during very early phase of phone booting up
+ // or when Phone process has been restarted.
+ // Settings should not assume Carrier config loader (and any other system services
+ // as well) are always available. If not available, use default value instead.
+ null
+ }
+ }
+
+ companion object {
+ private const val TAG = "CarrierConfigRepository"
+
+ private val DefaultConfig = CarrierConfigManager.getDefaultConfig()
+
+ /** Cache of config values for each subscription. */
+ private val Cache = ConcurrentHashMap<Int, ConfigCache>()
+
+ private fun getPerSubCache(subId: Int) =
+ Cache.computeIfAbsent(subId) { ConcurrentHashMap() }
+
+ /** To make sure the registerCarrierConfigChangeListener is only called once. */
+ private val ListenerRegistered = atomic(false)
+
+ private fun tryRegisterListener(context: Context) {
+ if (ListenerRegistered.compareAndSet(expect = false, update = true)) {
+ val carrierConfigManager =
+ context.applicationContext.getSystemService(CarrierConfigManager::class.java)
+ if (carrierConfigManager != null) {
+ carrierConfigManager.registerCarrierConfigChangeListener()
+ } else {
+ ListenerRegistered.getAndSet(false)
+ }
+ }
+ }
+
+ private fun CarrierConfigManager.registerCarrierConfigChangeListener() {
+ val executor = Dispatchers.Default.asExecutor()
+ registerCarrierConfigChangeListener(executor) { _, subId, _, _ ->
+ Log.d(TAG, "[$subId] onCarrierConfigChanged")
+ Cache.remove(subId)
+ }
+ }
+
+ @VisibleForTesting
+ fun resetForTest() {
+ Cache.clear()
+ ListenerRegistered.getAndSet(false)
+ }
+
+ @VisibleForTesting
+ fun setBooleanForTest(subId: Int, key: String, value: Boolean) {
+ check(key.endsWith("_bool")) { "Boolean key should ends with _bool" }
+ getPerSubCache(subId)[key] = BooleanConfigValue(value)
+ }
+
+ @VisibleForTesting
+ fun setIntForTest(subId: Int, key: String, value: Int) {
+ check(key.endsWith("_int")) { "Int key should ends with _int" }
+ getPerSubCache(subId)[key] = IntConfigValue(value)
+ }
+
+ @VisibleForTesting
+ fun setStringForTest(subId: Int, key: String, value: String) {
+ check(key.endsWith("_string")) { "String key should ends with _string" }
+ getPerSubCache(subId)[key] = StringConfigValue(value)
+ }
+ }
+}
+
+private sealed interface ConfigValue
+
+private data class BooleanConfigValue(val value: Boolean) : ConfigValue
+
+private data class IntConfigValue(val value: Int) : ConfigValue
+
+private data class StringConfigValue(val value: String?) : ConfigValue
+
+private typealias ConfigCache = ConcurrentHashMap<String, ConfigValue>
diff --git a/src/com/android/settings/network/telephony/DataSubscriptionRepository.kt b/src/com/android/settings/network/telephony/DataSubscriptionRepository.kt
index 99f639b..62e7e98 100644
--- a/src/com/android/settings/network/telephony/DataSubscriptionRepository.kt
+++ b/src/com/android/settings/network/telephony/DataSubscriptionRepository.kt
@@ -51,46 +51,41 @@
)
.map { it.getIntExtra(SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID) }
.onStart { emit(SubscriptionManager.getDefaultDataSubscriptionId()) }
+ .distinctUntilChanged()
.conflate()
.flowOn(Dispatchers.Default)
fun activeDataSubscriptionIdFlow(): Flow<Int> =
- telephonyManager.telephonyCallbackFlow {
- object : TelephonyCallback(), TelephonyCallback.ActiveDataSubscriptionIdListener {
- override fun onActiveDataSubscriptionIdChanged(subId: Int) {
- trySend(subId)
- Log.d(TAG, "activeDataSubscriptionIdFlow: $subId")
+ telephonyManager
+ .telephonyCallbackFlow {
+ object : TelephonyCallback(), TelephonyCallback.ActiveDataSubscriptionIdListener {
+ override fun onActiveDataSubscriptionIdChanged(subId: Int) {
+ trySend(subId)
+ Log.d(TAG, "activeDataSubscriptionIdFlow: $subId")
+ }
}
}
- }
+ .distinctUntilChanged()
fun dataSummaryFlow(): Flow<String> =
combine(defaultDataSubscriptionIdFlow(), activeDataSubscriptionIdFlow()) {
- defaultSubId,
- activeSubId ->
- DataSubscriptionIds(defaultSubId, activeSubId)
+ defaultDataSubId,
+ activeDataSubId ->
+ getDataSummary(defaultDataSubId, activeDataSubId)
}
- .distinctUntilChanged()
- .map { it.getDataSummary() }
.conflate()
.flowOn(Dispatchers.Default)
- private data class DataSubscriptionIds(
- val defaultSubId: Int,
- val activeSubId: Int,
- )
-
- private fun DataSubscriptionIds.getDataSummary(): String {
- val activeSubInfo = subscriptionManager.getActiveSubscriptionInfo(activeSubId) ?: return ""
+ private fun getDataSummary(defaultDataSubId: Int, activeDataSubId: Int): String {
+ if (defaultDataSubId == activeDataSubId) return getDisplayName(defaultDataSubId)
+ val activeSubInfo =
+ subscriptionManager.getActiveSubscriptionInfo(activeDataSubId)
+ ?: return getDisplayName(defaultDataSubId)
if (!SubscriptionUtil.isSubscriptionVisible(subscriptionManager, context, activeSubInfo)) {
- return getDisplayName(defaultSubId)
+ return getDisplayName(defaultDataSubId)
}
- val uniqueName = getDisplayName(activeSubId)
- return if (activeSubId == defaultSubId) {
- uniqueName
- } else {
- context.getString(R.string.mobile_data_temp_using, uniqueName)
- }
+ // non-DDS is active
+ return context.getString(R.string.mobile_data_temp_using, getDisplayName(activeDataSubId))
}
companion object {
diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
index e14d5f8..445597f 100644
--- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
+++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
@@ -22,7 +22,6 @@
import android.telephony.data.ApnSetting
import androidx.lifecycle.LifecycleOwner
import androidx.preference.PreferenceScreen
-import com.android.settings.network.mobileDataEnabledFlow
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import kotlinx.coroutines.flow.combine
@@ -71,7 +70,7 @@
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
combine(
- mContext.mobileDataEnabledFlow(mSubId),
+ MobileDataRepository(mContext).mobileDataEnabledChangedFlow(mSubId),
mContext.subscriptionsChangedFlow(), // Capture isMobileDataPolicyEnabled() changes
) { _, _ -> }.collectLatestWithLifecycle(viewLifecycleOwner) {
preferenceScreen?.let { super.displayPreference(it) }
diff --git a/src/com/android/settings/network/telephony/MobileDataRepository.kt b/src/com/android/settings/network/telephony/MobileDataRepository.kt
new file mode 100644
index 0000000..5a0dff7
--- /dev/null
+++ b/src/com/android/settings/network/telephony/MobileDataRepository.kt
@@ -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.network.telephony
+
+import android.content.Context
+import android.provider.Settings
+import android.telephony.SubscriptionManager
+import android.telephony.TelephonyManager
+import android.telephony.TelephonyManager.MobileDataPolicy
+import android.util.Log
+import com.android.settings.wifi.WifiPickerTrackerHelper
+import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalChangeFlow
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.catch
+import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
+import kotlinx.coroutines.flow.onEach
+
+class MobileDataRepository(
+ private val context: Context,
+ private val subscriptionsChangedFlow: Flow<Unit> = context.subscriptionsChangedFlow(),
+) {
+ fun isMobileDataPolicyEnabledFlow(subId: Int, @MobileDataPolicy policy: Int): Flow<Boolean> {
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
+ val telephonyManager = context.telephonyManager(subId)
+ return subscriptionsChangedFlow
+ .map { telephonyManager.isMobileDataPolicyEnabled(policy) }
+ .distinctUntilChanged()
+ .conflate()
+ .onEach { Log.d(TAG, "[$subId] isMobileDataPolicyEnabled($policy): $it") }
+ .flowOn(Dispatchers.Default)
+ }
+
+ fun setMobileDataPolicyEnabled(subId: Int, @MobileDataPolicy policy: Int, enabled: Boolean) {
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return
+ Log.d(TAG, "[$subId] setMobileDataPolicyEnabled($policy): $enabled")
+ context.telephonyManager(subId).setMobileDataPolicyEnabled(policy, enabled)
+ }
+
+ fun setAutoDataSwitch(subId: Int, newEnabled: Boolean) {
+ setMobileDataPolicyEnabled(
+ subId = subId,
+ policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
+ enabled = newEnabled,
+ )
+ }
+
+ /**
+ * Flow for mobile data enabled changed event.
+ *
+ * Note: This flow can only notify enabled status changes, cannot provide the latest status.
+ */
+ fun mobileDataEnabledChangedFlow(subId: Int, sendInitialValue: Boolean = true): Flow<Unit> =
+ mobileSettingsGlobalChangedFlow(Settings.Global.MOBILE_DATA, subId, sendInitialValue)
+
+ private fun mobileSettingsGlobalChangedFlow(
+ name: String,
+ subId: Int,
+ sendInitialValue: Boolean = true,
+ ): Flow<Unit> {
+ val flow = context.settingsGlobalChangeFlow(name, sendInitialValue)
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return flow
+ val subIdFlow =
+ context.settingsGlobalChangeFlow(name = name + subId, sendInitialValue = false)
+ return merge(flow, subIdFlow)
+ }
+
+ fun isMobileDataEnabledFlow(subId: Int): Flow<Boolean> {
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
+ val telephonyManager = context.telephonyManager(subId)
+ return mobileDataEnabledChangedFlow(subId)
+ .map {
+ telephonyManager.isDataEnabledForReason(TelephonyManager.DATA_ENABLED_REASON_USER)
+ }
+ .catch { e ->
+ Log.w(TAG, "[$subId] isMobileDataEnabledFlow: exception", e)
+ emit(false)
+ }
+ .distinctUntilChanged()
+ .conflate()
+ .onEach { Log.d(TAG, "[$subId] isMobileDataEnabledFlow: $it") }
+ .flowOn(Dispatchers.Default)
+ }
+
+ fun setMobileDataEnabled(
+ subId: Int,
+ enabled: Boolean,
+ wifiPickerTrackerHelper: WifiPickerTrackerHelper? = null,
+ ) {
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return
+
+ Log.d(TAG, "setMobileDataEnabled: $enabled")
+ MobileNetworkUtils.setMobileDataEnabled(
+ context, subId, enabled, /* disableOtherSubscriptions= */ true)
+
+ if (wifiPickerTrackerHelper != null &&
+ !wifiPickerTrackerHelper.isCarrierNetworkProvisionEnabled(subId)) {
+ wifiPickerTrackerHelper.setCarrierNetworkEnabled(enabled)
+ }
+ }
+
+ /** Creates an instance of a cold Flow for whether data roaming is enabled of given [subId]. */
+ fun isDataRoamingEnabledFlow(subId: Int): Flow<Boolean> {
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
+ val telephonyManager = context.telephonyManager(subId)
+ return mobileSettingsGlobalChangedFlow(Settings.Global.DATA_ROAMING, subId)
+ .map { telephonyManager.isDataRoamingEnabled }
+ .distinctUntilChanged()
+ .conflate()
+ .onEach { Log.d(TAG, "[$subId] isDataRoamingEnabledFlow: $it") }
+ .flowOn(Dispatchers.Default)
+ }
+
+ private companion object {
+ private const val TAG = "MobileDataRepository"
+ }
+}
diff --git a/src/com/android/settings/network/telephony/MobileNetworkEidPreferenceController.kt b/src/com/android/settings/network/telephony/MobileNetworkEidPreferenceController.kt
index 1e635a5..621465e 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkEidPreferenceController.kt
+++ b/src/com/android/settings/network/telephony/MobileNetworkEidPreferenceController.kt
@@ -91,7 +91,6 @@
)
return
}
- preference.isVisible = false
val viewModel by lazyViewModel
coroutineScope = viewLifecycleOwner.lifecycleScope
@@ -127,7 +126,6 @@
preference.title = title
preference.dialogTitle = title
preference.summary = eid
- preference.isVisible = eid.isNotEmpty()
}
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
diff --git a/src/com/android/settings/network/telephony/MobileNetworkImeiPreferenceController.kt b/src/com/android/settings/network/telephony/MobileNetworkImeiPreferenceController.kt
index a6fb7ba..6b3f903 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkImeiPreferenceController.kt
+++ b/src/com/android/settings/network/telephony/MobileNetworkImeiPreferenceController.kt
@@ -113,7 +113,6 @@
private fun refreshUi(){
preference.title = title
preference.summary = imei
- preference.isVisible = true
}
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index 8b927a9..d70ef25 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -20,11 +20,14 @@
import android.app.Activity;
import android.app.settings.SettingsEnums;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -79,7 +82,6 @@
@VisibleForTesting
static final String KEY_CLICKED_PREF = "key_clicked_pref";
- private static final String KEY_ROAMING_PREF = "button_roaming_key";
private static final String KEY_CALLS_PREF = "calls_preference";
private static final String KEY_SMS_PREF = "sms_preference";
private static final String KEY_MOBILE_DATA_PREF = "mobile_data_enable";
@@ -107,6 +109,15 @@
private SubscriptionInfoEntity mSubscriptionInfoEntity;
private MobileNetworkInfoEntity mMobileNetworkInfoEntity;
+ private BroadcastReceiver mBrocastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)) {
+ redrawPreferenceControllers();
+ }
+ }
+ };
+
public MobileNetworkSettings() {
super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
}
@@ -178,8 +189,6 @@
return Arrays.asList(
new DataUsageSummaryPreferenceController(context, mSubId),
- new RoamingPreferenceController(context, KEY_ROAMING_PREF, getSettingsLifecycle(),
- this, mSubId),
new CallsDefaultSubscriptionController(context, KEY_CALLS_PREF,
getSettingsLifecycle(), this),
new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),
@@ -263,8 +272,7 @@
final RoamingPreferenceController roamingPreferenceController =
use(RoamingPreferenceController.class);
if (roamingPreferenceController != null) {
- roamingPreferenceController.init(getFragmentManager(), mSubId,
- mMobileNetworkInfoEntity);
+ roamingPreferenceController.init(getParentFragmentManager(), mSubId);
}
final SatelliteSettingPreferenceController satelliteSettingPreferenceController = use(
SatelliteSettingPreferenceController.class);
@@ -355,6 +363,10 @@
mMobileNetworkRepository.updateEntity();
// TODO: remove log after fixing b/182326102
Log.d(LOG_TAG, "onResume() subId=" + mSubId);
+
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
+ getContext().registerReceiver(mBrocastReceiver, intentFilter, Context.RECEIVER_EXPORTED);
}
private void onSubscriptionDetailChanged() {
@@ -374,6 +386,7 @@
@Override
public void onPause() {
mMobileNetworkRepository.removeRegister(this);
+ getContext().unregisterReceiver(mBrocastReceiver);
super.onPause();
}
diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.java b/src/com/android/settings/network/telephony/RoamingPreferenceController.java
deleted file mode 100644
index bf02308..0000000
--- a/src/com/android/settings/network/telephony/RoamingPreferenceController.java
+++ /dev/null
@@ -1,215 +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.telephony;
-
-import static androidx.lifecycle.Lifecycle.Event.ON_START;
-import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
-
-import android.content.Context;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.fragment.app.FragmentManager;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.lifecycle.OnLifecycleEvent;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.network.MobileNetworkRepository;
-import com.android.settingslib.RestrictedSwitchPreference;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Preference controller for "Roaming"
- */
-public class RoamingPreferenceController extends TelephonyTogglePreferenceController implements
- LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
- private static final String TAG = "RoamingController";
- private static final String DIALOG_TAG = "MobileDataDialog";
-
- private RestrictedSwitchPreference mSwitchPreference;
- private TelephonyManager mTelephonyManager;
- private CarrierConfigManager mCarrierConfigManager;
- protected MobileNetworkRepository mMobileNetworkRepository;
- protected LifecycleOwner mLifecycleOwner;
- private List<MobileNetworkInfoEntity> mMobileNetworkInfoEntityList = new ArrayList<>();
-
- @VisibleForTesting
- FragmentManager mFragmentManager;
- MobileNetworkInfoEntity mMobileNetworkInfoEntity;
-
- public RoamingPreferenceController(Context context, String key, Lifecycle lifecycle,
- LifecycleOwner lifecycleOwner, int subId) {
- this(context, key);
- mSubId = subId;
- mLifecycleOwner = lifecycleOwner;
- if (lifecycle != null) {
- lifecycle.addObserver(this);
- }
- }
-
- public RoamingPreferenceController(Context context, String key) {
- super(context, key);
- mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
- mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
- }
-
- @Override
- public int getAvailabilityStatus() {
- final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
- if (carrierConfig != null && carrierConfig.getBoolean(
- CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL)) {
- return CONDITIONALLY_UNAVAILABLE;
- }
- return AVAILABLE;
- }
-
- @OnLifecycleEvent(ON_START)
- public void onStart() {
- mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mSubId);
- mMobileNetworkRepository.updateEntity();
- }
-
- @OnLifecycleEvent(ON_STOP)
- public void onStop() {
- mMobileNetworkRepository.removeRegister(this);
- }
-
- @Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- mSwitchPreference = screen.findPreference(getPreferenceKey());
- }
-
- @Override
- public int getAvailabilityStatus(int subId) {
- return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
- ? AVAILABLE
- : AVAILABLE_UNSEARCHABLE;
- }
-
- @Override
- public boolean setChecked(boolean isChecked) {
- if (isDialogNeeded()) {
- showDialog();
- } else {
- // Update data directly if we don't need dialog
- mTelephonyManager.setDataRoamingEnabled(isChecked);
- return true;
- }
-
- return false;
- }
-
- @Override
- public void updateState(Preference preference) {
- super.updateState(preference);
- mSwitchPreference = (RestrictedSwitchPreference) preference;
- update();
- }
-
- private void update() {
- if (mSwitchPreference == null) {
- return;
- }
- if (!mSwitchPreference.isDisabledByAdmin()) {
- mSwitchPreference.setEnabled(mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- mSwitchPreference.setChecked(isChecked());
- }
- }
-
- @VisibleForTesting
- boolean isDialogNeeded() {
- final boolean isRoamingEnabled = mMobileNetworkInfoEntity == null ? false
- : mMobileNetworkInfoEntity.isDataRoamingEnabled;
- final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(
- mSubId);
- // Need dialog if we need to turn on roaming and the roaming charge indication is allowed
- if (!isRoamingEnabled && (carrierConfig == null || !carrierConfig.getBoolean(
- CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL))) {
- return true;
- }
- return false;
- }
-
- @Override
- public boolean isChecked() {
- return mMobileNetworkInfoEntity == null ? false
- : mMobileNetworkInfoEntity.isDataRoamingEnabled;
- }
-
- public void init(FragmentManager fragmentManager, int subId, MobileNetworkInfoEntity entity) {
- mFragmentManager = fragmentManager;
- mSubId = subId;
- mMobileNetworkInfoEntity = entity;
- mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
- if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- return;
- }
- final TelephonyManager telephonyManager = mTelephonyManager
- .createForSubscriptionId(mSubId);
- if (telephonyManager == null) {
- Log.w(TAG, "fail to init in sub" + mSubId);
- mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
- return;
- }
- mTelephonyManager = telephonyManager;
- }
-
- private void showDialog() {
- final RoamingDialogFragment dialogFragment = RoamingDialogFragment.newInstance(mSubId);
-
- dialogFragment.show(mFragmentManager, DIALOG_TAG);
- }
-
- @VisibleForTesting
- public void setMobileNetworkInfoEntity(MobileNetworkInfoEntity mobileNetworkInfoEntity) {
- mMobileNetworkInfoEntity = mobileNetworkInfoEntity;
- }
-
- @Override
- public void onAllMobileNetworkInfoChanged(
- List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
- mMobileNetworkInfoEntityList = mobileNetworkInfoEntityList;
- mMobileNetworkInfoEntityList.forEach(entity -> {
- if (Integer.parseInt(entity.subId) == mSubId) {
- mMobileNetworkInfoEntity = entity;
- update();
- refreshSummary(mSwitchPreference);
- return;
- }
- });
- }
-
- @Override
- public void onDataRoamingChanged(int subId, boolean enabled) {
- if (subId != mSubId) {
- Log.d(TAG, "onDataRoamingChanged - wrong subId : " + subId + " / " + enabled);
- return;
- }
- update();
- }
-}
diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.kt b/src/com/android/settings/network/telephony/RoamingPreferenceController.kt
new file mode 100644
index 0000000..2529d41
--- /dev/null
+++ b/src/com/android/settings/network/telephony/RoamingPreferenceController.kt
@@ -0,0 +1,105 @@
+/*
+ * 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
+
+import android.content.Context
+import android.os.UserManager
+import android.telephony.CarrierConfigManager
+import android.telephony.SubscriptionManager
+import android.telephony.TelephonyManager
+import androidx.annotation.VisibleForTesting
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
+import androidx.compose.ui.res.stringResource
+import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import com.android.settings.R
+import com.android.settings.spa.preference.ComposePreferenceController
+import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
+import com.android.settingslib.spaprivileged.model.enterprise.Restrictions
+import com.android.settingslib.spaprivileged.template.preference.RestrictedSwitchPreference
+
+/** Preference controller for "Roaming" */
+class RoamingPreferenceController
+@JvmOverloads
+constructor(
+ context: Context,
+ key: String,
+ private val mobileDataRepository: MobileDataRepository = MobileDataRepository(context),
+) : ComposePreferenceController(context, key) {
+ @VisibleForTesting var fragmentManager: FragmentManager? = null
+ private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
+
+ private var telephonyManager = context.getSystemService(TelephonyManager::class.java)!!
+ private val carrierConfigRepository = CarrierConfigRepository(context)
+
+ fun init(fragmentManager: FragmentManager, subId: Int) {
+ this.fragmentManager = fragmentManager
+ this.subId = subId
+ telephonyManager = telephonyManager.createForSubscriptionId(subId)
+ }
+
+ override fun getAvailabilityStatus(): Int {
+ if (!SubscriptionManager.isValidSubscriptionId(subId)) return CONDITIONALLY_UNAVAILABLE
+ val isForceHomeNetwork =
+ carrierConfigRepository.getBoolean(
+ subId, CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL)
+
+ return if (isForceHomeNetwork) CONDITIONALLY_UNAVAILABLE else AVAILABLE
+ }
+
+ @Composable
+ override fun Content() {
+ val summary = stringResource(R.string.roaming_enable)
+ val isDataRoamingEnabled by
+ remember { mobileDataRepository.isDataRoamingEnabledFlow(subId) }
+ .collectAsStateWithLifecycle(null)
+ RestrictedSwitchPreference(
+ model =
+ object : SwitchPreferenceModel {
+ override val title = stringResource(R.string.roaming)
+ override val summary = { summary }
+ override val checked = { isDataRoamingEnabled }
+ override val onCheckedChange: (Boolean) -> Unit = { newChecked ->
+ if (newChecked && isDialogNeeded()) {
+ showDialog()
+ } else {
+ // Update data directly if we don't need dialog
+ telephonyManager.isDataRoamingEnabled = newChecked
+ }
+ }
+ },
+ restrictions = Restrictions(keys = listOf(UserManager.DISALLOW_DATA_ROAMING)),
+ )
+ }
+
+ @VisibleForTesting
+ fun isDialogNeeded(): Boolean {
+ // Need dialog if we need to turn on roaming and the roaming charge indication is allowed
+ return !carrierConfigRepository.getBoolean(
+ subId, CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL)
+ }
+
+ private fun showDialog() {
+ fragmentManager?.let { RoamingDialogFragment.newInstance(subId).show(it, DIALOG_TAG) }
+ }
+
+ companion object {
+ private const val DIALOG_TAG = "MobileDataDialog"
+ }
+}
diff --git a/src/com/android/settings/network/telephony/SatelliteSetting.java b/src/com/android/settings/network/telephony/SatelliteSetting.java
index 314fb3a..7e9e61d 100644
--- a/src/com/android/settings/network/telephony/SatelliteSetting.java
+++ b/src/com/android/settings/network/telephony/SatelliteSetting.java
@@ -92,6 +92,14 @@
}
mActivity = getActivity();
+
+ mSatelliteManager = mActivity.getSystemService(SatelliteManager.class);
+ if (mSatelliteManager == null) {
+ Log.d(TAG, "SatelliteManager is null, do nothing.");
+ finish();
+ return;
+ }
+
mSubId = mActivity.getIntent().getIntExtra(SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
@@ -104,7 +112,6 @@
}
mTelephonymanager = mActivity.getSystemService(TelephonyManager.class);
- mSatelliteManager = mActivity.getSystemService(SatelliteManager.class);
}
@Override
diff --git a/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java b/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java
index 153698c..9ca0294 100644
--- a/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java
@@ -64,6 +64,10 @@
return UNSUPPORTED_ON_DEVICE;
}
+ if (mSatelliteManager == null) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+
final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId);
final boolean isSatelliteAttachSupported = carrierConfig.getBoolean(
CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);
diff --git a/src/com/android/settings/network/telephony/SubscriptionRepository.kt b/src/com/android/settings/network/telephony/SubscriptionRepository.kt
index 3ee8548..c952310 100644
--- a/src/com/android/settings/network/telephony/SubscriptionRepository.kt
+++ b/src/com/android/settings/network/telephony/SubscriptionRepository.kt
@@ -29,6 +29,7 @@
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.flowOn
@@ -68,6 +69,30 @@
}
fun canDisablePhysicalSubscription() = subscriptionManager.canDisablePhysicalSubscription()
+
+ /** Flow for subscriptions changes. */
+ fun subscriptionsChangedFlow() = callbackFlow {
+ val listener = object : SubscriptionManager.OnSubscriptionsChangedListener() {
+ override fun onSubscriptionsChanged() {
+ trySend(Unit)
+ }
+ }
+
+ subscriptionManager.addOnSubscriptionsChangedListener(
+ Dispatchers.Default.asExecutor(),
+ listener,
+ )
+
+ awaitClose { subscriptionManager.removeOnSubscriptionsChangedListener(listener) }
+ }.conflate().onEach { Log.d(TAG, "subscriptions changed") }.flowOn(Dispatchers.Default)
+
+ /** Flow of active subscription ids. */
+ fun activeSubscriptionIdListFlow(): Flow<List<Int>> = context.subscriptionsChangedFlow()
+ .map { subscriptionManager.activeSubscriptionIdList.sorted() }
+ .distinctUntilChanged()
+ .conflate()
+ .onEach { Log.d(TAG, "activeSubscriptionIdList: $it") }
+ .flowOn(Dispatchers.Default)
}
val Context.subscriptionManager: SubscriptionManager?
@@ -79,22 +104,8 @@
SubscriptionUtil.getBidiFormattedPhoneNumber(this, subscriptionInfo)
}.filterNot { it.isNullOrEmpty() }.flowOn(Dispatchers.Default)
-fun Context.subscriptionsChangedFlow() = callbackFlow {
- val subscriptionManager = requireSubscriptionManager()
-
- val listener = object : SubscriptionManager.OnSubscriptionsChangedListener() {
- override fun onSubscriptionsChanged() {
- trySend(Unit)
- }
- }
-
- subscriptionManager.addOnSubscriptionsChangedListener(
- Dispatchers.Default.asExecutor(),
- listener,
- )
-
- awaitClose { subscriptionManager.removeOnSubscriptionsChangedListener(listener) }
-}.conflate().onEach { Log.d(TAG, "subscriptions changed") }.flowOn(Dispatchers.Default)
+fun Context.subscriptionsChangedFlow(): Flow<Unit> =
+ SubscriptionRepository(this).subscriptionsChangedFlow()
/**
* Return a list of subscriptions that are available and visible to the user.
diff --git a/src/com/android/settings/network/telephony/TelephonyRepository.kt b/src/com/android/settings/network/telephony/TelephonyRepository.kt
index 7c334ee..3317c71 100644
--- a/src/com/android/settings/network/telephony/TelephonyRepository.kt
+++ b/src/com/android/settings/network/telephony/TelephonyRepository.kt
@@ -17,98 +17,16 @@
package com.android.settings.network.telephony
import android.content.Context
-import android.telephony.SubscriptionManager
import android.telephony.TelephonyCallback
import android.telephony.TelephonyManager
-import android.util.Log
-import com.android.settings.network.mobileDataEnabledFlow
-import com.android.settings.wifi.WifiPickerTrackerHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.channels.ProducerScope
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
-import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.conflate
-import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.flowOn
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.onEach
-
-class TelephonyRepository(
- private val context: Context,
- private val subscriptionsChangedFlow: Flow<Unit> = context.subscriptionsChangedFlow(),
-) {
- fun isMobileDataPolicyEnabledFlow(
- subId: Int,
- @TelephonyManager.MobileDataPolicy policy: Int,
- ): Flow<Boolean> {
- if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
-
- val telephonyManager = context.telephonyManager(subId)
-
- return subscriptionsChangedFlow.map {
- telephonyManager.isMobileDataPolicyEnabled(policy)
- .also { Log.d(TAG, "[$subId] isMobileDataPolicyEnabled($policy): $it") }
- }.conflate().flowOn(Dispatchers.Default)
- }
-
- fun setMobileDataPolicyEnabled(
- subId: Int,
- @TelephonyManager.MobileDataPolicy policy: Int,
- enabled: Boolean,
- ) {
- if (!SubscriptionManager.isValidSubscriptionId(subId)) return
-
- val telephonyManager = context.telephonyManager(subId)
- Log.d(TAG, "[$subId] setMobileDataPolicyEnabled($policy): $enabled")
- telephonyManager.setMobileDataPolicyEnabled(policy, enabled)
- }
-
- fun isDataEnabledFlow(subId: Int): Flow<Boolean> {
- if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
-
- return context.mobileDataEnabledFlow(subId)
- .map {
- val telephonyManager = context.telephonyManager(subId)
- telephonyManager.isDataEnabledForReason(TelephonyManager.DATA_ENABLED_REASON_USER)
- }
- .catch {
- Log.w(TAG, "[$subId] isDataEnabledFlow: exception", it)
- emit(false)
- }
- .onEach { Log.d(TAG, "[$subId] isDataEnabledFlow: isDataEnabled() = $it") }
- .conflate()
- .flowOn(Dispatchers.Default)
- }
-
- fun setMobileData(
- subId: Int,
- enabled: Boolean,
- wifiPickerTrackerHelper: WifiPickerTrackerHelper? = null
- ) {
- if (!SubscriptionManager.isValidSubscriptionId(subId)) return
-
- Log.d(TAG, "setMobileData: $enabled")
- MobileNetworkUtils.setMobileDataEnabled(
- context,
- subId,
- enabled /* enabled */,
- true /* disableOtherSubscriptions */
- )
-
- if (wifiPickerTrackerHelper != null
- && !wifiPickerTrackerHelper.isCarrierNetworkProvisionEnabled(subId)
- ) {
- wifiPickerTrackerHelper.setCarrierNetworkEnabled(enabled)
- }
- }
-
- private companion object {
- private const val TAG = "TelephonyRepository"
- }
-}
/** Creates an instance of a cold Flow for Telephony callback of given [subId]. */
fun <T> Context.telephonyCallbackFlow(
diff --git a/src/com/android/settings/network/telephony/wificalling/CrossSimCallingViewModel.kt b/src/com/android/settings/network/telephony/wificalling/CrossSimCallingViewModel.kt
index 5dcac1e..170af54 100644
--- a/src/com/android/settings/network/telephony/wificalling/CrossSimCallingViewModel.kt
+++ b/src/com/android/settings/network/telephony/wificalling/CrossSimCallingViewModel.kt
@@ -24,11 +24,10 @@
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import com.android.settings.R
-import com.android.settings.network.mobileDataEnabledFlow
+import com.android.settings.network.telephony.MobileDataRepository
+import com.android.settings.network.telephony.SubscriptionRepository
import com.android.settings.network.telephony.ims.ImsMmTelRepositoryImpl
-import com.android.settings.network.telephony.requireSubscriptionManager
import com.android.settings.network.telephony.safeGetConfig
-import com.android.settings.network.telephony.subscriptionsChangedFlow
import com.android.settings.network.telephony.telephonyManager
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
import kotlinx.coroutines.Dispatchers
@@ -48,19 +47,19 @@
private val application: Application,
) : AndroidViewModel(application) {
- private val subscriptionManager = application.requireSubscriptionManager()
+ private val subscriptionRepository = SubscriptionRepository(application)
private val carrierConfigManager =
application.getSystemService(CarrierConfigManager::class.java)!!
private val scope = viewModelScope + Dispatchers.Default
private val metricsFeatureProvider = featureFactory.metricsFeatureProvider
private val updateChannel = Channel<Unit>()
+ private val mobileDataRepository = MobileDataRepository(application)
init {
val resources = application.resources
if (resources.getBoolean(R.bool.config_auto_data_switch_enables_cross_sim_calling)) {
- application.subscriptionsChangedFlow()
- .flatMapLatest {
- val activeSubIds = subscriptionManager.activeSubscriptionIdList.toList()
+ subscriptionRepository.activeSubscriptionIdListFlow()
+ .flatMapLatest { activeSubIds ->
merge(
activeSubIds.anyMobileDataEnableChangedFlow(),
updateChannel.receiveAsFlow(),
@@ -81,7 +80,7 @@
}
private fun List<Int>.anyMobileDataEnableChangedFlow() = map { subId ->
- application.mobileDataEnabledFlow(subId = subId, sendInitialValue = false)
+ mobileDataRepository.mobileDataEnabledChangedFlow(subId = subId, sendInitialValue = false)
}.merge()
private suspend fun updateCrossSimCalling(activeSubIds: List<Int>, newEnabled: Boolean) {
diff --git a/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt b/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt
index a5d4ba8..b5cdeda 100644
--- a/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt
+++ b/src/com/android/settings/network/telephony/wificalling/WifiCallingRepository.kt
@@ -21,14 +21,16 @@
import android.telephony.CarrierConfigManager
import android.telephony.CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL
import android.telephony.SubscriptionManager
-import android.telephony.TelephonyManager
import android.telephony.ims.ImsMmTelManager.WiFiCallingMode
import android.telephony.ims.feature.MmTelFeature
import android.telephony.ims.stub.ImsRegistrationImplBase
+import androidx.lifecycle.LifecycleOwner
import com.android.settings.network.telephony.ims.ImsMmTelRepository
import com.android.settings.network.telephony.ims.ImsMmTelRepositoryImpl
import com.android.settings.network.telephony.ims.imsFeatureProvisionedFlow
import com.android.settings.network.telephony.subscriptionsChangedFlow
+import com.android.settings.network.telephony.telephonyManager
+import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
@@ -38,13 +40,19 @@
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.withContext
-class WifiCallingRepository(
+interface IWifiCallingRepository {
+ /** TODO: Move this to UI layer, when UI layer migrated to Kotlin. */
+ fun collectIsWifiCallingReadyFlow(lifecycleOwner: LifecycleOwner, action: (Boolean) -> Unit)
+}
+
+class WifiCallingRepository
+@JvmOverloads
+constructor(
private val context: Context,
private val subId: Int,
private val imsMmTelRepository: ImsMmTelRepository = ImsMmTelRepositoryImpl(context, subId)
-) {
- private val telephonyManager = context.getSystemService(TelephonyManager::class.java)!!
- .createForSubscriptionId(subId)
+) : IWifiCallingRepository {
+ private val telephonyManager = context.telephonyManager(subId)
private val carrierConfigManager = context.getSystemService(CarrierConfigManager::class.java)!!
@@ -59,6 +67,14 @@
.getConfigForSubId(subId, KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
.getBoolean(KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL)
+ /** TODO: Move this to UI layer, when UI layer migrated to Kotlin. */
+ override fun collectIsWifiCallingReadyFlow(
+ lifecycleOwner: LifecycleOwner,
+ action: (Boolean) -> Unit,
+ ) {
+ wifiCallingReadyFlow().collectLatestWithLifecycle(lifecycleOwner, action = action)
+ }
+
@OptIn(ExperimentalCoroutinesApi::class)
fun wifiCallingReadyFlow(): Flow<Boolean> {
if (!SubscriptionManager.isValidSubscriptionId(subId)) return flowOf(false)
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 0661de7..d6f810c 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -21,6 +21,8 @@
import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC;
import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED_BY_ANY_LAUNCHER;
+import static com.android.server.notification.Flags.notificationHideUnusedChannels;
+
import android.app.INotificationManager;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
@@ -78,6 +80,9 @@
public AppRow loadAppRow(Context context, PackageManager pm, ApplicationInfo app) {
final AppRow row = new AppRow();
+ if (notificationHideUnusedChannels()) {
+ row.showAllChannels = false;
+ }
row.pkg = app.packageName;
row.uid = app.uid;
try {
@@ -357,19 +362,6 @@
}
}
- /**
- * Returns all of a user's packages that have at least one channel that will bypass DND
- */
- public List<String> getPackagesBypassingDnd(int userId,
- boolean includeConversationChannels) {
- try {
- return sINM.getPackagesBypassingDnd(userId, includeConversationChannels);
- } catch (Exception e) {
- Log.w(TAG, "Error calling NoMan", e);
- return new ArrayList<>();
- }
- }
-
public void updateChannel(String pkg, int uid, NotificationChannel channel) {
try {
sINM.updateNotificationChannelForPackage(pkg, uid, channel);
@@ -699,5 +691,6 @@
public int channelCount;
public Map<String, NotificationsSentState> sentByChannel;
public NotificationsSentState sentByApp;
+ public boolean showAllChannels = true;
}
}
diff --git a/src/com/android/settings/notification/app/AppNotificationSettings.java b/src/com/android/settings/notification/app/AppNotificationSettings.java
index 89756b7..046f0ce 100644
--- a/src/com/android/settings/notification/app/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/app/AppNotificationSettings.java
@@ -16,16 +16,10 @@
package com.android.settings.notification.app;
-import static com.android.server.notification.Flags.notificationHideUnusedChannels;
-
-
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
@@ -107,38 +101,9 @@
mControllers.add(new BubbleSummaryPreferenceController(context, mBackend));
mControllers.add(new NotificationsOffPreferenceController(context));
mControllers.add(new DeletedChannelsPreferenceController(context, mBackend));
+ mControllers.add(new ShowMorePreferenceController(
+ context, mDependentFieldListener, mBackend));
+ mControllers.add(new BundleListPreferenceController(context, mBackend));
return new ArrayList<>(mControllers);
}
-
- private final int SHOW_ALL_CHANNELS = 1;
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (notificationHideUnusedChannels()) {
- menu.add(Menu.NONE, SHOW_ALL_CHANNELS, Menu.NONE,
- mShowAll ? R.string.hide_unused_channels : R.string.show_unused_channels);
- }
- super.onCreateOptionsMenu(menu, inflater);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (!notificationHideUnusedChannels()) {
- return super.onOptionsItemSelected(item);
- }
- switch (item.getItemId()) {
- case SHOW_ALL_CHANNELS:
- mShowAll = !mShowAll;
- item.setTitle(mShowAll
- ? R.string.hide_unused_channels
- : R.string.show_unused_channels);
- ChannelListPreferenceController list =
- use(ChannelListPreferenceController.class);
- list.setShowAll(mShowAll);
- list.updateState(findPreference(list.getPreferenceKey()));
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
}
diff --git a/src/com/android/settings/notification/app/BundleListPreferenceController.java b/src/com/android/settings/notification/app/BundleListPreferenceController.java
new file mode 100644
index 0000000..82e910c
--- /dev/null
+++ b/src/com/android/settings/notification/app/BundleListPreferenceController.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.app;
+
+import static android.app.NotificationChannel.NEWS_ID;
+import static android.app.NotificationChannel.PROMOTIONS_ID;
+import static android.app.NotificationChannel.RECS_ID;
+import static android.app.NotificationChannel.SOCIAL_MEDIA_ID;
+import static android.app.NotificationManager.IMPORTANCE_LOW;
+import static android.app.NotificationManager.IMPORTANCE_NONE;
+
+import static com.android.server.notification.Flags.notificationHideUnusedChannels;
+
+import android.app.NotificationChannel;
+import android.app.NotificationChannelGroup;
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.service.notification.Flags;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.TwoStatePreference;
+
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.applications.AppInfoBase;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.notification.NotificationBackend;
+import com.android.settingslib.PrimarySwitchPreference;
+import com.android.settingslib.RestrictedSwitchPreference;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class BundleListPreferenceController extends NotificationPreferenceController {
+
+ private static final String KEY = "bundles";
+
+ public BundleListPreferenceController(Context context, NotificationBackend backend) {
+ super(context, backend);
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY;
+ }
+
+ @Override
+ public boolean isAvailable() {
+ if (!Flags.notificationClassification()) {
+ return false;
+ }
+ if (mAppRow == null) {
+ return false;
+ }
+ if (mAppRow.banned || mAppRow.lockedImportance || mAppRow.systemApp) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ boolean isIncludedInFilter() {
+ return false;
+ }
+
+ @Override
+ 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));
+ }
+
+ @NonNull
+ private void createOrUpdatePrefForChannel(
+ @NonNull PreferenceGroup groupPrefGroup, NotificationChannel channel) {
+ int preferenceCount = groupPrefGroup.getPreferenceCount();
+ for (int i = 0; i < preferenceCount; i++) {
+ Preference preference = groupPrefGroup.getPreference(i);
+ if (channel.getId().equals(preference.getKey())) {
+ updateSingleChannelPrefs((PrimarySwitchPreference) preference, channel);
+ return;
+ }
+ }
+ PrimarySwitchPreference channelPref = new PrimarySwitchPreference(mContext);
+ channelPref.setKey(channel.getId());
+ updateSingleChannelPrefs(channelPref, channel);
+ groupPrefGroup.addPreference(channelPref);
+ }
+
+ /** Update the properties of the channel preference with the values from the channel object. */
+ private void updateSingleChannelPrefs(@NonNull final PrimarySwitchPreference channelPref,
+ @NonNull final NotificationChannel channel) {
+ channelPref.setSwitchEnabled(mAdmin == null);
+ if (channel.getImportance() > IMPORTANCE_LOW) {
+ channelPref.setIcon(getAlertingIcon());
+ } else {
+ channelPref.setIcon(mContext.getDrawable(R.drawable.empty_icon));
+ }
+ channelPref.setIconSize(PrimarySwitchPreference.ICON_SIZE_SMALL);
+ channelPref.setTitle(channel.getName());
+ channelPref.setSummary(NotificationBackend.getSentSummary(
+ mContext, mAppRow.sentByChannel.get(channel.getId()), false));
+ channelPref.setChecked(channel.getImportance() != IMPORTANCE_NONE);
+ Bundle channelArgs = new Bundle();
+ channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mAppRow.uid);
+ channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mAppRow.pkg);
+ channelArgs.putString(Settings.EXTRA_CHANNEL_ID, channel.getId());
+ channelPref.setIntent(new SubSettingLauncher(mContext)
+ .setDestination(ChannelNotificationSettings.class.getName())
+ .setArguments(channelArgs)
+ .setTitleRes(R.string.notification_channel_title)
+ .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_APP_NOTIFICATION)
+ .toIntent());
+
+ channelPref.setOnPreferenceChangeListener(
+ (preference, o) -> {
+ boolean value = (Boolean) o;
+ int importance = value
+ ? Math.max(channel.getOriginalImportance(), IMPORTANCE_LOW)
+ : IMPORTANCE_NONE;
+ channel.setImportance(importance);
+ channel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
+ PrimarySwitchPreference channelPref1 = (PrimarySwitchPreference) preference;
+ channelPref1.setIcon(R.drawable.empty_icon);
+ if (channel.getImportance() > IMPORTANCE_LOW) {
+ channelPref1.setIcon(getAlertingIcon());
+ }
+ mBackend.updateChannel(mAppRow.pkg, mAppRow.uid, channel);
+
+ return true;
+ });
+ }
+
+ private Drawable getAlertingIcon() {
+ Drawable icon = mContext.getDrawable(R.drawable.ic_notifications_alert);
+ icon.setTintList(Utils.getColorAccent(mContext));
+ return icon;
+ }
+
+}
diff --git a/src/com/android/settings/notification/app/ChannelListPreferenceController.java b/src/com/android/settings/notification/app/ChannelListPreferenceController.java
index 7077592..b8dfb6a 100644
--- a/src/com/android/settings/notification/app/ChannelListPreferenceController.java
+++ b/src/com/android/settings/notification/app/ChannelListPreferenceController.java
@@ -59,8 +59,6 @@
private List<NotificationChannelGroup> mChannelGroupList;
private PreferenceCategory mPreference;
- private boolean mShowAll;
-
public ChannelListPreferenceController(Context context, NotificationBackend backend) {
super(context, backend);
}
@@ -100,7 +98,7 @@
@Override
protected Void doInBackground(Void... unused) {
if (notificationHideUnusedChannels()) {
- if (mShowAll) {
+ if (mAppRow.showAllChannels) {
mChannelGroupList = mBackend.getGroups(mAppRow.pkg, mAppRow.uid).getList();
} else {
mChannelGroupList = mBackend.getGroupsWithRecentBlockedFilter(mAppRow.pkg,
@@ -123,10 +121,6 @@
}.execute();
}
- protected void setShowAll(boolean showAll) {
- mShowAll = showAll;
- }
-
/**
* Update the preferences group to match the
* @param groupPrefsList
diff --git a/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java b/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java
index 6a1d4cb..07b7fda 100644
--- a/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java
+++ b/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java
@@ -16,6 +16,8 @@
package com.android.settings.notification.app;
+import static com.android.server.notification.Flags.notificationHideUnusedChannels;
+
import android.content.Context;
import androidx.preference.Preference;
@@ -44,6 +46,9 @@
if (!super.isAvailable()) {
return false;
}
+ if (notificationHideUnusedChannels()) {
+ return false;
+ }
// only visible on app screen
if (mChannel != null || hasValidGroup()) {
return false;
diff --git a/src/com/android/settings/notification/app/ShowMorePreferenceController.java b/src/com/android/settings/notification/app/ShowMorePreferenceController.java
new file mode 100644
index 0000000..dbc279a
--- /dev/null
+++ b/src/com/android/settings/notification/app/ShowMorePreferenceController.java
@@ -0,0 +1,75 @@
+/*
+ * 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.app;
+
+import static com.android.server.notification.Flags.notificationHideUnusedChannels;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.notification.NotificationBackend;
+
+import org.jetbrains.annotations.NotNull;
+
+public class ShowMorePreferenceController extends NotificationPreferenceController {
+
+ private static final String KEY = "more";
+ private NotificationSettings.DependentFieldListener mDependentFieldListener;
+
+ public ShowMorePreferenceController(Context context,
+ NotificationSettings.DependentFieldListener dependentFieldListener,
+ NotificationBackend backend) {
+ super(context, backend);
+ mDependentFieldListener = dependentFieldListener;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY;
+ }
+
+ @Override
+ public boolean isAvailable() {
+ if (!notificationHideUnusedChannels()) {
+ return false;
+ }
+ if (mAppRow == null) {
+ return false;
+ }
+ if (mAppRow.banned || mAppRow.showAllChannels) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ boolean isIncludedInFilter() {
+ return false;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ preference.setOnPreferenceClickListener(preference1 -> {
+ mAppRow.showAllChannels = true;
+ mDependentFieldListener.onFieldValueChanged();
+ return true;
+ });
+ }
+}
diff --git a/src/com/android/settings/notification/modes/AbstractZenModePreferenceController.java b/src/com/android/settings/notification/modes/AbstractZenModePreferenceController.java
index aebc4eb..c740847 100644
--- a/src/com/android/settings/notification/modes/AbstractZenModePreferenceController.java
+++ b/src/com/android/settings/notification/modes/AbstractZenModePreferenceController.java
@@ -16,6 +16,8 @@
package com.android.settings.notification.modes;
+import static com.google.common.base.Preconditions.checkState;
+
import android.app.Flags;
import android.content.Context;
import android.service.notification.ZenPolicy;
@@ -24,10 +26,11 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import com.android.settingslib.core.AbstractPreferenceController;
-
-import com.google.common.base.Preconditions;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import java.util.function.Function;
@@ -38,8 +41,8 @@
private static final String TAG = "AbstractZenModePreferenceController";
- @Nullable
- protected ZenModesBackend mBackend;
+ @Nullable protected final ZenModesBackend mBackend;
+
@Nullable // only until setZenMode() is called
private ZenMode mZenMode;
@@ -47,14 +50,27 @@
@NonNull
private final String mKey;
- // ZenModesBackend should only be passed in if the preference controller may set the user's
- // policy for this zen mode. Otherwise, if the preference controller is essentially read-only
- // and leads to a further Settings screen, backend should be null.
- AbstractZenModePreferenceController(@NonNull Context context, @NonNull String key,
- @Nullable ZenModesBackend backend) {
+ /**
+ * Constructor suitable for "read-only" controllers (e.g. link to a different sub-screen.
+ * Controllers that call this constructor to initialize themselves <em>cannot</em> call
+ * {@link #saveMode} or {@link #savePolicy} later.
+ */
+ AbstractZenModePreferenceController(@NonNull Context context, @NonNull String key) {
super(context);
- mBackend = backend;
mKey = key;
+ mBackend = null;
+ }
+
+ /**
+ * Constructor suitable for controllers that will update the associated {@link ZenMode}.
+ * Controllers that call this constructor to initialize themselves may call {@link #saveMode} or
+ * {@link #savePolicy} later.
+ */
+ AbstractZenModePreferenceController(@NonNull Context context, @NonNull String key,
+ @NonNull ZenModesBackend backend) {
+ super(context);
+ mKey = key;
+ mBackend = backend;
}
@Override
@@ -90,6 +106,16 @@
}
@Override
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
+ if (mZenMode != null) {
+ displayPreference(screen, mZenMode);
+ }
+ }
+
+ public void displayPreference(PreferenceScreen screen, @NonNull ZenMode zenMode) {}
+
+ @Override
public final void updateState(Preference preference) {
super.updateState(preference);
if (mZenMode != null) {
@@ -122,7 +148,7 @@
* instance is ok.
*/
protected final boolean saveMode(Function<ZenMode, ZenMode> updater) {
- Preconditions.checkState(mBackend != null);
+ checkState(mBackend != null);
ZenMode mode = mZenMode;
if (mode == null) {
Log.wtf(TAG, "Cannot save mode, it hasn't been loaded (" + getClass() + ")");
diff --git a/src/com/android/settings/notification/modes/ConfigurationActivityHelper.java b/src/com/android/settings/notification/modes/ConfigurationActivityHelper.java
new file mode 100644
index 0000000..d001651
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ConfigurationActivityHelper.java
@@ -0,0 +1,143 @@
+/*
+ * 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.modes;
+
+import static android.app.NotificationManager.EXTRA_AUTOMATIC_RULE_ID;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.service.notification.ConditionProviderService;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+
+import com.android.settingslib.notification.modes.ZenMode;
+
+import java.util.List;
+import java.util.function.Function;
+
+class ConfigurationActivityHelper {
+
+ private static final String TAG = "ConfigurationActivityHelper";
+
+ private final PackageManager mPm;
+
+ ConfigurationActivityHelper(PackageManager pm) {
+ mPm = pm;
+ }
+
+ @Nullable
+ Intent getConfigurationActivityIntentForMode(ZenMode zenMode,
+ Function<ComponentName, ComponentInfo> approvedServiceFinder) {
+
+ String owner = zenMode.getRule().getPackageName();
+ ComponentName configActivity = null;
+ if (zenMode.getRule().getConfigurationActivity() != null) {
+ // If a configuration activity is present, use that directly in the intent
+ configActivity = zenMode.getRule().getConfigurationActivity();
+ } else {
+ // Otherwise, look for a condition provider service for the rule's package
+ ComponentInfo ci = approvedServiceFinder.apply(zenMode.getRule().getOwner());
+ if (ci != null) {
+ configActivity = extractConfigurationActivityFromComponent(ci);
+ }
+ }
+
+ if (configActivity != null
+ && (owner == null || isSameOwnerPackage(owner, configActivity))
+ && isResolvableActivity(configActivity)) {
+ return new Intent()
+ .setComponent(configActivity)
+ .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+ .putExtra(ConditionProviderService.EXTRA_RULE_ID, zenMode.getId())
+ .putExtra(EXTRA_AUTOMATIC_RULE_ID, zenMode.getId());
+ } else {
+ return null;
+ }
+ }
+
+ @Nullable
+ ComponentName getConfigurationActivityFromApprovedComponent(ComponentInfo ci) {
+ ComponentName configActivity = extractConfigurationActivityFromComponent(ci);
+ if (configActivity != null
+ && isSameOwnerPackage(ci.packageName, configActivity)
+ && isResolvableActivity(configActivity)) {
+ return configActivity;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Extract the {@link ComponentName} corresponding to the mode configuration <em>activity</em>
+ * from the component declaring the rule (which may be the Activity itself, or a CPS that points
+ * to the activity in question in its metadata).
+ *
+ * <p>This method doesn't perform any validation, so the activity may or may not exist.
+ */
+ @Nullable
+ private ComponentName extractConfigurationActivityFromComponent(ComponentInfo ci) {
+ if (ci instanceof ActivityInfo) {
+ // New (activity-backed) rule.
+ return new ComponentName(ci.packageName, ci.name);
+ } else if (ci.metaData != null) {
+ // Old (service-backed) rule.
+ final String configurationActivity = ci.metaData.getString(
+ ConditionProviderService.META_DATA_CONFIGURATION_ACTIVITY);
+ if (configurationActivity != null) {
+ return ComponentName.unflattenFromString(configurationActivity);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Verifies that the activity is the same package as the rule owner.
+ */
+ private boolean isSameOwnerPackage(String ownerPkg, ComponentName activityName) {
+ try {
+ int ownerUid = mPm.getPackageUid(ownerPkg, 0);
+ int configActivityOwnerUid = mPm.getPackageUid(activityName.getPackageName(), 0);
+ if (ownerUid == configActivityOwnerUid) {
+ return true;
+ } else {
+ Log.w(TAG, String.format("Config activity (%s) not in owner package (%s)",
+ activityName, ownerPkg));
+ return false;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(TAG, "Failed to find config activity " + activityName);
+ return false;
+ }
+ }
+
+ /** Verifies that the activity exists and hasn't been disabled. */
+ private boolean isResolvableActivity(ComponentName activityName) {
+ Intent intent = new Intent().setComponent(activityName);
+ List<ResolveInfo> results = mPm.queryIntentActivities(intent, /* flags= */ 0);
+
+ if (intent.resolveActivity(mPm) == null || results.isEmpty()) {
+ Log.w(TAG, "Cannot resolve: " + activityName);
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/com/android/settings/notification/modes/IconLoader.java b/src/com/android/settings/notification/modes/IconLoader.java
deleted file mode 100644
index c590285..0000000
--- a/src/com/android/settings/notification/modes/IconLoader.java
+++ /dev/null
@@ -1,161 +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.notification.modes;
-
-import static com.google.common.util.concurrent.Futures.immediateFuture;
-
-import static java.util.Objects.requireNonNull;
-
-import android.annotation.Nullable;
-import android.app.AutomaticZenRule;
-import android.content.Context;
-import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.InsetDrawable;
-import android.service.notification.SystemZenRules;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.LruCache;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.content.res.AppCompatResources;
-
-import com.google.common.util.concurrent.FluentFuture;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-class IconLoader {
-
- private static final String TAG = "ZenIconLoader";
-
- private static final Drawable MISSING = new ColorDrawable();
-
- @Nullable // Until first usage
- private static IconLoader sInstance;
-
- private final LruCache<String, Drawable> mCache;
- private final ListeningExecutorService mBackgroundExecutor;
-
- static IconLoader getInstance() {
- if (sInstance == null) {
- sInstance = new IconLoader();
- }
- return sInstance;
- }
-
- private IconLoader() {
- this(Executors.newFixedThreadPool(4));
- }
-
- @VisibleForTesting
- IconLoader(ExecutorService backgroundExecutor) {
- mCache = new LruCache<>(50);
- mBackgroundExecutor =
- MoreExecutors.listeningDecorator(backgroundExecutor);
- }
-
- @NonNull
- ListenableFuture<Drawable> getIcon(Context context, @NonNull AutomaticZenRule rule) {
- if (rule.getIconResId() == 0) {
- return Futures.immediateFuture(getFallbackIcon(context, rule.getType()));
- }
-
- return FluentFuture.from(loadIcon(context, rule.getPackageName(), rule.getIconResId()))
- .transform(icon ->
- icon != null ? icon : getFallbackIcon(context, rule.getType()),
- MoreExecutors.directExecutor());
- }
-
- @NonNull
- private ListenableFuture</* @Nullable */ Drawable> loadIcon(Context context, String pkg,
- int iconResId) {
- String cacheKey = pkg + ":" + iconResId;
- synchronized (mCache) {
- Drawable cachedValue = mCache.get(cacheKey);
- if (cachedValue != null) {
- return immediateFuture(cachedValue != MISSING ? cachedValue : null);
- }
- }
-
- return FluentFuture.from(mBackgroundExecutor.submit(() -> {
- if (TextUtils.isEmpty(pkg) || SystemZenRules.PACKAGE_ANDROID.equals(pkg)) {
- return context.getDrawable(iconResId);
- } else {
- Context appContext = context.createPackageContext(pkg, 0);
- Drawable appDrawable = AppCompatResources.getDrawable(appContext, iconResId);
- return getMonochromeIconIfPresent(appDrawable);
- }
- })).catching(Exception.class, ex -> {
- // If we cannot resolve the icon, then store MISSING in the cache below, so
- // we don't try again.
- Log.e(TAG, "Error while loading icon " + cacheKey, ex);
- return null;
- }, MoreExecutors.directExecutor()).transform(drawable -> {
- synchronized (mCache) {
- mCache.put(cacheKey, drawable != null ? drawable : MISSING);
- }
- return drawable;
- }, MoreExecutors.directExecutor());
- }
-
- private static Drawable getFallbackIcon(Context context, int ruleType) {
- int iconResIdFromType = switch (ruleType) {
- case AutomaticZenRule.TYPE_UNKNOWN ->
- com.android.internal.R.drawable.ic_zen_mode_type_unknown;
- case AutomaticZenRule.TYPE_OTHER ->
- com.android.internal.R.drawable.ic_zen_mode_type_other;
- case AutomaticZenRule.TYPE_SCHEDULE_TIME ->
- com.android.internal.R.drawable.ic_zen_mode_type_schedule_time;
- case AutomaticZenRule.TYPE_SCHEDULE_CALENDAR ->
- com.android.internal.R.drawable.ic_zen_mode_type_schedule_calendar;
- case AutomaticZenRule.TYPE_BEDTIME ->
- com.android.internal.R.drawable.ic_zen_mode_type_bedtime;
- case AutomaticZenRule.TYPE_DRIVING ->
- com.android.internal.R.drawable.ic_zen_mode_type_driving;
- case AutomaticZenRule.TYPE_IMMERSIVE ->
- com.android.internal.R.drawable.ic_zen_mode_type_immersive;
- case AutomaticZenRule.TYPE_THEATER ->
- com.android.internal.R.drawable.ic_zen_mode_type_theater;
- case AutomaticZenRule.TYPE_MANAGED ->
- com.android.internal.R.drawable.ic_zen_mode_type_managed;
- default ->
- com.android.internal.R.drawable.ic_zen_mode_type_unknown;
- };
- return requireNonNull(context.getDrawable(iconResIdFromType));
- }
-
- private static Drawable getMonochromeIconIfPresent(Drawable icon) {
- // For created rules, the app should've provided a monochrome Drawable. However, implicit
- // rules have the app's icon, which is not -- but might have a monochrome layer. Thus
- // we choose it, if present.
- if (icon instanceof AdaptiveIconDrawable adaptiveIcon) {
- if (adaptiveIcon.getMonochrome() != null) {
- // Wrap with negative inset => scale icon (inspired from BaseIconFactory)
- return new InsetDrawable(adaptiveIcon.getMonochrome(),
- -2.0f * AdaptiveIconDrawable.getExtraInsetFraction());
- }
- }
- return icon;
- }
-}
diff --git a/src/com/android/settings/notification/modes/IconUtil.java b/src/com/android/settings/notification/modes/IconUtil.java
index c6ecaa0..d07abf3 100644
--- a/src/com/android/settings/notification/modes/IconUtil.java
+++ b/src/com/android/settings/notification/modes/IconUtil.java
@@ -19,51 +19,85 @@
import static com.google.common.base.Preconditions.checkNotNull;
import android.content.Context;
+import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
+import android.view.Gravity;
+import androidx.annotation.AttrRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
+import androidx.annotation.Px;
import com.android.settings.R;
import com.android.settingslib.Utils;
class IconUtil {
- static Drawable applyTint(@NonNull Context context, @NonNull Drawable icon) {
+ static Drawable applyNormalTint(@NonNull Context context, @NonNull Drawable icon) {
+ return applyTint(context, icon, android.R.attr.colorControlNormal);
+ }
+
+ static Drawable applyAccentTint(@NonNull Context context, @NonNull Drawable icon) {
+ return applyTint(context, icon, android.R.attr.colorAccent);
+ }
+
+ private static Drawable applyTint(@NonNull Context context, @NonNull Drawable icon,
+ @AttrRes int colorAttr) {
icon = icon.mutate();
- icon.setTintList(
- Utils.getColorAttr(context, android.R.attr.colorControlNormal));
+ icon.setTintList(Utils.getColorAttr(context, colorAttr));
return icon;
}
/**
- * Returns a variant of the supplied {@code icon} to be used in the icon picker. The inner icon
- * is 36x36dp and it's contained into a circle of diameter 54dp.
+ * Returns a variant of the supplied {@code icon} to be used as the header in the icon picker.
+ * The inner icon is 48x48dp and it's contained into a circle of diameter 90dp.
*/
- static Drawable makeIconCircle(@NonNull Context context, @NonNull Drawable icon) {
- ShapeDrawable background = new ShapeDrawable(new OvalShape());
- background.getPaint().setColor(Utils.getColorAttrDefaultColor(context,
- com.android.internal.R.attr.materialColorSecondaryContainer));
- icon.setTint(Utils.getColorAttrDefaultColor(context,
- com.android.internal.R.attr.materialColorOnSecondaryContainer));
-
- LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] { background, icon });
-
- int circleDiameter = context.getResources().getDimensionPixelSize(
- R.dimen.zen_mode_icon_list_circle_diameter);
- int iconSize = context.getResources().getDimensionPixelSize(
- R.dimen.zen_mode_icon_list_icon_size);
- int iconPadding = (circleDiameter - iconSize) / 2;
- layerDrawable.setBounds(0, 0, circleDiameter, circleDiameter);
- layerDrawable.setLayerInset(1, iconPadding, iconPadding, iconPadding, iconPadding);
-
- return layerDrawable;
+ static Drawable makeBigIconCircle(@NonNull Context context, Drawable icon) {
+ return composeIconCircle(
+ Utils.getColorAttr(context,
+ com.android.internal.R.attr.materialColorSecondaryContainer),
+ context.getResources().getDimensionPixelSize(
+ R.dimen.zen_mode_icon_list_header_circle_diameter),
+ icon,
+ Utils.getColorAttr(context,
+ com.android.internal.R.attr.materialColorOnSecondaryContainer),
+ context.getResources().getDimensionPixelSize(
+ R.dimen.zen_mode_icon_list_header_icon_size));
}
- static Drawable makeIconCircle(@NonNull Context context, @DrawableRes int iconResId) {
- return makeIconCircle(context, checkNotNull(context.getDrawable(iconResId)));
+ /**
+ * Returns a variant of the supplied {@code icon} to be used as an option in the icon picker.
+ * The inner icon is 36x36dp and it's contained into a circle of diameter 54dp. It's also set up
+ * so that selection and pressed states are represented in the color.
+ */
+ static Drawable makeSmallIconCircle(@NonNull Context context, @DrawableRes int iconResId) {
+ return composeIconCircle(
+ context.getColorStateList(R.color.modes_icon_picker_item_background),
+ context.getResources().getDimensionPixelSize(
+ R.dimen.zen_mode_icon_list_item_circle_diameter),
+ checkNotNull(context.getDrawable(iconResId)),
+ context.getColorStateList(R.color.modes_icon_picker_item_icon),
+ context.getResources().getDimensionPixelSize(
+ R.dimen.zen_mode_icon_list_item_icon_size));
+ }
+
+ private static Drawable composeIconCircle(ColorStateList circleColor, @Px int circleDiameterPx,
+ Drawable icon, ColorStateList iconColor, @Px int iconSizePx) {
+ ShapeDrawable background = new ShapeDrawable(new OvalShape());
+ background.setTintList(circleColor);
+ Drawable foreground = checkNotNull(icon.getConstantState()).newDrawable().mutate();
+ foreground.setTintList(iconColor);
+
+ LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] { background, foreground });
+
+ layerDrawable.setBounds(0, 0, circleDiameterPx, circleDiameterPx);
+ layerDrawable.setLayerSize(0, circleDiameterPx, circleDiameterPx);
+ layerDrawable.setLayerGravity(1, Gravity.CENTER);
+ layerDrawable.setLayerSize(1, iconSizePx, iconSizePx);
+
+ return layerDrawable;
}
}
diff --git a/src/com/android/settings/notification/modes/InterruptionFilterPreferenceController.java b/src/com/android/settings/notification/modes/InterruptionFilterPreferenceController.java
new file mode 100644
index 0000000..8bdeea4
--- /dev/null
+++ b/src/com/android/settings/notification/modes/InterruptionFilterPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * 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.modes;
+
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.settings.R;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
+class InterruptionFilterPreferenceController extends AbstractZenModePreferenceController
+ implements Preference.OnPreferenceChangeListener {
+
+ public InterruptionFilterPreferenceController(Context context, String key,
+ ZenModesBackend backend) {
+ super(context, key, backend);
+ }
+
+ @Override
+ public boolean isAvailable(ZenMode zenMode) {
+ return !zenMode.isManualDnd();
+ }
+
+ @Override
+ public void updateState(Preference preference, @NonNull ZenMode zenMode) {
+ boolean filteringNotifications = zenMode.getRule().getInterruptionFilter()
+ != INTERRUPTION_FILTER_ALL;
+ ((TwoStatePreference) preference).setChecked(filteringNotifications);
+ preference.setSummary(filteringNotifications ? "" :
+ mContext.getResources().getString(R.string.mode_no_notification_filter));
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ final boolean filterNotifications = ((Boolean) newValue);
+ return saveMode(zenMode -> {
+ zenMode.getRule().setInterruptionFilter(filterNotifications
+ ? INTERRUPTION_FILTER_PRIORITY
+ : INTERRUPTION_FILTER_ALL);
+ return zenMode;
+ });
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ManualDurationHelper.java b/src/com/android/settings/notification/modes/ManualDurationHelper.java
new file mode 100644
index 0000000..da9f420
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ManualDurationHelper.java
@@ -0,0 +1,123 @@
+/*
+ * 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.modes;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.icu.text.MessageFormat;
+import android.net.Uri;
+import android.provider.Settings;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Class to contain shared utilities for reading and observing the Settings ZEN_DURATION value.
+ */
+class ManualDurationHelper {
+ private Context mContext;
+
+ ManualDurationHelper(@NonNull Context context) {
+ mContext = context;
+ }
+
+ int getZenDuration() {
+ return Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.ZEN_DURATION,
+ 0);
+ }
+
+ /**
+ * Generates a summary of the duration that manual DND will be on when turned on from
+ * quick settings, for example "Until you turn off" or "[number] hours", based on the given
+ * setting value.
+ */
+ public String getSummary() {
+ int zenDuration = getZenDuration();
+ String summary;
+ if (zenDuration < 0) {
+ summary = mContext.getString(R.string.zen_mode_duration_summary_always_prompt);
+ } else if (zenDuration == 0) {
+ summary = mContext.getString(R.string.zen_mode_duration_summary_forever);
+ } else {
+ if (zenDuration >= 60) {
+ MessageFormat msgFormat = new MessageFormat(
+ mContext.getString(R.string.zen_mode_duration_summary_time_hours),
+ Locale.getDefault());
+ Map<String, Object> msgArgs = new HashMap<>();
+ msgArgs.put("count", zenDuration / 60);
+ summary = msgFormat.format(msgArgs);
+ } else {
+ MessageFormat msgFormat = new MessageFormat(
+ mContext.getString(R.string.zen_mode_duration_summary_time_minutes),
+ Locale.getDefault());
+ Map<String, Object> msgArgs = new HashMap<>();
+ msgArgs.put("count", zenDuration);
+ summary = msgFormat.format(msgArgs);
+ }
+ }
+ return summary;
+ }
+
+ SettingsObserver makeSettingsObserver(@NonNull AbstractZenModePreferenceController controller) {
+ return new SettingsObserver(controller);
+ }
+
+ final class SettingsObserver extends ContentObserver {
+ private static final Uri ZEN_MODE_DURATION_URI = Settings.Secure.getUriFor(
+ Settings.Secure.ZEN_DURATION);
+
+ private final AbstractZenModePreferenceController mPrefController;
+ private Preference mPreference;
+
+ /**
+ * Create a settings observer attached to the provided PreferenceController, whose
+ * updateState method should be called onChange.
+ */
+ SettingsObserver(@NonNull AbstractZenModePreferenceController prefController) {
+ super(mContext.getMainExecutor(), 0);
+ mPrefController = prefController;
+ }
+
+ void setPreference(Preference preference) {
+ mPreference = preference;
+ }
+
+ public void register() {
+ mContext.getContentResolver().registerContentObserver(ZEN_MODE_DURATION_URI, false,
+ this);
+ }
+
+ public void unregister() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, @Nullable Uri uri) {
+ super.onChange(selfChange, uri);
+ if (ZEN_MODE_DURATION_URI.equals(uri) && mPreference != null) {
+ mPrefController.updateState(mPreference);
+ }
+ }
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ManualDurationPreferenceController.java b/src/com/android/settings/notification/modes/ManualDurationPreferenceController.java
new file mode 100644
index 0000000..073f8ab
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ManualDurationPreferenceController.java
@@ -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.notification.modes;
+
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.notification.zen.SettingsZenDurationDialog;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
+public class ManualDurationPreferenceController extends AbstractZenModePreferenceController {
+ private static final String TAG = "QsDurationPrefController";
+
+ private final Fragment mParent;
+ private final ManualDurationHelper mDurationHelper;
+ private final ManualDurationHelper.SettingsObserver mSettingsObserver;
+
+ ManualDurationPreferenceController(Context context, String key, Fragment parent,
+ ZenModesBackend backend) {
+ super(context, key, backend);
+ mParent = parent;
+ mDurationHelper = new ManualDurationHelper(context);
+ mSettingsObserver = mDurationHelper.makeSettingsObserver(this);
+ }
+
+ @Override
+ public boolean isAvailable(ZenMode zenMode) {
+ if (!super.isAvailable(zenMode)) {
+ return false;
+ }
+ return zenMode.isManualDnd();
+ }
+
+ // Called by parent fragment onAttach().
+ void registerSettingsObserver() {
+ mSettingsObserver.register();
+ }
+
+ // Called by parent fragment onDetach().
+ void unregisterSettingsObserver() {
+ mSettingsObserver.unregister();
+ }
+
+ @Override
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
+ Preference pref = screen.findPreference(getPreferenceKey());
+ if (pref != null) {
+ mSettingsObserver.setPreference(pref);
+ }
+ }
+
+ @Override
+ public void updateState(Preference preference, ZenMode unusedZenMode) {
+ // This controller is a link between a Settings value (ZEN_DURATION) and the manual DND
+ // mode. The status of the zen mode object itself doesn't affect the preference
+ // value, as that comes from settings; that value from settings will determine the
+ // condition that is attached to the mode on manual activation. Thus we ignore the actual
+ // zen mode value provided here.
+ preference.setSummary(mDurationHelper.getSummary());
+ preference.setOnPreferenceClickListener(pref -> {
+ // The new setting value is set by the dialog, so we don't need to do it here.
+ final SettingsZenDurationDialog durationDialog = new SettingsZenDurationDialog();
+ durationDialog.show(mParent.getParentFragmentManager(), TAG);
+ return true;
+ });
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ZenHelperBackend.java b/src/com/android/settings/notification/modes/ZenHelperBackend.java
new file mode 100644
index 0000000..4136c22
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ZenHelperBackend.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.notification.modes;
+
+import android.annotation.Nullable;
+import android.app.INotificationManager;
+import android.content.Context;
+import android.content.pm.ParceledListSlice;
+import android.database.Cursor;
+import android.os.ServiceManager;
+import android.provider.ContactsContract;
+import android.service.notification.ConversationChannelWrapper;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class used for Settings-system_server interactions that are not <em>directly</em> related to
+ * Mode management, but still used in the UI of its Settings pages (such as listing priority
+ * conversations, contacts, etc).
+ */
+class ZenHelperBackend {
+
+ private static final String TAG = "ZenHelperBackend";
+
+ @Nullable // Until first usage
+ private static ZenHelperBackend sInstance;
+
+ private final Context mContext;
+ private final INotificationManager mInm;
+
+ static ZenHelperBackend getInstance(Context context) {
+ if (sInstance == null) {
+ sInstance = new ZenHelperBackend(context.getApplicationContext());
+ }
+ return sInstance;
+ }
+
+ ZenHelperBackend(Context context) {
+ mContext = context;
+ mInm = INotificationManager.Stub.asInterface(
+ ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+ }
+
+ /**
+ * Returns all of a user's packages that have at least one channel that will bypass DND
+ */
+ List<String> getPackagesBypassingDnd(int userId,
+ boolean includeConversationChannels) {
+ try {
+ return mInm.getPackagesBypassingDnd(userId, includeConversationChannels);
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ return new ArrayList<>();
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ ParceledListSlice<ConversationChannelWrapper> getConversations(boolean onlyImportant) {
+ try {
+ return mInm.getConversations(onlyImportant);
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ return ParceledListSlice.emptyList();
+ }
+ }
+
+ List<String> getStarredContacts() {
+ try (Cursor cursor = queryStarredContactsData()) {
+ return getStarredContacts(cursor);
+ }
+ }
+
+ @VisibleForTesting
+ List<String> getStarredContacts(Cursor cursor) {
+ List<String> starredContacts = new ArrayList<>();
+ if (cursor != null && cursor.moveToFirst()) {
+ do {
+ String contact = cursor.getString(0);
+ starredContacts.add(contact != null ? contact :
+ mContext.getString(R.string.zen_mode_starred_contacts_empty_name));
+
+ } while (cursor.moveToNext());
+ }
+ return starredContacts;
+ }
+
+ private Cursor queryStarredContactsData() {
+ return mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
+ new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY},
+ ContactsContract.Data.STARRED + "=1", null,
+ ContactsContract.Data.TIMES_CONTACTED);
+ }
+
+ Cursor queryAllContactsData() {
+ return mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
+ new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY},
+ null, null, null);
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ZenMode.java b/src/com/android/settings/notification/modes/ZenMode.java
deleted file mode 100644
index cbe915b..0000000
--- a/src/com/android/settings/notification/modes/ZenMode.java
+++ /dev/null
@@ -1,244 +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.notification.modes;
-
-import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-
-import static java.util.Objects.requireNonNull;
-
-import android.annotation.SuppressLint;
-import android.app.AutomaticZenRule;
-import android.app.NotificationManager;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.service.notification.ZenDeviceEffects;
-import android.service.notification.ZenPolicy;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.android.settings.R;
-
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-
-import java.util.Objects;
-
-/**
- * Represents either an {@link AutomaticZenRule} or the manual DND rule in a unified way.
- *
- * <p>It also adapts other rule features that we don't want to expose in the UI, such as
- * interruption filters other than {@code PRIORITY}, rules without specific icons, etc.
- */
-class ZenMode {
-
- private static final String TAG = "ZenMode";
-
- /**
- * Additional value for the {@code @ZenPolicy.ChannelType} enumeration that indicates that all
- * channels can bypass DND when this policy is active.
- *
- * <p>This value shouldn't be used on "real" ZenPolicy objects sent to or returned from
- * {@link android.app.NotificationManager}; it's a way of representing rules with interruption
- * filter = {@link NotificationManager#INTERRUPTION_FILTER_ALL} in the UI.
- */
- public static final int CHANNEL_POLICY_ALL = -1;
-
- static final String MANUAL_DND_MODE_ID = "manual_dnd";
-
- @SuppressLint("WrongConstant")
- private static final ZenPolicy POLICY_INTERRUPTION_FILTER_ALL =
- new ZenPolicy.Builder()
- .allowChannels(CHANNEL_POLICY_ALL)
- .allowAllSounds()
- .showAllVisualEffects()
- .build();
-
- // Must match com.android.server.notification.ZenModeHelper#applyCustomPolicy.
- private static final ZenPolicy POLICY_INTERRUPTION_FILTER_ALARMS =
- new ZenPolicy.Builder()
- .disallowAllSounds()
- .allowAlarms(true)
- .allowMedia(true)
- .allowPriorityChannels(false)
- .build();
-
- // Must match com.android.server.notification.ZenModeHelper#applyCustomPolicy.
- private static final ZenPolicy POLICY_INTERRUPTION_FILTER_NONE =
- new ZenPolicy.Builder()
- .disallowAllSounds()
- .hideAllVisualEffects()
- .allowPriorityChannels(false)
- .build();
-
- private final String mId;
- private AutomaticZenRule mRule;
- private final boolean mIsActive;
- private final boolean mIsManualDnd;
-
- ZenMode(String id, AutomaticZenRule rule, boolean isActive) {
- this(id, rule, isActive, false);
- }
-
- private ZenMode(String id, AutomaticZenRule rule, boolean isActive, boolean isManualDnd) {
- mId = id;
- mRule = rule;
- mIsActive = isActive;
- mIsManualDnd = isManualDnd;
- }
-
- static ZenMode manualDndMode(AutomaticZenRule manualRule, boolean isActive) {
- return new ZenMode(MANUAL_DND_MODE_ID, manualRule, isActive, true);
- }
-
- @NonNull
- public String getId() {
- return mId;
- }
-
- @NonNull
- public AutomaticZenRule getRule() {
- return mRule;
- }
-
- @NonNull
- public ListenableFuture<Drawable> getIcon(@NonNull Context context,
- @NonNull IconLoader iconLoader) {
- if (mIsManualDnd) {
- return Futures.immediateFuture(requireNonNull(
- context.getDrawable(R.drawable.ic_do_not_disturb_on_24dp)));
- }
-
- return iconLoader.getIcon(context, mRule);
- }
-
- @NonNull
- public ZenPolicy getPolicy() {
- switch (mRule.getInterruptionFilter()) {
- case INTERRUPTION_FILTER_PRIORITY:
- return requireNonNull(mRule.getZenPolicy());
-
- case NotificationManager.INTERRUPTION_FILTER_ALL:
- return POLICY_INTERRUPTION_FILTER_ALL;
-
- case NotificationManager.INTERRUPTION_FILTER_ALARMS:
- return POLICY_INTERRUPTION_FILTER_ALARMS;
-
- case NotificationManager.INTERRUPTION_FILTER_NONE:
- return POLICY_INTERRUPTION_FILTER_NONE;
-
- case NotificationManager.INTERRUPTION_FILTER_UNKNOWN:
- default:
- Log.wtf(TAG, "Rule " + mId + " with unexpected interruptionFilter "
- + mRule.getInterruptionFilter());
- return requireNonNull(mRule.getZenPolicy());
- }
- }
-
- /**
- * Updates the {@link ZenPolicy} of the associated {@link AutomaticZenRule} based on the
- * supplied policy. In some cases this involves conversions, so that the following call
- * to {@link #getPolicy} might return a different policy from the one supplied here.
- */
- @SuppressLint("WrongConstant")
- public void setPolicy(@NonNull ZenPolicy policy) {
- ZenPolicy currentPolicy = getPolicy();
- if (currentPolicy.equals(policy)) {
- return;
- }
-
- // A policy with CHANNEL_POLICY_ALL is only a UI representation of the
- // INTERRUPTION_FILTER_ALL filter. Thus, switching to or away to this value only updates
- // the filter, discarding the rest of the supplied policy.
- if (policy.getAllowedChannels() == CHANNEL_POLICY_ALL
- && currentPolicy.getAllowedChannels() != CHANNEL_POLICY_ALL) {
- if (mIsManualDnd) {
- throw new IllegalArgumentException("Manual DND cannot have CHANNEL_POLICY_ALL");
- }
- mRule.setInterruptionFilter(INTERRUPTION_FILTER_ALL);
- // Preserve the existing policy, e.g. if the user goes PRIORITY -> ALL -> PRIORITY that
- // shouldn't discard all other policy customizations. The existing policy will be a
- // synthetic one if the rule originally had filter NONE or ALARMS_ONLY and that's fine.
- if (mRule.getZenPolicy() == null) {
- mRule.setZenPolicy(currentPolicy);
- }
- return;
- } else if (policy.getAllowedChannels() != CHANNEL_POLICY_ALL
- && currentPolicy.getAllowedChannels() == CHANNEL_POLICY_ALL) {
- mRule.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY);
- // Go back to whatever policy the rule had before, unless the rule never had one, in
- // which case we use the supplied policy (which we know has a valid allowedChannels).
- if (mRule.getZenPolicy() == null) {
- mRule.setZenPolicy(policy);
- }
- return;
- }
-
- // If policy is customized from any of the "special" ones, make the rule PRIORITY.
- if (mRule.getInterruptionFilter() != INTERRUPTION_FILTER_PRIORITY) {
- mRule.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY);
- }
- mRule.setZenPolicy(policy);
- }
-
- @NonNull
- public ZenDeviceEffects getDeviceEffects() {
- return mRule.getDeviceEffects() != null
- ? mRule.getDeviceEffects()
- : new ZenDeviceEffects.Builder().build();
- }
-
- public boolean canEditName() {
- return !isManualDnd();
- }
-
- public boolean canEditIcon() {
- return !isManualDnd();
- }
-
- public boolean canBeDeleted() {
- return !mIsManualDnd;
- }
-
- public boolean isManualDnd() {
- return mIsManualDnd;
- }
-
- public boolean isActive() {
- return mIsActive;
- }
-
- @Override
- public boolean equals(@Nullable Object obj) {
- return obj instanceof ZenMode other
- && mId.equals(other.mId)
- && mRule.equals(other.mRule)
- && mIsActive == other.mIsActive;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mId, mRule, mIsActive);
- }
-
- @Override
- public String toString() {
- return mId + "(" + (mIsActive ? "active" : "inactive") + ") -> " + mRule;
- }
-}
diff --git a/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java
index 8585234..2561a7b 100644
--- a/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java
@@ -16,24 +16,23 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.ActionButtonsPreference;
class ZenModeActionsPreferenceController extends AbstractZenModePreferenceController {
- ZenModeActionsPreferenceController(@NonNull Context context, @NonNull String key,
- @Nullable ZenModesBackend backend) {
- super(context, key, backend);
+ ZenModeActionsPreferenceController(@NonNull Context context, @NonNull String key) {
+ super(context, key);
}
@Override
@@ -50,7 +49,7 @@
buttonsPreference.setButton2Enabled(zenMode.canEditIcon());
buttonsPreference.setButton2OnClickListener(v -> {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
new SubSettingLauncher(mContext)
.setDestination(ZenModeIconPickerFragment.class.getName())
// TODO: b/332937635 - Update metrics category
diff --git a/src/com/android/settings/notification/modes/ZenModeAppsFragment.java b/src/com/android/settings/notification/modes/ZenModeAppsFragment.java
index 73329a2..19035dd 100644
--- a/src/com/android/settings/notification/modes/ZenModeAppsFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeAppsFragment.java
@@ -37,10 +37,6 @@
context, ZenModeAppsPreferenceController.KEY_PRIORITY, mBackend));
controllers.add(new ZenModeAppsPreferenceController(
context, ZenModeAppsPreferenceController.KEY_NONE, mBackend));
- // TODO: b/308819928 - The manual DND mode cannot have the ALL type;
- // unify the controllers into one and only create a preference if isManualDnd is false.
- controllers.add(new ZenModeAppsPreferenceController(
- context, ZenModeAppsPreferenceController.KEY_ALL, mBackend));
return controllers;
}
diff --git a/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java
index 581fff5..f62dfdd 100644
--- a/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java
@@ -16,7 +16,8 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -29,8 +30,9 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.notification.NotificationBackend;
import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import java.util.ArrayList;
import java.util.HashMap;
@@ -46,24 +48,32 @@
private static final String TAG = "ZenModeAppsLinkPreferenceController";
private final ZenModeSummaryHelper mSummaryHelper;
+ private final ApplicationsState mApplicationsState;
private ApplicationsState.Session mAppSession;
- private NotificationBackend mNotificationBackend = new NotificationBackend();
+ private final ZenHelperBackend mHelperBackend;
private ZenMode mZenMode;
private Preference mPreference;
+ private final Fragment mHost;
ZenModeAppsLinkPreferenceController(Context context, String key, Fragment host,
- ApplicationsState applicationsState, ZenModesBackend backend) {
+ ApplicationsState applicationsState, ZenModesBackend backend,
+ ZenHelperBackend helperBackend) {
super(context, key, backend);
- mSummaryHelper = new ZenModeSummaryHelper(mContext, mBackend);
- if (applicationsState != null && host != null) {
- mAppSession = applicationsState.newSession(mAppSessionCallbacks, host.getLifecycle());
- }
+ mSummaryHelper = new ZenModeSummaryHelper(mContext, helperBackend);
+ mHelperBackend = helperBackend;
+ mApplicationsState = applicationsState;
+ mHost = host;
+ }
+
+ @Override
+ public boolean isAvailable(ZenMode zenMode) {
+ return zenMode.getRule().getInterruptionFilter() != INTERRUPTION_FILTER_ALL;
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
// TODO(b/332937635): Update metrics category
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModeAppsFragment.class.getName())
@@ -72,6 +82,9 @@
.toIntent());
mZenMode = zenMode;
mPreference = preference;
+ if (mApplicationsState != null && mHost != null) {
+ mAppSession = mApplicationsState.newSession(mAppSessionCallbacks, mHost.getLifecycle());
+ }
triggerUpdateAppsBypassingDndSummaryText();
}
@@ -105,7 +118,7 @@
pkgLabelMap.put(entry.info.packageName, entry.label);
}
}
- for (String pkg : mNotificationBackend.getPackagesBypassingDnd(mContext.getUserId(),
+ for (String pkg : mHelperBackend.getPackagesBypassingDnd(mContext.getUserId(),
/* includeConversationChannels= */ false)) {
// Settings may hide some packages from the user, so if they're not present here
// we skip displaying them, even if they bypass dnd.
@@ -117,11 +130,13 @@
return appsBypassingDnd;
}
- @VisibleForTesting final ApplicationsState.Callbacks mAppSessionCallbacks =
+ @VisibleForTesting
+ final ApplicationsState.Callbacks mAppSessionCallbacks =
new ApplicationsState.Callbacks() {
@Override
- public void onRunningStateChanged(boolean running) { }
+ public void onRunningStateChanged(boolean running) {
+ }
@Override
public void onPackageListChanged() {
@@ -134,16 +149,20 @@
}
@Override
- public void onPackageIconChanged() { }
+ public void onPackageIconChanged() {
+ }
@Override
- public void onPackageSizeChanged(String packageName) { }
+ public void onPackageSizeChanged(String packageName) {
+ }
@Override
- public void onAllSizesComputed() { }
+ public void onAllSizesComputed() {
+ }
@Override
- public void onLauncherInfoChanged() { }
+ public void onLauncherInfoChanged() {
+ }
@Override
public void onLoadEntriesCompleted() {
diff --git a/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java
index 704bce0..522f191 100644
--- a/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java
@@ -16,7 +16,7 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -24,13 +24,14 @@
import android.service.notification.ZenPolicy;
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.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
public class ZenModeAppsPreferenceController extends
@@ -38,13 +39,11 @@
static final String KEY_PRIORITY = "zen_mode_apps_priority";
static final String KEY_NONE = "zen_mode_apps_none";
- static final String KEY_ALL = "zen_mode_apps_all";
String mModeId;
-
public ZenModeAppsPreferenceController(@NonNull Context context,
- @NonNull String key, @Nullable ZenModesBackend backend) {
+ @NonNull String key, @NonNull ZenModesBackend backend) {
super(context, key, backend);
}
@@ -79,13 +78,6 @@
== ZenPolicy.CHANNEL_POLICY_NONE;
pref.setChecked(policy_none);
break;
- case KEY_ALL:
- // A UI-only setting; the underlying policy never actually has this value,
- // but ZenMode acts as though it does for the sake of UI consistency.
- boolean policy_all = zenMode.getPolicy().getAllowedChannels()
- == ZenMode.CHANNEL_POLICY_ALL;
- pref.setChecked(policy_all);
- break;
}
}
@@ -96,8 +88,6 @@
return savePolicy(p -> p.allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY));
case KEY_NONE:
return savePolicy(p -> p.allowChannels(ZenPolicy.CHANNEL_POLICY_NONE));
- case KEY_ALL:
- return savePolicy(p -> p.allowChannels(ZenMode.CHANNEL_POLICY_ALL));
}
return true;
}
@@ -114,7 +104,7 @@
private void launchPrioritySettings() {
Bundle bundle = new Bundle();
if (mModeId != null) {
- bundle.putString(MODE_ID, mModeId);
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, mModeId);
}
// TODO(b/332937635): Update metrics category
new SubSettingLauncher(mContext)
diff --git a/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java
index 1846dfc..6b84414 100644
--- a/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeButtonPreferenceController.java
@@ -18,19 +18,32 @@
import android.annotation.NonNull;
import android.content.Context;
+import android.provider.Settings;
import android.widget.Button;
+import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import com.android.settings.R;
+import com.android.settings.notification.SettingsEnableZenModeDialog;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.LayoutPreference;
-public class ZenModeButtonPreferenceController extends AbstractZenModePreferenceController {
+import java.time.Duration;
+
+class ZenModeButtonPreferenceController extends AbstractZenModePreferenceController {
+ private static final String TAG = "ZenModeButtonPrefController";
private Button mZenButton;
+ private Fragment mParent;
+ private ManualDurationHelper mDurationHelper;
- public ZenModeButtonPreferenceController(Context context, String key, ZenModesBackend backend) {
+ ZenModeButtonPreferenceController(Context context, String key, Fragment parent,
+ ZenModesBackend backend) {
super(context, key, backend);
+ mParent = parent;
+ mDurationHelper = new ManualDurationHelper(context);
}
@Override
@@ -47,7 +60,23 @@
if (zenMode.isActive()) {
mBackend.deactivateMode(zenMode);
} else {
- mBackend.activateMode(zenMode, null);
+ if (zenMode.isManualDnd()) {
+ // if manual DND, potentially ask for or use desired duration
+ int zenDuration = mDurationHelper.getZenDuration();
+ switch (zenDuration) {
+ case Settings.Secure.ZEN_DURATION_PROMPT:
+ new SettingsEnableZenModeDialog().show(
+ mParent.getParentFragmentManager(), TAG);
+ break;
+ case Settings.Secure.ZEN_DURATION_FOREVER:
+ mBackend.activateMode(zenMode, null);
+ break;
+ default:
+ mBackend.activateMode(zenMode, Duration.ofMinutes(zenDuration));
+ }
+ } else {
+ mBackend.activateMode(zenMode, null);
+ }
}
});
if (zenMode.isActive()) {
diff --git a/src/com/android/settings/notification/modes/ZenModeCallsFragment.java b/src/com/android/settings/notification/modes/ZenModeCallsFragment.java
index 4c85bf5..54072ac 100644
--- a/src/com/android/settings/notification/modes/ZenModeCallsFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeCallsFragment.java
@@ -18,6 +18,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
+
import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -34,7 +35,7 @@
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new ZenModePrioritySendersPreferenceController(context,
- "zen_mode_settings_category_calls", false, mBackend));
+ "zen_mode_settings_category_calls", false, mBackend, mHelperBackend));
controllers.add(new ZenModeRepeatCallersPreferenceController(context,
"zen_mode_repeat_callers", mBackend,
context.getResources().getInteger(com.android.internal.R.integer
diff --git a/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java
index 746af44..d885019 100644
--- a/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java
@@ -16,7 +16,7 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -25,21 +25,22 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
class ZenModeCallsLinkPreferenceController extends AbstractZenModePreferenceController {
private final ZenModeSummaryHelper mSummaryHelper;
public ZenModeCallsLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
- super(context, key, backend);
- mSummaryHelper = new ZenModeSummaryHelper(context, backend);
+ ZenHelperBackend helperBackend) {
+ super(context, key);
+ mSummaryHelper = new ZenModeSummaryHelper(context, helperBackend);
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
// TODO(b/332937635): Update metrics category
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModeCallsFragment.class.getName())
diff --git a/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceController.java
index bca7b55..b0d3952 100644
--- a/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceController.java
@@ -23,7 +23,10 @@
import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;
-public class ZenModeDisplayEffectPreferenceController extends AbstractZenModePreferenceController
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
+class ZenModeDisplayEffectPreferenceController extends AbstractZenModePreferenceController
implements Preference.OnPreferenceChangeListener {
public ZenModeDisplayEffectPreferenceController(Context context, String key,
@@ -34,24 +37,20 @@
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
TwoStatePreference pref = (TwoStatePreference) preference;
- ZenDeviceEffects effects = zenMode.getRule().getDeviceEffects();
- if (effects == null) {
- pref.setChecked(false);
- } else {
- switch (getPreferenceKey()) {
- case "effect_greyscale":
- pref.setChecked(effects.shouldDisplayGrayscale());
- break;
- case "effect_aod":
- pref.setChecked(effects.shouldSuppressAmbientDisplay());
- break;
- case "effect_wallpaper":
- pref.setChecked(effects.shouldDimWallpaper());
- break;
- case "effect_dark_theme":
- pref.setChecked(effects.shouldUseNightMode());
- break;
- }
+ ZenDeviceEffects effects = zenMode.getDeviceEffects();
+ switch (getPreferenceKey()) {
+ case "effect_greyscale":
+ pref.setChecked(effects.shouldDisplayGrayscale());
+ break;
+ case "effect_aod":
+ pref.setChecked(effects.shouldSuppressAmbientDisplay());
+ break;
+ case "effect_wallpaper":
+ pref.setChecked(effects.shouldDimWallpaper());
+ break;
+ case "effect_dark_theme":
+ pref.setChecked(effects.shouldUseNightMode());
+ break;
}
}
diff --git a/src/com/android/settings/notification/modes/ZenModeDisplayFragment.java b/src/com/android/settings/notification/modes/ZenModeDisplayFragment.java
index 0972049..38ac8f3 100644
--- a/src/com/android/settings/notification/modes/ZenModeDisplayFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeDisplayFragment.java
@@ -18,6 +18,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
+
import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -34,7 +35,7 @@
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
List<AbstractPreferenceController> prefControllers = new ArrayList<>();
prefControllers.add(new ZenModeNotifVisLinkPreferenceController(
- context, "notification_visibility", mBackend));
+ context, "notification_visibility", mHelperBackend));
prefControllers.add(new ZenModeDisplayEffectPreferenceController(
context, "effect_greyscale", mBackend));
prefControllers.add(new ZenModeDisplayEffectPreferenceController(
diff --git a/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java
index 8720a4b..d3559f1 100644
--- a/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java
@@ -16,7 +16,7 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -25,21 +25,23 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
class ZenModeDisplayLinkPreferenceController extends AbstractZenModePreferenceController {
private final ZenModeSummaryHelper mSummaryHelper;
public ZenModeDisplayLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
+ ZenModesBackend backend, ZenHelperBackend helperBackend) {
super(context, key, backend);
- mSummaryHelper = new ZenModeSummaryHelper(context, backend);
+ mSummaryHelper = new ZenModeSummaryHelper(context, helperBackend);
}
@Override
void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
// TODO(b/332937635): Update metrics category
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModeDisplayFragment.class.getName())
diff --git a/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceController.java
index 8517af1..326bc97 100644
--- a/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceController.java
@@ -23,6 +23,9 @@
import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
/**
* Preference controller controlling whether a time schedule-based mode ends at the next alarm.
*/
diff --git a/src/com/android/settings/notification/modes/ZenModeFragment.java b/src/com/android/settings/notification/modes/ZenModeFragment.java
index e4d81fe..748c735 100644
--- a/src/com/android/settings/notification/modes/ZenModeFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeFragment.java
@@ -16,20 +16,33 @@
package com.android.settings.notification.modes;
+import android.app.AlertDialog;
import android.app.Application;
-import android.app.AutomaticZenRule;
import android.app.settings.SettingsEnums;
import android.content.Context;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+import androidx.activity.ComponentActivity;
+import androidx.annotation.NonNull;
+import androidx.core.view.MenuProvider;
import com.android.settings.R;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.notification.modes.ZenMode;
import java.util.ArrayList;
import java.util.List;
public class ZenModeFragment extends ZenModeFragmentBase {
+ // for mode deletion menu
+ private static final int DELETE_MODE = 1;
+
+ private ModeMenuProvider mModeMenuProvider;
+
@Override
protected int getPreferenceScreenResId() {
return R.xml.modes_rule_settings;
@@ -38,35 +51,63 @@
@Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
List<AbstractPreferenceController> prefControllers = new ArrayList<>();
- prefControllers.add(new ZenModeHeaderController(context, "header", this, mBackend));
- prefControllers.add(new ZenModeButtonPreferenceController(context, "activate", mBackend));
- prefControllers.add(new ZenModeActionsPreferenceController(context, "actions", mBackend));
+ prefControllers.add(new ZenModeHeaderController(context, "header", this));
+ prefControllers.add(
+ new ZenModeButtonPreferenceController(context, "activate", this, mBackend));
+ prefControllers.add(new ZenModeActionsPreferenceController(context, "actions"));
prefControllers.add(new ZenModePeopleLinkPreferenceController(
- context, "zen_mode_people", mBackend));
+ context, "zen_mode_people", mHelperBackend));
prefControllers.add(new ZenModeAppsLinkPreferenceController(
context, "zen_mode_apps", this,
ApplicationsState.getInstance((Application) context.getApplicationContext()),
- mBackend));
+ mBackend, mHelperBackend));
prefControllers.add(new ZenModeOtherLinkPreferenceController(
- context, "zen_other_settings", mBackend));
+ context, "zen_other_settings", mHelperBackend));
prefControllers.add(new ZenModeDisplayLinkPreferenceController(
- context, "mode_display_settings", mBackend));
+ context, "mode_display_settings", mBackend, mHelperBackend));
prefControllers.add(new ZenModeSetTriggerLinkPreferenceController(context,
- "zen_automatic_trigger_category", mBackend));
+ "zen_automatic_trigger_category", this, mBackend));
+ prefControllers.add(new InterruptionFilterPreferenceController(
+ context, "allow_filtering", mBackend));
+ prefControllers.add(new ManualDurationPreferenceController(
+ context, "mode_manual_duration", this, mBackend));
return prefControllers;
}
@Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+
+ // allow duration preference controller to listen for settings changes
+ use(ManualDurationPreferenceController.class).registerSettingsObserver();
+ }
+
+ @Override
public void onStart() {
super.onStart();
// Set title for the entire screen
ZenMode mode = getMode();
- AutomaticZenRule azr = getAZR();
- if (mode == null || azr == null) {
- return;
+ ComponentActivity activity = getActivity();
+ if (mode != null && activity != null) {
+ activity.setTitle(mode.getName());
+ mModeMenuProvider = new ModeMenuProvider(mode);
+ activity.addMenuProvider(mModeMenuProvider);
}
- getActivity().setTitle(azr.getName());
+ }
+
+ @Override
+ public void onStop() {
+ if (getActivity() != null) {
+ getActivity().removeMenuProvider(mModeMenuProvider);
+ }
+ super.onStop();
+ }
+
+ @Override
+ public void onDetach() {
+ use(ManualDurationPreferenceController.class).unregisterSettingsObserver();
+ super.onDetach();
}
@Override
@@ -74,4 +115,52 @@
// TODO: b/332937635 - make this the correct metrics category
return SettingsEnums.NOTIFICATION_ZEN_MODE_AUTOMATION;
}
+
+ @Override
+ protected void updateZenModeState() {
+ // Because this fragment may be asked to finish by the delete menu but not be done doing
+ // so yet, ignore any attempts to update info in that case.
+ if (getActivity() != null && getActivity().isFinishing()) {
+ return;
+ }
+ super.updateZenModeState();
+ }
+
+ private class ModeMenuProvider implements MenuProvider {
+ private ZenMode mZenMode;
+ ModeMenuProvider(ZenMode mode) {
+ mZenMode = mode;
+ }
+
+ @Override
+ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
+ if (mZenMode != null && mZenMode.canBeDeleted()) {
+ // Only deleteable modes should get a delete menu option.
+ menu.add(Menu.NONE, DELETE_MODE, Menu.NONE, R.string.zen_mode_menu_delete_mode);
+ }
+ }
+
+ @Override
+ public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
+ if (mZenMode != null) {
+ if (menuItem.getItemId() == DELETE_MODE) {
+ new AlertDialog.Builder(mContext)
+ .setTitle(mContext.getString(R.string.zen_mode_delete_mode_confirmation,
+ mZenMode.getRule().getName()))
+ .setPositiveButton(R.string.zen_mode_schedule_delete,
+ (dialog, which) -> {
+ // start finishing before calling removeMode() so that we
+ // don't try to update this activity with a nonexistent mode
+ // when the zen mode config is updated
+ finish();
+ mBackend.removeMode(mZenMode);
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .show();
+ return true;
+ }
+ }
+ return false;
+ }
+ }
}
diff --git a/src/com/android/settings/notification/modes/ZenModeFragmentBase.java b/src/com/android/settings/notification/modes/ZenModeFragmentBase.java
index e086524..f461fc3 100644
--- a/src/com/android/settings/notification/modes/ZenModeFragmentBase.java
+++ b/src/com/android/settings/notification/modes/ZenModeFragmentBase.java
@@ -16,7 +16,8 @@
package com.android.settings.notification.modes;
-import android.app.AutomaticZenRule;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
+
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
@@ -29,15 +30,18 @@
import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.notification.modes.ZenMode;
+
+import com.google.common.base.Preconditions;
import java.util.List;
+import java.util.function.Consumer;
/**
* Base class for Settings pages used to configure individual modes.
*/
abstract class ZenModeFragmentBase extends ZenModesFragmentBase {
static final String TAG = "ZenModeSettings";
- static final String MODE_ID = "MODE_ID";
@Nullable // only until reloadMode() is called
private ZenMode mZenMode;
@@ -46,17 +50,21 @@
public void onAttach(@NonNull Context context) {
super.onAttach(context);
- // TODO: b/322373473 - Update if modes page ends up using a different method of passing id
+ String id = null;
+ if (getActivity() != null && getActivity().getIntent() != null) {
+ id = getActivity().getIntent().getStringExtra(EXTRA_AUTOMATIC_ZEN_RULE_ID);
+ }
Bundle bundle = getArguments();
- if (bundle != null && bundle.containsKey(MODE_ID)) {
- String id = bundle.getString(MODE_ID);
- if (!reloadMode(id)) {
- Log.e(TAG, "Mode id " + id + " not found");
- toastAndFinish();
- return;
- }
- } else {
- Log.e(TAG, "Mode id required to set mode config settings");
+ if (id == null && bundle != null && bundle.containsKey(EXTRA_AUTOMATIC_ZEN_RULE_ID)) {
+ id = bundle.getString(EXTRA_AUTOMATIC_ZEN_RULE_ID);
+ }
+ if (id == null) {
+ Log.d(TAG, "No id provided");
+ toastAndFinish();
+ return;
+ }
+ if (!reloadMode(id)) {
+ Log.d(TAG, "Mode id " + id + " not found");
toastAndFinish();
return;
}
@@ -120,10 +128,6 @@
}
for (List<AbstractPreferenceController> list : getPreferenceControllers()) {
for (AbstractPreferenceController controller : list) {
- if (!controller.isAvailable()) {
- continue;
- }
-
try {
// Find preference associated with controller
final String key = controller.getPreferenceKey();
@@ -137,6 +141,7 @@
String.format("Cannot find preference with key %s in Controller %s",
key, controller.getClass().getSimpleName()));
}
+ controller.displayPreference(screen);
} catch (ClassCastException e) {
// Skip any controllers that aren't AbstractZenModePreferenceController.
Log.d(TAG, "Could not cast: " + controller.getClass().getSimpleName());
@@ -159,14 +164,15 @@
return mZenMode;
}
- /**
- * Get AutomaticZenRule associated with current mode data, or null if it doesn't exist.
- */
- @Nullable
- public AutomaticZenRule getAZR() {
- if (mZenMode == null) {
- return null;
+ protected final boolean saveMode(Consumer<ZenMode> updater) {
+ Preconditions.checkState(mBackend != null);
+ ZenMode mode = mZenMode;
+ if (mode == null) {
+ Log.wtf(TAG, "Cannot save mode, it hasn't been loaded (" + getClass() + ")");
+ return false;
}
- return mZenMode.getRule();
+ updater.accept(mode);
+ mBackend.updateMode(mode);
+ return true;
}
}
diff --git a/src/com/android/settings/notification/modes/ZenModeHeaderController.java b/src/com/android/settings/notification/modes/ZenModeHeaderController.java
index d8f0a67..545abff 100644
--- a/src/com/android/settings/notification/modes/ZenModeHeaderController.java
+++ b/src/com/android/settings/notification/modes/ZenModeHeaderController.java
@@ -19,12 +19,13 @@
import android.content.Context;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.notification.modes.ZenIconLoader;
+import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;
class ZenModeHeaderController extends AbstractZenModePreferenceController {
@@ -35,9 +36,8 @@
ZenModeHeaderController(
@NonNull Context context,
@NonNull String key,
- @NonNull DashboardFragment fragment,
- @Nullable ZenModesBackend backend) {
- super(context, key, backend);
+ @NonNull DashboardFragment fragment) {
+ super(context, key);
mFragment = fragment;
}
@@ -62,8 +62,8 @@
}
FutureUtil.whenDone(
- zenMode.getIcon(mContext, IconLoader.getInstance()),
- icon -> mHeaderController.setIcon(IconUtil.applyTint(mContext, icon))
+ zenMode.getIcon(mContext, ZenIconLoader.getInstance()),
+ icon -> mHeaderController.setIcon(IconUtil.applyNormalTint(mContext, icon))
.done(/* rebindActions= */ false),
mContext.getMainExecutor());
}
diff --git a/src/com/android/settings/notification/modes/ZenModeIconPickerFragment.java b/src/com/android/settings/notification/modes/ZenModeIconPickerFragment.java
index 760b183..f065af2 100644
--- a/src/com/android/settings/notification/modes/ZenModeIconPickerFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeIconPickerFragment.java
@@ -41,9 +41,17 @@
@Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
return ImmutableList.of(
- new ZenModeIconPickerIconPreferenceController(context, "current_icon", this,
- mBackend),
- new ZenModeIconPickerListPreferenceController(context, "icon_list", this,
- new IconOptionsProviderImpl(mContext), mBackend));
+ new ZenModeIconPickerIconPreferenceController(context, "current_icon", this),
+ new ZenModeIconPickerListPreferenceController(context, "icon_list",
+ mIconPickerListener));
}
+
+ private final ZenModeIconPickerListPreferenceController.IconPickerListener mIconPickerListener =
+ new ZenModeIconPickerListPreferenceController.IconPickerListener() {
+ @Override
+ public void onIconSelected(int iconResId) {
+ saveMode(mode -> mode.getRule().setIconResId(iconResId));
+ finish();
+ }
+ };
}
diff --git a/src/com/android/settings/notification/modes/ZenModeIconPickerIconPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeIconPickerIconPreferenceController.java
index 9eaaa97..70df9b6 100644
--- a/src/com/android/settings/notification/modes/ZenModeIconPickerIconPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeIconPickerIconPreferenceController.java
@@ -17,24 +17,28 @@
package com.android.settings.notification.modes;
import android.content.Context;
+import android.view.ViewGroup;
+import android.widget.ImageView;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.notification.modes.ZenIconLoader;
+import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;
+/** Controller used for displaying the currently-chosen icon at the top of the icon picker. */
class ZenModeIconPickerIconPreferenceController extends AbstractZenModePreferenceController {
private final DashboardFragment mFragment;
private EntityHeaderController mHeaderController;
ZenModeIconPickerIconPreferenceController(@NonNull Context context, @NonNull String key,
- @NonNull DashboardFragment fragment, @Nullable ZenModesBackend backend) {
- super(context, key, backend);
+ @NonNull DashboardFragment fragment) {
+ super(context, key);
mFragment = fragment;
}
@@ -48,11 +52,19 @@
mFragment.getActivity(),
mFragment,
pref.findViewById(R.id.entity_header));
+
+ ImageView iconView = pref.findViewById(R.id.entity_header_icon);
+ ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
+ int imageSizePx = iconView.getContext().getResources().getDimensionPixelSize(
+ R.dimen.zen_mode_icon_list_header_circle_diameter);
+ layoutParams.width = imageSizePx;
+ layoutParams.height = imageSizePx;
+ iconView.setLayoutParams(layoutParams);
}
FutureUtil.whenDone(
- zenMode.getIcon(mContext, IconLoader.getInstance()),
- icon -> mHeaderController.setIcon(IconUtil.applyTint(mContext, icon))
+ zenMode.getIcon(mContext, ZenIconLoader.getInstance()),
+ icon -> mHeaderController.setIcon(IconUtil.makeBigIconCircle(mContext, icon))
.done(/* rebindActions= */ false),
mContext.getMainExecutor());
}
diff --git a/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java
index fc991dc..512dabb 100644
--- a/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java
@@ -17,6 +17,7 @@
package com.android.settings.notification.modes;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -30,24 +31,37 @@
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.SimpleItemAnimator;
import com.android.settings.R;
-import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.notification.modes.ZenIconLoader;
+import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+
+import java.util.HashMap;
+import java.util.Map;
class ZenModeIconPickerListPreferenceController extends AbstractZenModePreferenceController {
- private final DashboardFragment mFragment;
private final IconOptionsProvider mIconOptionsProvider;
+ private final IconPickerListener mListener;
@Nullable private IconAdapter mAdapter;
+ private @DrawableRes int mCurrentIconResId;
ZenModeIconPickerListPreferenceController(@NonNull Context context, @NonNull String key,
- @NonNull DashboardFragment fragment, @NonNull IconOptionsProvider iconOptionsProvider,
- @Nullable ZenModesBackend backend) {
- super(context, key, backend);
- mFragment = fragment;
+ @NonNull IconPickerListener listener) {
+ this(context, key, listener, new IconOptionsProviderImpl(context));
+ }
+
+ @VisibleForTesting
+ ZenModeIconPickerListPreferenceController(@NonNull Context context, @NonNull String key,
+ @NonNull IconPickerListener listener,
+ @NonNull IconOptionsProvider iconOptionsProvider) {
+ super(context, key);
+ mListener = listener;
mIconOptionsProvider = iconOptionsProvider;
}
@@ -66,20 +80,38 @@
recyclerView.setLayoutManager(new AutoFitGridLayoutManager(mContext));
recyclerView.setAdapter(mAdapter);
recyclerView.setHasFixedSize(true);
- }
-
- @VisibleForTesting
- void onIconSelected(@DrawableRes int resId) {
- saveMode(mode -> {
- mode.getRule().setIconResId(resId);
- return mode;
- });
- mFragment.finish();
+ if (recyclerView.getItemAnimator() instanceof SimpleItemAnimator animator) {
+ animator.setSupportsChangeAnimations(true);
+ }
}
@Override
void updateState(Preference preference, @NonNull ZenMode zenMode) {
- // Nothing to do, the current icon is shown in a different preference.
+ @DrawableRes int iconResId = zenMode.getRule().getIconResId();
+ if (iconResId == 0) {
+ iconResId = ZenIconLoader.getIconResourceIdFromType(zenMode.getType());
+ }
+ updateIconSelection(iconResId);
+ }
+
+ private void updateIconSelection(@DrawableRes int iconResId) {
+ if (iconResId != mCurrentIconResId) {
+ int oldIconResId = mCurrentIconResId;
+ mCurrentIconResId = iconResId;
+ if (mAdapter != null) {
+ mAdapter.notifyIconChanged(oldIconResId);
+ mAdapter.notifyIconChanged(mCurrentIconResId);
+ }
+ }
+ }
+
+ private void onIconSelected(@DrawableRes int iconResId) {
+ updateIconSelection(iconResId);
+ mListener.onIconSelected(iconResId);
+ }
+
+ interface IconPickerListener {
+ void onIconSelected(@DrawableRes int iconResId);
}
private class IconHolder extends RecyclerView.ViewHolder {
@@ -91,20 +123,25 @@
mImageView = itemView.findViewById(R.id.icon_image_view);
}
- void bindIcon(IconOptionsProvider.IconInfo icon) {
- mImageView.setImageDrawable(
- IconUtil.makeIconCircle(itemView.getContext(), icon.resId()));
+ void bindIcon(IconOptionsProvider.IconInfo icon, Drawable iconDrawable) {
+ mImageView.setImageDrawable(iconDrawable);
itemView.setContentDescription(icon.description());
- itemView.setOnClickListener(v -> onIconSelected(icon.resId()));
+ itemView.setOnClickListener(v -> {
+ itemView.setSelected(true); // Immediately, to avoid flicker until we rebind.
+ onIconSelected(icon.resId());
+ });
+ itemView.setSelected(icon.resId() == mCurrentIconResId);
}
}
private class IconAdapter extends RecyclerView.Adapter<IconHolder> {
private final ImmutableList<IconOptionsProvider.IconInfo> mIconResources;
+ private final Map<IconOptionsProvider.IconInfo, Drawable> mIconCache;
private IconAdapter(IconOptionsProvider iconOptionsProvider) {
mIconResources = iconOptionsProvider.getIcons();
+ mIconCache = new HashMap<>();
}
@NonNull
@@ -117,13 +154,24 @@
@Override
public void onBindViewHolder(@NonNull IconHolder holder, int position) {
- holder.bindIcon(mIconResources.get(position));
+ IconOptionsProvider.IconInfo iconInfo = mIconResources.get(position);
+ Drawable iconDrawable = mIconCache.computeIfAbsent(iconInfo,
+ info -> IconUtil.makeSmallIconCircle(mContext, info.resId()));
+ holder.bindIcon(iconInfo, iconDrawable);
}
@Override
public int getItemCount() {
return mIconResources.size();
}
+
+ private void notifyIconChanged(@DrawableRes int iconResId) {
+ int position = Iterables.indexOf(mIconResources,
+ iconInfo -> iconInfo.resId() == iconResId);
+ if (position != -1) {
+ notifyItemChanged(position);
+ }
+ }
}
private static class AutoFitGridLayoutManager extends GridLayoutManager {
diff --git a/src/com/android/settings/notification/modes/ZenModeMessagesFragment.java b/src/com/android/settings/notification/modes/ZenModeMessagesFragment.java
index c86f8dd..8bf574f 100644
--- a/src/com/android/settings/notification/modes/ZenModeMessagesFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeMessagesFragment.java
@@ -18,6 +18,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
+
import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -34,7 +35,7 @@
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new ZenModePrioritySendersPreferenceController(context,
- "zen_mode_settings_category_messages", true, mBackend));
+ "zen_mode_settings_category_messages", true, mBackend, mHelperBackend));
return controllers;
}
diff --git a/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java
index 300ebbc..4c0b758 100644
--- a/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java
@@ -16,7 +16,7 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -25,20 +25,21 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
class ZenModeMessagesLinkPreferenceController extends AbstractZenModePreferenceController {
private final ZenModeSummaryHelper mSummaryHelper;
public ZenModeMessagesLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
- super(context, key, backend);
- mSummaryHelper = new ZenModeSummaryHelper(context, backend);
+ ZenHelperBackend helperBackend) {
+ super(context, key);
+ mSummaryHelper = new ZenModeSummaryHelper(context, helperBackend);
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
// TODO(b/332937635): Update metrics category
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModeMessagesFragment.class.getName())
diff --git a/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java
index da3b3be..622c4a2 100644
--- a/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java
@@ -16,7 +16,8 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -25,21 +26,27 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
class ZenModeNotifVisLinkPreferenceController extends AbstractZenModePreferenceController {
private final ZenModeSummaryHelper mSummaryBuilder;
public ZenModeNotifVisLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
- super(context, key, backend);
- mSummaryBuilder = new ZenModeSummaryHelper(context, backend);
+ ZenHelperBackend helperBackend) {
+ super(context, key);
+ mSummaryBuilder = new ZenModeSummaryHelper(context, helperBackend);
+ }
+
+ @Override
+ public boolean isAvailable(ZenMode zenMode) {
+ return zenMode.getRule().getInterruptionFilter() != INTERRUPTION_FILTER_ALL;
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
// TODO(b/332937635): Update metrics category
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModeNotifVisFragment.class.getName())
diff --git a/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceController.java
index f918b25..3d9f713 100644
--- a/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceController.java
@@ -21,19 +21,21 @@
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
-import androidx.preference.CheckBoxPreference;
import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;
-import com.android.settings.widget.DisabledCheckBoxPreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
public class ZenModeNotifVisPreferenceController extends AbstractZenModePreferenceController
implements Preference.OnPreferenceChangeListener {
- @VisibleForTesting protected @ZenPolicy.VisualEffect int mEffect;
+ @VisibleForTesting
+ protected @ZenPolicy.VisualEffect int mEffect;
// if any of these effects are suppressed, this effect must be too
- @VisibleForTesting protected @ZenPolicy.VisualEffect int[] mParentSuppressedEffects;
+ @VisibleForTesting
+ protected @ZenPolicy.VisualEffect int[] mParentSuppressedEffects;
public ZenModeNotifVisPreferenceController(Context context, String key,
@ZenPolicy.VisualEffect int visualEffect,
diff --git a/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java
index 1a00207..248ef1d 100644
--- a/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java
@@ -16,7 +16,8 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -25,6 +26,7 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
/**
* Preference with a link and summary about what other sounds can break through the mode
@@ -34,15 +36,20 @@
private final ZenModeSummaryHelper mSummaryHelper;
public ZenModeOtherLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
- super(context, key, backend);
- mSummaryHelper = new ZenModeSummaryHelper(mContext, mBackend);
+ ZenHelperBackend helperBackend) {
+ super(context, key);
+ mSummaryHelper = new ZenModeSummaryHelper(mContext, helperBackend);
+ }
+
+ @Override
+ public boolean isAvailable(ZenMode zenMode) {
+ return zenMode.getRule().getInterruptionFilter() != INTERRUPTION_FILTER_ALL;
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModeOtherFragment.class.getName())
.setSourceMetricsCategory(0)
diff --git a/src/com/android/settings/notification/modes/ZenModeOtherPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeOtherPreferenceController.java
index a770164e..ad5fa6a 100644
--- a/src/com/android/settings/notification/modes/ZenModeOtherPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeOtherPreferenceController.java
@@ -28,6 +28,9 @@
import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
class ZenModeOtherPreferenceController extends AbstractZenModePreferenceController
implements Preference.OnPreferenceChangeListener {
diff --git a/src/com/android/settings/notification/modes/ZenModePeopleFragment.java b/src/com/android/settings/notification/modes/ZenModePeopleFragment.java
index e1f753c..f541d13 100644
--- a/src/com/android/settings/notification/modes/ZenModePeopleFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModePeopleFragment.java
@@ -18,6 +18,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
+
import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -34,9 +35,9 @@
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
List<AbstractPreferenceController> prefControllers = new ArrayList<>();
prefControllers.add(new ZenModeCallsLinkPreferenceController(
- context, "zen_mode_people_calls", mBackend));
+ context, "zen_mode_people_calls", mHelperBackend));
prefControllers.add(new ZenModeMessagesLinkPreferenceController(
- context, "zen_mode_people_messages", mBackend));
+ context, "zen_mode_people_messages", mHelperBackend));
return prefControllers;
}
diff --git a/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java
index 55a83d6..936cea6 100644
--- a/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java
@@ -16,7 +16,8 @@
package com.android.settings.notification.modes;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import android.content.Context;
import android.os.Bundle;
@@ -25,6 +26,7 @@
import androidx.preference.Preference;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settingslib.notification.modes.ZenMode;
/**
* Preference with a link and summary about what calls and messages can break through the mode
@@ -34,15 +36,20 @@
private final ZenModeSummaryHelper mSummaryHelper;
public ZenModePeopleLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
- super(context, key, backend);
- mSummaryHelper = new ZenModeSummaryHelper(mContext, mBackend);
+ ZenHelperBackend helperBackend) {
+ super(context, key);
+ mSummaryHelper = new ZenModeSummaryHelper(mContext, helperBackend);
+ }
+
+ @Override
+ public boolean isAvailable(ZenMode zenMode) {
+ return zenMode.getRule().getInterruptionFilter() != INTERRUPTION_FILTER_ALL;
}
@Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
// TODO(b/332937635): Update metrics category
preference.setIntent(new SubSettingLauncher(mContext)
.setDestination(ZenModePeopleFragment.class.getName())
diff --git a/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java b/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java
index 43f4d7f..0f9323d 100644
--- a/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceController.java
@@ -46,6 +46,8 @@
import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.notification.app.ConversationListSettings;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import java.util.ArrayList;
@@ -83,6 +85,7 @@
private static final Intent FALLBACK_INTENT = new Intent(Intent.ACTION_MAIN)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ private final ZenHelperBackend mHelperBackend;
private final PackageManager mPackageManager;
private PreferenceCategory mPreferenceCategory;
private List<SelectorWithWidgetPreference> mSelectorPreferences = new ArrayList<>();
@@ -90,9 +93,10 @@
private final ZenModeSummaryHelper mZenModeSummaryHelper;
public ZenModePrioritySendersPreferenceController(Context context, String key,
- boolean isMessages, ZenModesBackend backend) {
+ boolean isMessages, ZenModesBackend backend, ZenHelperBackend helperBackend) {
super(context, key, backend);
mIsMessages = isMessages;
+ mHelperBackend = helperBackend;
String contactsPackage = context.getString(R.string.config_contacts_package_name);
ALL_CONTACTS_INTENT.setPackage(contactsPackage);
@@ -103,7 +107,7 @@
if (!FALLBACK_INTENT.hasCategory(Intent.CATEGORY_APP_CONTACTS)) {
FALLBACK_INTENT.addCategory(Intent.CATEGORY_APP_CONTACTS);
}
- mZenModeSummaryHelper = new ZenModeSummaryHelper(mContext, mBackend);
+ mZenModeSummaryHelper = new ZenModeSummaryHelper(mContext, mHelperBackend);
}
@Override
@@ -164,7 +168,7 @@
private void updateChannelCounts() {
ParceledListSlice<ConversationChannelWrapper> impConversations =
- mBackend.getConversations(true);
+ mHelperBackend.getConversations(true);
int numImportantConversations = 0;
if (impConversations != null) {
for (ConversationChannelWrapper conversation : impConversations.getList()) {
diff --git a/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceController.java
index 7569051..ae62e35 100644
--- a/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceController.java
@@ -26,6 +26,8 @@
import androidx.preference.TwoStatePreference;
import com.android.settings.R;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
class ZenModeRepeatCallersPreferenceController extends AbstractZenModePreferenceController
implements Preference.OnPreferenceChangeListener {
diff --git a/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java b/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java
new file mode 100644
index 0000000..14264b7
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ZenModeScheduleChooserDialog.java
@@ -0,0 +1,149 @@
+/*
+ * 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.modes;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Bundle;
+import android.service.notification.ZenModeConfig;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.appcompat.app.AlertDialog;
+
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.dashboard.DashboardFragment;
+
+import com.google.common.collect.ImmutableList;
+
+public class ZenModeScheduleChooserDialog extends InstrumentedDialogFragment {
+
+ private static final String TAG = "ZenModeScheduleChooserDialog";
+
+ static final int OPTION_TIME = 0;
+ static final int OPTION_CALENDAR = 1;
+
+ private record ScheduleOption(@StringRes int nameResId, @StringRes int exampleResId,
+ @DrawableRes int iconResId) {}
+
+ private static final ImmutableList<ScheduleOption> SCHEDULE_OPTIONS = ImmutableList.of(
+ new ScheduleOption(R.string.zen_mode_select_schedule_time,
+ R.string.zen_mode_select_schedule_time_example,
+ com.android.internal.R.drawable.ic_zen_mode_type_schedule_time),
+ new ScheduleOption(R.string.zen_mode_select_schedule_calendar,
+ R.string.zen_mode_select_schedule_calendar_example,
+ com.android.internal.R.drawable.ic_zen_mode_type_schedule_calendar));
+
+ private OnScheduleOptionListener mOptionListener;
+
+ interface OnScheduleOptionListener {
+ void onScheduleSelected(Uri conditionId);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ // TODO: b/332937635 - Update metrics category
+ return 0;
+ }
+
+ static void show(DashboardFragment parent, OnScheduleOptionListener optionListener) {
+ ZenModeScheduleChooserDialog dialog = new ZenModeScheduleChooserDialog();
+ dialog.mOptionListener = optionListener;
+ dialog.setTargetFragment(parent, 0);
+ dialog.show(parent.getParentFragmentManager(), TAG);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ checkState(getContext() != null);
+ return new AlertDialog.Builder(getContext())
+ .setTitle(R.string.zen_mode_choose_rule_type)
+ .setAdapter(new OptionsAdapter(getContext()),
+ (dialog, which) -> onScheduleTypeSelected(which))
+ .setNegativeButton(R.string.cancel, null)
+ .create();
+ }
+
+ private static class OptionsAdapter extends ArrayAdapter<ScheduleOption> {
+
+ private final LayoutInflater mInflater;
+
+ OptionsAdapter(@NonNull Context context) {
+ super(context, R.layout.zen_mode_type_item, SCHEDULE_OPTIONS);
+ mInflater = LayoutInflater.from(context);
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ if (convertView == null) {
+ convertView = mInflater.inflate(R.layout.zen_mode_type_item, parent, false);
+ }
+ // No need for holder pattern since we have only 2 items.
+ ImageView imageView = checkNotNull(convertView.findViewById(R.id.icon));
+ TextView title = checkNotNull(convertView.findViewById(R.id.title));
+ TextView subtitle = checkNotNull(convertView.findViewById(R.id.subtitle));
+
+ ScheduleOption option = checkNotNull(getItem(position));
+ imageView.setImageResource(option.iconResId());
+ title.setText(option.nameResId());
+ subtitle.setText(option.exampleResId());
+
+ return convertView;
+ }
+ }
+
+ private void onScheduleTypeSelected(int whichOption) {
+ Uri conditionId = switch (whichOption) {
+ case OPTION_TIME -> getDefaultScheduleTimeCondition();
+ case OPTION_CALENDAR -> getDefaultScheduleCalendarCondition();
+ default -> ZenModeConfig.toCustomManualConditionId();
+ };
+
+ mOptionListener.onScheduleSelected(conditionId);
+ }
+
+ private static Uri getDefaultScheduleTimeCondition() {
+ ZenModeConfig.ScheduleInfo schedule = new ZenModeConfig.ScheduleInfo();
+ schedule.days = ZenModeConfig.ALL_DAYS;
+ schedule.startHour = 9;
+ schedule.startMinute = 30;
+ schedule.endHour = 17;
+ return ZenModeConfig.toScheduleConditionId(schedule);
+ }
+
+ private static Uri getDefaultScheduleCalendarCondition() {
+ ZenModeConfig.EventInfo eventInfo = new ZenModeConfig.EventInfo();
+ eventInfo.calendarId = null; // All calendars of the current user.
+ eventInfo.reply = ZenModeConfig.EventInfo.REPLY_ANY_EXCEPT_NO;
+ return ZenModeConfig.toEventConditionId(eventInfo);
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceController.java
index 2841309..4f45c5c8 100644
--- a/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceController.java
@@ -16,14 +16,12 @@
package com.android.settings.notification.modes;
-import android.app.Flags;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.CalendarContract;
-import android.service.notification.SystemZenRules;
import android.service.notification.ZenModeConfig;
import androidx.annotation.NonNull;
@@ -33,6 +31,8 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import java.util.ArrayList;
import java.util.Arrays;
@@ -42,7 +42,7 @@
import java.util.Objects;
import java.util.function.Function;
-public class ZenModeSetCalendarPreferenceController extends AbstractZenModePreferenceController {
+class ZenModeSetCalendarPreferenceController extends AbstractZenModePreferenceController {
@VisibleForTesting
protected static final String KEY_CALENDAR = "calendar";
@VisibleForTesting
@@ -122,11 +122,7 @@
@VisibleForTesting
protected Function<ZenMode, ZenMode> updateEventMode(ZenModeConfig.EventInfo event) {
return (zenMode) -> {
- zenMode.getRule().setConditionId(ZenModeConfig.toEventConditionId(event));
- if (Flags.modesApi() && Flags.modesUi()) {
- zenMode.getRule().setTriggerDescription(
- SystemZenRules.getTriggerDescriptionForScheduleEvent(mContext, event));
- }
+ zenMode.setCustomModeConditionId(mContext, ZenModeConfig.toEventConditionId(event));
return zenMode;
};
}
diff --git a/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceController.java b/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceController.java
index a6008cc..878a508 100644
--- a/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceController.java
@@ -16,9 +16,7 @@
package com.android.settings.notification.modes;
-import android.app.Flags;
import android.content.Context;
-import android.service.notification.SystemZenRules;
import android.service.notification.ZenModeConfig;
import android.text.format.DateFormat;
import android.util.ArraySet;
@@ -33,6 +31,8 @@
import androidx.preference.Preference;
import com.android.settings.R;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.LayoutPreference;
import java.text.SimpleDateFormat;
@@ -116,16 +116,13 @@
@VisibleForTesting
protected Function<ZenMode, ZenMode> updateScheduleMode(ZenModeConfig.ScheduleInfo schedule) {
return (zenMode) -> {
- zenMode.getRule().setConditionId(ZenModeConfig.toScheduleConditionId(schedule));
- if (Flags.modesApi() && Flags.modesUi()) {
- zenMode.getRule().setTriggerDescription(
- SystemZenRules.getTriggerDescriptionForScheduleTime(mContext, schedule));
- }
+ zenMode.setCustomModeConditionId(mContext,
+ ZenModeConfig.toScheduleConditionId(schedule));
return zenMode;
};
}
- private ZenModeTimePickerFragment.TimeSetter mStartSetter = (hour, minute) -> {
+ private final ZenModeTimePickerFragment.TimeSetter mStartSetter = (hour, minute) -> {
if (!isValidTime(hour, minute)) {
return;
}
@@ -137,7 +134,7 @@
saveMode(updateScheduleMode(mSchedule));
};
- private ZenModeTimePickerFragment.TimeSetter mEndSetter = (hour, minute) -> {
+ private final ZenModeTimePickerFragment.TimeSetter mEndSetter = (hour, minute) -> {
if (!isValidTime(hour, minute)) {
return;
}
diff --git a/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java
index 14d5d59..86135a9 100644
--- a/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java
@@ -13,35 +13,57 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.android.settings.notification.modes;
import static android.app.AutomaticZenRule.TYPE_SCHEDULE_CALENDAR;
import static android.app.AutomaticZenRule.TYPE_SCHEDULE_TIME;
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
-
import android.content.Context;
-import android.os.Bundle;
+import android.content.Intent;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
import com.android.settings.R;
-import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.PrimarySwitchPreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
/**
* Preference controller for the link to an individual mode's configuration page.
*/
class ZenModeSetTriggerLinkPreferenceController extends AbstractZenModePreferenceController {
+ private static final String TAG = "ZenModeSetTriggerLink";
+
@VisibleForTesting
protected static final String AUTOMATIC_TRIGGER_PREF_KEY = "zen_automatic_trigger_settings";
+ private final ConfigurationActivityHelper mConfigurationActivityHelper;
+ private final ZenServiceListing mServiceListing;
+ private final DashboardFragment mFragment;
+
ZenModeSetTriggerLinkPreferenceController(Context context, String key,
- ZenModesBackend backend) {
+ DashboardFragment fragment, ZenModesBackend backend) {
+ this(context, key, fragment, backend,
+ new ConfigurationActivityHelper(context.getPackageManager()),
+ new ZenServiceListing(context));
+ }
+
+ @VisibleForTesting
+ ZenModeSetTriggerLinkPreferenceController(Context context, String key,
+ DashboardFragment fragment, ZenModesBackend backend,
+ ConfigurationActivityHelper configurationActivityHelper,
+ ZenServiceListing serviceListing) {
super(context, key, backend);
+ mFragment = fragment;
+ mConfigurationActivityHelper = configurationActivityHelper;
+ mServiceListing = serviceListing;
}
@Override
@@ -50,51 +72,74 @@
}
@Override
+ public void displayPreference(PreferenceScreen screen, @NonNull ZenMode zenMode) {
+ // Preload approved components, but only for the package that owns the rule (since it's the
+ // only package that can have a valid configurationActivity).
+ mServiceListing.loadApprovedComponents(zenMode.getRule().getPackageName());
+ }
+
+ @Override
public void updateState(Preference preference, @NonNull ZenMode zenMode) {
// This controller is expected to govern a preference category so that it controls the
// availability of the entire preference category if the mode doesn't have a way to
// automatically trigger (such as manual DND).
- Preference switchPref = ((PreferenceCategory) preference).findPreference(
+ PrimarySwitchPreference switchPref = ((PreferenceCategory) preference).findPreference(
AUTOMATIC_TRIGGER_PREF_KEY);
if (switchPref == null) {
return;
}
- ((PrimarySwitchPreference) switchPref).setChecked(zenMode.getRule().isEnabled());
+ switchPref.setChecked(zenMode.getRule().isEnabled());
switchPref.setOnPreferenceChangeListener(mSwitchChangeListener);
+ switchPref.setSummary(zenMode.getRule().getTriggerDescription());
+ switchPref.setIcon(null);
+ switchPref.setOnPreferenceClickListener(null);
+ switchPref.setIntent(null);
- Bundle bundle = new Bundle();
- bundle.putString(MODE_ID, zenMode.getId());
-
- // TODO: b/341961712 - direct preference to app-owned intent if available
- switch (zenMode.getRule().getType()) {
- case TYPE_SCHEDULE_TIME:
+ if (zenMode.isSystemOwned()) {
+ if (zenMode.getType() == TYPE_SCHEDULE_TIME) {
switchPref.setTitle(R.string.zen_mode_set_schedule_link);
- switchPref.setSummary(zenMode.getRule().getTriggerDescription());
- switchPref.setIntent(new SubSettingLauncher(mContext)
- .setDestination(ZenModeSetScheduleFragment.class.getName())
- // TODO: b/332937635 - set correct metrics category
- .setSourceMetricsCategory(0)
- .setArguments(bundle)
- .toIntent());
- break;
- case TYPE_SCHEDULE_CALENDAR:
+ // TODO: b/332937635 - set correct metrics category
+ switchPref.setIntent(ZenSubSettingLauncher.forModeFragment(mContext,
+ ZenModeSetScheduleFragment.class, zenMode.getId(), 0).toIntent());
+ } else if (zenMode.getType() == TYPE_SCHEDULE_CALENDAR) {
switchPref.setTitle(R.string.zen_mode_set_calendar_link);
+ switchPref.setIcon(null);
+ // TODO: b/332937635 - set correct metrics category
+ switchPref.setIntent(ZenSubSettingLauncher.forModeFragment(mContext,
+ ZenModeSetCalendarFragment.class, zenMode.getId(), 0).toIntent());
+ } else {
+ switchPref.setTitle(R.string.zen_mode_select_schedule);
+ switchPref.setIcon(R.drawable.ic_add_24dp);
+ switchPref.setSummary("");
+ // TODO: b/342156843 - Hide the switch (needs support in SettingsLib).
+ switchPref.setOnPreferenceClickListener(clickedPreference -> {
+ ZenModeScheduleChooserDialog.show(mFragment, mOnScheduleOptionListener);
+ return true;
+ });
+ }
+ } else {
+ Intent intent = mConfigurationActivityHelper.getConfigurationActivityIntentForMode(
+ zenMode, mServiceListing::findService);
+ if (intent != null) {
+ preference.setVisible(true);
+ switchPref.setTitle(R.string.zen_mode_configuration_link_title);
switchPref.setSummary(zenMode.getRule().getTriggerDescription());
- switchPref.setIntent(new SubSettingLauncher(mContext)
- .setDestination(ZenModeSetCalendarFragment.class.getName())
- // TODO: b/332937635 - set correct metrics category
- .setSourceMetricsCategory(0)
- .setArguments(bundle)
- .toIntent());
- break;
- default:
- // TODO: b/342156843 - change this to allow adding a trigger condition for system
- // rules that don't yet have a type selected
- switchPref.setTitle("not implemented");
+ switchPref.setIntent(intent);
+ } else {
+ Log.i(TAG, "No intent found for " + zenMode.getRule().getName());
+ preference.setVisible(false);
+ }
}
}
@VisibleForTesting
+ final ZenModeScheduleChooserDialog.OnScheduleOptionListener mOnScheduleOptionListener =
+ conditionId -> saveMode(mode -> {
+ mode.setCustomModeConditionId(mContext, conditionId);
+ return mode;
+ });
+
+ @VisibleForTesting
protected Preference.OnPreferenceChangeListener mSwitchChangeListener = (p, newValue) -> {
final boolean newEnabled = (Boolean) newValue;
return saveMode((zenMode) -> {
@@ -103,5 +148,6 @@
}
return zenMode;
});
+ // TODO: b/342156843 - Do we want to jump to the corresponding schedule editing screen?
};
}
diff --git a/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java b/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java
index 77f364c..48a4c36 100644
--- a/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java
+++ b/src/com/android/settings/notification/modes/ZenModeSummaryHelper.java
@@ -15,6 +15,7 @@
*/
package com.android.settings.notification.modes;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_ANYONE;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_NONE;
@@ -47,6 +48,7 @@
import androidx.annotation.Nullable;
import com.android.settings.R;
+import com.android.settingslib.notification.modes.ZenMode;
import java.util.ArrayList;
import java.util.Arrays;
@@ -60,9 +62,9 @@
class ZenModeSummaryHelper {
private final Context mContext;
- private final ZenModesBackend mBackend;
+ private final ZenHelperBackend mBackend;
- public ZenModeSummaryHelper(Context context, ZenModesBackend backend) {
+ ZenModeSummaryHelper(Context context, ZenHelperBackend backend) {
mContext = context;
mBackend = backend;
}
@@ -187,11 +189,12 @@
String getDisplayEffectsSummary(ZenMode zenMode) {
boolean isFirst = true;
List<String> enabledEffects = new ArrayList<>();
- if (!zenMode.getPolicy().shouldShowAllVisualEffects()) {
+ if (!zenMode.getPolicy().shouldShowAllVisualEffects()
+ && zenMode.getRule().getInterruptionFilter() != INTERRUPTION_FILTER_ALL) {
enabledEffects.add(getBlockedEffectsSummary(zenMode));
isFirst = false;
}
- ZenDeviceEffects currEffects = zenMode.getRule().getDeviceEffects();
+ ZenDeviceEffects currEffects = zenMode.getRule().getDeviceEffects();
if (currEffects != null) {
if (currEffects.shouldDisplayGrayscale()) {
if (isFirst) {
@@ -411,8 +414,6 @@
return formatAppsList(appsBypassing);
} else if (zenMode.getPolicy().getAllowedChannels() == ZenPolicy.CHANNEL_POLICY_NONE) {
return mContext.getResources().getString(R.string.zen_mode_apps_none_apps);
- } else if (zenMode.getPolicy().getAllowedChannels() == ZenMode.CHANNEL_POLICY_ALL) {
- return mContext.getResources().getString(R.string.zen_mode_apps_all_apps);
}
return "";
}
diff --git a/src/com/android/settings/notification/modes/ZenModesBackend.java b/src/com/android/settings/notification/modes/ZenModesBackend.java
deleted file mode 100644
index ad36fc1..0000000
--- a/src/com/android/settings/notification/modes/ZenModesBackend.java
+++ /dev/null
@@ -1,275 +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.notification.modes;
-
-import android.annotation.Nullable;
-import android.app.ActivityManager;
-import android.app.AutomaticZenRule;
-import android.app.INotificationManager;
-import android.app.NotificationManager;
-import android.content.Context;
-import android.content.pm.ParceledListSlice;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.ServiceManager;
-import android.provider.ContactsContract;
-import android.provider.Settings;
-import android.service.notification.Condition;
-import android.service.notification.ConversationChannelWrapper;
-import android.service.notification.SystemZenRules;
-import android.service.notification.ZenAdapters;
-import android.service.notification.ZenModeConfig;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.settings.R;
-
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Class used for Settings-NMS interactions related to Mode management.
- *
- * <p>This class converts {@link AutomaticZenRule} instances, as well as the manual zen mode,
- * into the unified {@link ZenMode} format.
- */
-class ZenModesBackend {
-
- private static final String TAG = "ZenModeBackend";
-
- @Nullable // Until first usage
- private static ZenModesBackend sInstance;
-
- private final NotificationManager mNotificationManager;
- static INotificationManager sINM = INotificationManager.Stub.asInterface(
- ServiceManager.getService(Context.NOTIFICATION_SERVICE));
-
- private final Context mContext;
-
- static ZenModesBackend getInstance(Context context) {
- if (sInstance == null) {
- sInstance = new ZenModesBackend(context.getApplicationContext());
- }
- return sInstance;
- }
-
- ZenModesBackend(Context context) {
- mContext = context;
- mNotificationManager = context.getSystemService(NotificationManager.class);
- }
-
- List<ZenMode> getModes() {
- ArrayList<ZenMode> modes = new ArrayList<>();
- ZenModeConfig currentConfig = mNotificationManager.getZenModeConfig();
- modes.add(getManualDndMode(currentConfig));
-
- Map<String, AutomaticZenRule> zenRules = mNotificationManager.getAutomaticZenRules();
- for (Map.Entry<String, AutomaticZenRule> zenRuleEntry : zenRules.entrySet()) {
- String ruleId = zenRuleEntry.getKey();
- modes.add(new ZenMode(ruleId, zenRuleEntry.getValue(),
- isRuleActive(ruleId, currentConfig)));
- }
-
- modes.sort((l, r) -> {
- if (l.isManualDnd()) {
- return -1;
- } else if (r.isManualDnd()) {
- return 1;
- }
- return l.getRule().getName().compareTo(r.getRule().getName());
- });
-
- return modes;
- }
-
- @Nullable
- ZenMode getMode(String id) {
- ZenModeConfig currentConfig = mNotificationManager.getZenModeConfig();
- if (ZenMode.MANUAL_DND_MODE_ID.equals(id)) {
- return getManualDndMode(currentConfig);
- } else {
- AutomaticZenRule rule = mNotificationManager.getAutomaticZenRule(id);
- if (rule == null) {
- return null;
- }
- return new ZenMode(id, rule, isRuleActive(id, currentConfig));
- }
- }
-
- public ParceledListSlice<ConversationChannelWrapper> getConversations(boolean onlyImportant) {
- try {
- return sINM.getConversations(onlyImportant);
- } catch (Exception e) {
- Log.w(TAG, "Error calling NoMan", e);
- return ParceledListSlice.emptyList();
- }
- }
-
- public List<String> getStarredContacts() {
- Cursor cursor = null;
- try {
- cursor = queryStarredContactsData();
- return getStarredContacts(cursor);
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- }
-
- @VisibleForTesting
- List<String> getStarredContacts(Cursor cursor) {
- List<String> starredContacts = new ArrayList<>();
- if (cursor != null && cursor.moveToFirst()) {
- do {
- String contact = cursor.getString(0);
- starredContacts.add(contact != null ? contact :
- mContext.getString(R.string.zen_mode_starred_contacts_empty_name));
-
- } while (cursor.moveToNext());
- }
- return starredContacts;
- }
-
- private Cursor queryStarredContactsData() {
- return mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
- new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY},
- ContactsContract.Data.STARRED + "=1", null,
- ContactsContract.Data.TIMES_CONTACTED);
- }
-
- Cursor queryAllContactsData() {
- return mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
- new String[]{ContactsContract.Contacts.DISPLAY_NAME_PRIMARY},
- null, null, null);
- }
-
- private ZenMode getManualDndMode(ZenModeConfig config) {
- ZenModeConfig.ZenRule manualRule = config.manualRule;
- // TODO: b/333682392 - Replace with final strings for name & trigger description
- AutomaticZenRule manualDndRule = new AutomaticZenRule.Builder(
- mContext.getString(R.string.zen_mode_settings_title), manualRule.conditionId)
- .setType(manualRule.type)
- .setZenPolicy(manualRule.zenPolicy)
- .setDeviceEffects(manualRule.zenDeviceEffects)
- .setManualInvocationAllowed(manualRule.allowManualInvocation)
- .setConfigurationActivity(null) // No further settings
- .setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY)
- .build();
-
- return ZenMode.manualDndMode(manualDndRule, config != null && config.isManualActive());
- }
-
- private static boolean isRuleActive(String id, ZenModeConfig config) {
- if (config == null) {
- // shouldn't happen if the config is coming from NM, but be safe
- return false;
- }
- ZenModeConfig.ZenRule configRule = config.automaticRules.get(id);
- return configRule != null && configRule.isAutomaticActive();
- }
-
- void updateMode(ZenMode mode) {
- if (mode.isManualDnd()) {
- try {
- NotificationManager.Policy dndPolicy =
- new ZenModeConfig().toNotificationPolicy(mode.getPolicy());
- mNotificationManager.setNotificationPolicy(dndPolicy, /* fromUser= */ true);
-
- mNotificationManager.setManualZenRuleDeviceEffects(
- mode.getRule().getDeviceEffects());
- } catch (Exception e) {
- Log.w(TAG, "Error updating manual mode", e);
- }
- } else {
- mNotificationManager.updateAutomaticZenRule(mode.getId(), mode.getRule(),
- /* fromUser= */ true);
- }
- }
-
- void activateMode(ZenMode mode, @Nullable Duration forDuration) {
- if (mode.isManualDnd()) {
- Uri durationConditionId = null;
- if (forDuration != null) {
- durationConditionId = ZenModeConfig.toTimeCondition(mContext,
- (int) forDuration.toMinutes(), ActivityManager.getCurrentUser(), true).id;
- }
- mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS,
- durationConditionId, TAG, /* fromUser= */ true);
-
- } else {
- if (forDuration != null) {
- throw new IllegalArgumentException(
- "Only the manual DND mode can be activated for a specific duration");
- }
- mNotificationManager.setAutomaticZenRuleState(mode.getId(),
- new Condition(mode.getRule().getConditionId(), "", Condition.STATE_TRUE,
- Condition.SOURCE_USER_ACTION));
- }
- }
-
- void deactivateMode(ZenMode mode) {
- if (mode.isManualDnd()) {
- // When calling with fromUser=true this will not snooze other modes.
- mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_OFF, null, TAG,
- /* fromUser= */ true);
- } else {
- // TODO: b/333527800 - This should (potentially) snooze the rule if it was active.
- mNotificationManager.setAutomaticZenRuleState(mode.getId(),
- new Condition(mode.getRule().getConditionId(), "", Condition.STATE_FALSE,
- Condition.SOURCE_USER_ACTION));
- }
- }
-
- void removeMode(ZenMode mode) {
- if (!mode.canBeDeleted()) {
- throw new IllegalArgumentException("Mode " + mode + " cannot be deleted!");
- }
- mNotificationManager.removeAutomaticZenRule(mode.getId(), /* fromUser= */ true);
- }
-
- /**
- * Creates a new custom mode with the provided {@code name}. The mode will be "manual" (i.e.
- * not have a schedule), this can be later updated by the user in the mode settings page.
- *
- * @return the created mode. Only {@code null} if creation failed due to an internal error
- */
- @Nullable
- ZenMode addCustomMode(String name) {
- ZenModeConfig.ScheduleInfo schedule = new ZenModeConfig.ScheduleInfo();
- schedule.days = ZenModeConfig.ALL_DAYS;
- schedule.startHour = 22;
- schedule.endHour = 7;
-
- // TODO: b/326442408 - Create as "manual" (i.e. no trigger) instead of schedule-time.
- AutomaticZenRule rule = new AutomaticZenRule.Builder(name,
- ZenModeConfig.toScheduleConditionId(schedule))
- .setPackage(ZenModeConfig.getScheduleConditionProvider().getPackageName())
- .setType(AutomaticZenRule.TYPE_SCHEDULE_CALENDAR)
- .setOwner(ZenModeConfig.getScheduleConditionProvider())
- .setTriggerDescription(SystemZenRules.getTriggerDescriptionForScheduleTime(
- mContext, schedule))
- .setManualInvocationAllowed(true)
- .build();
-
- String ruleId = mNotificationManager.addAutomaticZenRule(rule);
- return getMode(ruleId);
- }
-}
diff --git a/src/com/android/settings/notification/modes/ZenModesFragmentBase.java b/src/com/android/settings/notification/modes/ZenModesFragmentBase.java
index 3f33b02..0bc0617 100644
--- a/src/com/android/settings/notification/modes/ZenModesFragmentBase.java
+++ b/src/com/android/settings/notification/modes/ZenModesFragmentBase.java
@@ -26,7 +26,10 @@
import android.provider.Settings.Global;
import android.util.Log;
+import androidx.annotation.VisibleForTesting;
+
import com.android.settings.dashboard.RestrictedDashboardFragment;
+import com.android.settingslib.notification.modes.ZenModesBackend;
/**
* Base class for all Settings pages controlling Modes behavior.
@@ -41,6 +44,7 @@
protected Context mContext;
protected ZenModesBackend mBackend;
+ protected ZenHelperBackend mHelperBackend;
// Individual pages must implement this method based on what they should do when
// the device's zen mode state changes.
@@ -55,10 +59,16 @@
return TAG;
}
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ void setBackend(ZenModesBackend backend) {
+ mBackend = backend;
+ }
+
@Override
public void onAttach(@NonNull Context context) {
mContext = context;
mBackend = ZenModesBackend.getInstance(context);
+ mHelperBackend = ZenHelperBackend.getInstance(context);
super.onAttach(context);
mSettingsObserver.register();
}
diff --git a/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceController.java b/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceController.java
index c229fb1..b4657a3 100644
--- a/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceController.java
@@ -16,25 +16,82 @@
package com.android.settings.notification.modes;
+import android.app.NotificationManager;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.graphics.drawable.Drawable;
+import android.service.notification.ConditionProviderService;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.WorkerThread;
import androidx.preference.Preference;
-import com.android.settings.utils.ZenServiceListing;
+import com.android.settings.R;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
-import java.util.Random;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.function.Function;
class ZenModesListAddModePreferenceController extends AbstractPreferenceController {
- private final ZenModesBackend mBackend;
private final ZenServiceListing mServiceListing;
+ private final OnAddModeListener mOnAddModeListener;
- ZenModesListAddModePreferenceController(Context context, ZenModesBackend backend,
- ZenServiceListing serviceListing) {
+ private final ConfigurationActivityHelper mConfigurationActivityHelper;
+ private final NotificationManager mNotificationManager;
+ private final PackageManager mPackageManager;
+ private final Function<ApplicationInfo, Drawable> mAppIconRetriever;
+ private final ListeningExecutorService mBackgroundExecutor;
+ private final Executor mUiThreadExecutor;
+
+ record ModeType(String name, Drawable icon, @Nullable String summary,
+ @Nullable Intent creationActivityIntent) { }
+
+ interface OnAddModeListener {
+ void onAvailableModeTypesForAdd(List<ModeType> types);
+ }
+
+ ZenModesListAddModePreferenceController(Context context, OnAddModeListener onAddModeListener) {
+ this(context, onAddModeListener, new ZenServiceListing(context),
+ new ConfigurationActivityHelper(context.getPackageManager()),
+ context.getSystemService(NotificationManager.class), context.getPackageManager(),
+ applicationInfo -> Utils.getBadgedIcon(context, applicationInfo),
+ Executors.newCachedThreadPool(), context.getMainExecutor());
+ }
+
+ @VisibleForTesting
+ ZenModesListAddModePreferenceController(Context context,
+ OnAddModeListener onAddModeListener, ZenServiceListing serviceListing,
+ ConfigurationActivityHelper configurationActivityHelper,
+ NotificationManager notificationManager, PackageManager packageManager,
+ Function<ApplicationInfo, Drawable> appIconRetriever,
+ ExecutorService backgroundExecutor, Executor uiThreadExecutor) {
super(context);
- mBackend = backend;
+ mOnAddModeListener = onAddModeListener;
mServiceListing = serviceListing;
+ mConfigurationActivityHelper = configurationActivityHelper;
+ mNotificationManager = notificationManager;
+ mPackageManager = packageManager;
+ mAppIconRetriever = appIconRetriever;
+ mBackgroundExecutor = MoreExecutors.listeningDecorator(backgroundExecutor);
+ mUiThreadExecutor = uiThreadExecutor;
}
@Override
@@ -50,12 +107,79 @@
@Override
public void updateState(Preference preference) {
preference.setOnPreferenceClickListener(pref -> {
- // TODO: b/326442408 - Launch the proper mode creation flow (using mServiceListing).
- ZenMode mode = mBackend.addCustomMode("New mode #" + new Random().nextInt(1000));
- if (mode != null) {
- ZenSubSettingLauncher.forMode(mContext, mode.getId()).launch();
- }
+ onClickAddMode();
return true;
});
}
+
+ @VisibleForTesting
+ void onClickAddMode() {
+ FutureUtil.whenDone(
+ mBackgroundExecutor.submit(this::getModeProviders),
+ mOnAddModeListener::onAvailableModeTypesForAdd,
+ mUiThreadExecutor);
+ }
+
+ @WorkerThread
+ private ImmutableList<ModeType> getModeProviders() {
+ ImmutableSet<ComponentInfo> approvedComponents = mServiceListing.loadApprovedComponents();
+
+ ArrayList<ModeType> appProvidedModes = new ArrayList<>();
+ for (ComponentInfo ci: approvedComponents) {
+ ModeType modeType = getValidNewModeTypeFromComponent(ci);
+ if (modeType != null) {
+ appProvidedModes.add(modeType);
+ }
+ }
+
+ return ImmutableList.<ModeType>builder()
+ .add(new ModeType(
+ mContext.getString(R.string.zen_mode_new_option_custom),
+ mContext.getDrawable(R.drawable.ic_zen_mode_new_option_custom),
+ null, null))
+ .addAll(appProvidedModes.stream()
+ .sorted(Comparator.comparing(ModeType::name))
+ .toList())
+ .build();
+ }
+
+ /**
+ * Returns a {@link ModeType} object corresponding to the approved {@link ComponentInfo} that
+ * specifies a creatable rule, if such a mode can actually be created (has an associated and
+ * enabled configuration activity, has not exceeded the rule instance limit, etc). Otherwise,
+ * returns {@code null}.
+ */
+ @WorkerThread
+ @Nullable
+ private ModeType getValidNewModeTypeFromComponent(ComponentInfo ci) {
+ if (ci.metaData == null) {
+ return null;
+ }
+
+ String ruleType = (ci instanceof ServiceInfo)
+ ? ci.metaData.getString(ConditionProviderService.META_DATA_RULE_TYPE)
+ : ci.metaData.getString(NotificationManager.META_DATA_AUTOMATIC_RULE_TYPE);
+ if (ruleType == null || ruleType.trim().isEmpty()) {
+ return null;
+ }
+
+ int ruleInstanceLimit = (ci instanceof ServiceInfo)
+ ? ci.metaData.getInt(ConditionProviderService.META_DATA_RULE_INSTANCE_LIMIT, -1)
+ : ci.metaData.getInt(NotificationManager.META_DATA_RULE_INSTANCE_LIMIT, -1);
+ if (ruleInstanceLimit > 0 && mNotificationManager.getRuleInstanceCount(
+ ci.getComponentName()) >= ruleInstanceLimit) {
+ return null; // Would exceed instance limit.
+ }
+
+ ComponentName configurationActivity =
+ mConfigurationActivityHelper.getConfigurationActivityFromApprovedComponent(ci);
+ if (configurationActivity == null) {
+ return null;
+ }
+
+ String appName = ci.applicationInfo.loadLabel(mPackageManager).toString();
+ Drawable appIcon = mAppIconRetriever.apply(ci.applicationInfo);
+ Intent configActivityIntent = new Intent().setComponent(configurationActivity);
+ return new ModeType(ruleType, appIcon, appName, configActivityIntent);
+ }
}
diff --git a/src/com/android/settings/notification/modes/ZenModesListAddModeTypeChooserDialog.java b/src/com/android/settings/notification/modes/ZenModesListAddModeTypeChooserDialog.java
new file mode 100644
index 0000000..57d3bf9
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ZenModesListAddModeTypeChooserDialog.java
@@ -0,0 +1,116 @@
+/*
+ * 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.modes;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.notification.modes.ZenModesListAddModePreferenceController.ModeType;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+public class ZenModesListAddModeTypeChooserDialog extends InstrumentedDialogFragment {
+
+ private static final String TAG = "ZenModesListAddModeTypeChooserDialog";
+
+ private OnChooseModeTypeListener mChooseModeTypeListener;
+ private ImmutableList<ModeType> mOptions;
+
+ interface OnChooseModeTypeListener {
+ void onTypeSelected(ModeType type);
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ // TODO: b/332937635 - Update metrics category
+ return 0;
+ }
+
+ static void show(DashboardFragment parent,
+ OnChooseModeTypeListener onChooseModeTypeListener,
+ List<ModeType> options) {
+ ZenModesListAddModeTypeChooserDialog dialog = new ZenModesListAddModeTypeChooserDialog();
+ dialog.mChooseModeTypeListener = onChooseModeTypeListener;
+ dialog.mOptions = ImmutableList.copyOf(options);
+ dialog.setTargetFragment(parent, 0);
+ dialog.show(parent.getParentFragmentManager(), TAG);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ checkState(getContext() != null);
+ return new AlertDialog.Builder(getContext())
+ .setTitle(R.string.zen_mode_new_title)
+ .setAdapter(new OptionsAdapter(getContext(), mOptions),
+ (dialog, which) -> mChooseModeTypeListener.onTypeSelected(
+ mOptions.get(which)))
+ .setNegativeButton(R.string.cancel, null)
+ .create();
+ }
+
+ private static class OptionsAdapter extends ArrayAdapter<ModeType> {
+
+ private final LayoutInflater mInflater;
+
+ private OptionsAdapter(Context context,
+ ImmutableList<ModeType> availableModeProviders) {
+ super(context, R.layout.zen_mode_type_item, availableModeProviders);
+ mInflater = LayoutInflater.from(context);
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ if (convertView == null) {
+ convertView = mInflater.inflate(R.layout.zen_mode_type_item, parent, false);
+ }
+ ImageView imageView = checkNotNull(convertView.findViewById(R.id.icon));
+ TextView title = checkNotNull(convertView.findViewById(R.id.title));
+ TextView subtitle = checkNotNull(convertView.findViewById(R.id.subtitle));
+
+ ModeType option = checkNotNull(getItem(position));
+ imageView.setImageDrawable(option.icon());
+ title.setText(option.name());
+ subtitle.setText(option.summary());
+ subtitle.setVisibility(
+ Strings.isNullOrEmpty(option.summary()) ? View.GONE : View.VISIBLE);
+
+ return convertView;
+ }
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ZenModesListFragment.java b/src/com/android/settings/notification/modes/ZenModesListFragment.java
index 80678f6..4622996 100644
--- a/src/com/android/settings/notification/modes/ZenModesListFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModesListFragment.java
@@ -16,46 +16,51 @@
package com.android.settings.notification.modes;
-import android.app.NotificationManager;
import android.app.settings.SettingsEnums;
+import android.content.ComponentName;
import android.content.Context;
-import android.service.notification.ConditionProviderService;
+import android.content.Intent;
import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
+import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
+import com.android.settings.notification.modes.ZenModesListAddModePreferenceController.ModeType;
+import com.android.settings.notification.modes.ZenModesListAddModePreferenceController.OnAddModeListener;
import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.utils.ManagedServiceSettings;
-import com.android.settings.utils.ZenServiceListing;
import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.search.SearchIndexable;
import com.google.common.collect.ImmutableList;
import java.util.List;
+import java.util.Optional;
+import java.util.Random;
@SearchIndexable
public class ZenModesListFragment extends ZenModesFragmentBase {
- private static final ManagedServiceSettings.Config CONFIG = getConditionProviderConfig();
+ static final int REQUEST_NEW_MODE = 101;
+
+ @Nullable private ComponentName mActivityInvokedForAddNew;
+ @Nullable private ImmutableList<String> mZenModeIdsBeforeAddNew;
@Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
- ZenServiceListing serviceListing = new ZenServiceListing(getContext(), CONFIG);
- serviceListing.reloadApprovedServices();
- return buildPreferenceControllers(context, this, serviceListing);
+ return buildPreferenceControllers(context, this::onAvailableModeTypesForAdd);
}
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
- @Nullable Fragment parent, @Nullable ZenServiceListing serviceListing) {
+ OnAddModeListener onAddModeListener) {
// We need to redefine ZenModesBackend here even though mBackend exists so that this method
// can be static; it must be static to be able to be used in SEARCH_INDEX_DATA_PROVIDER.
ZenModesBackend backend = ZenModesBackend.getInstance(context);
return ImmutableList.of(
- new ZenModesListPreferenceController(context, parent, backend),
- new ZenModesListAddModePreferenceController(context, backend, serviceListing)
+ new ZenModesListPreferenceController(context, backend),
+ new ZenModesListAddModePreferenceController(context, onAddModeListener)
);
}
@@ -77,14 +82,55 @@
return SettingsEnums.NOTIFICATION_ZEN_MODE_AUTOMATION;
}
- private static ManagedServiceSettings.Config getConditionProviderConfig() {
- return new ManagedServiceSettings.Config.Builder()
- .setTag(TAG)
- .setIntentAction(ConditionProviderService.SERVICE_INTERFACE)
- .setConfigurationIntentAction(NotificationManager.ACTION_AUTOMATIC_ZEN_RULE)
- .setPermission(android.Manifest.permission.BIND_CONDITION_PROVIDER_SERVICE)
- .setNoun("condition provider")
- .build();
+ private void onAvailableModeTypesForAdd(List<ModeType> types) {
+ if (types.size() > 1) {
+ // Show dialog to choose the mode to be created. Continue once the user chooses.
+ ZenModesListAddModeTypeChooserDialog.show(this, this::onChosenModeTypeForAdd, types);
+ } else {
+ // Will be custom_manual.
+ onChosenModeTypeForAdd(types.get(0));
+ }
+ }
+
+ @VisibleForTesting
+ void onChosenModeTypeForAdd(ModeType type) {
+ if (type.creationActivityIntent() != null) {
+ mActivityInvokedForAddNew = type.creationActivityIntent().getComponent();
+ mZenModeIdsBeforeAddNew = ImmutableList.copyOf(
+ mBackend.getModes().stream().map(ZenMode::getId).toList());
+ startActivityForResult(type.creationActivityIntent(), REQUEST_NEW_MODE);
+ } else {
+ // Custom-manual mode.
+ // TODO: b/326442408 - Transition to the choose-name-and-icon fragment.
+ ZenMode mode = mBackend.addCustomManualMode(
+ "Mode #" + new Random().nextInt(100), 0);
+ if (mode != null) {
+ ZenSubSettingLauncher.forMode(mContext, mode.getId()).launch();
+ }
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ // If coming back after starting a 3rd-party configuration activity to create a new mode,
+ // try to identify the created mode. Ideally this would be part of the resultCode/data, but
+ // the existing API doesn't work that way...
+ ComponentName activityInvoked = mActivityInvokedForAddNew;
+ ImmutableList<String> previousIds = mZenModeIdsBeforeAddNew;
+ mActivityInvokedForAddNew = null;
+ mZenModeIdsBeforeAddNew = null;
+ if (requestCode != REQUEST_NEW_MODE || previousIds == null || activityInvoked == null) {
+ return;
+ }
+
+ // If we find a new mode owned by the same package, presumably that's it. Open its page.
+ Optional<ZenMode> createdZenMode = mBackend.getModes().stream()
+ .filter(m -> !previousIds.contains(m.getId()))
+ .filter(m -> m.getRule().getPackageName().equals(activityInvoked.getPackageName()))
+ .findFirst();
+ createdZenMode.ifPresent(
+ mode -> ZenSubSettingLauncher.forMode(mContext, mode.getId()).launch());
}
/**
@@ -105,7 +151,7 @@
@Override
public List<AbstractPreferenceController> createPreferenceControllers(
Context context) {
- return buildPreferenceControllers(context, null, null);
+ return buildPreferenceControllers(context, ignoredType -> {});
}
};
}
diff --git a/src/com/android/settings/notification/modes/ZenModesListItemPreference.java b/src/com/android/settings/notification/modes/ZenModesListItemPreference.java
index 7ecfb3a..261ab1d 100644
--- a/src/com/android/settings/notification/modes/ZenModesListItemPreference.java
+++ b/src/com/android/settings/notification/modes/ZenModesListItemPreference.java
@@ -16,16 +16,31 @@
package com.android.settings.notification.modes;
import android.content.Context;
+import android.widget.TextView;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settings.R;
import com.android.settingslib.RestrictedPreference;
+import com.android.settingslib.Utils;
+import com.android.settingslib.notification.modes.ZenIconLoader;
+import com.android.settingslib.notification.modes.ZenMode;
+
+import com.google.common.base.Strings;
/**
* Preference representing a single mode item on the modes aggregator page. Clicking on this
* preference leads to an individual mode's configuration page.
*/
class ZenModesListItemPreference extends RestrictedPreference {
- final Context mContext;
- ZenMode mZenMode;
+
+ private final Context mContext;
+ private ZenMode mZenMode;
+
+ private TextView mTitleView;
+ private TextView mSummaryView;
ZenModesListItemPreference(Context context, ZenMode zenMode) {
super(context);
@@ -35,19 +50,65 @@
}
@Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ if (holder.findViewById(android.R.id.title) instanceof TextView titleView) {
+ mTitleView = titleView;
+ }
+ if (holder.findViewById(android.R.id.summary) instanceof TextView summaryView) {
+ mSummaryView = summaryView;
+ }
+ updateTextColor(mZenMode);
+ }
+
+ @Override
public void onClick() {
ZenSubSettingLauncher.forMode(mContext, mZenMode.getId()).launch();
}
public void setZenMode(ZenMode zenMode) {
mZenMode = zenMode;
- setTitle(mZenMode.getRule().getName());
- setSummary(mZenMode.getRule().getTriggerDescription());
- setIconSize(ICON_SIZE_SMALL);
+ setTitle(mZenMode.getName());
+ CharSequence statusText = switch (mZenMode.getStatus()) {
+ case ENABLED_AND_ACTIVE ->
+ Strings.isNullOrEmpty(mZenMode.getTriggerDescription())
+ ? 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),
+ mZenMode.getRule().getTriggerDescription());
+ case ENABLED -> mZenMode.getRule().getTriggerDescription();
+ 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);
+ setIconSize(ICON_SIZE_SMALL);
FutureUtil.whenDone(
- mZenMode.getIcon(mContext, IconLoader.getInstance()),
- icon -> setIcon(IconUtil.applyTint(mContext, icon)),
+ mZenMode.getIcon(mContext, ZenIconLoader.getInstance()),
+ icon -> setIcon(
+ zenMode.isActive()
+ ? IconUtil.applyAccentTint(mContext, icon)
+ : IconUtil.applyNormalTint(mContext, icon)),
mContext.getMainExecutor());
+
+ updateTextColor(zenMode);
+ }
+
+ private void updateTextColor(@Nullable ZenMode zenMode) {
+ boolean isActive = zenMode != null && zenMode.isActive();
+ if (mTitleView != null) {
+ mTitleView.setTextColor(Utils.getColorAttr(mContext,
+ isActive ? android.R.attr.colorAccent : android.R.attr.textColorPrimary));
+ }
+ if (mSummaryView != null) {
+ mSummaryView.setTextColor(Utils.getColorAttr(mContext,
+ isActive ? android.R.attr.colorAccent : android.R.attr.textColorSecondary));
+ }
+ }
+
+ @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+ ZenMode getZenMode() {
+ return mZenMode;
}
}
diff --git a/src/com/android/settings/notification/modes/ZenModesListPreferenceController.java b/src/com/android/settings/notification/modes/ZenModesListPreferenceController.java
index 5dcd9eb..ba12b9a 100644
--- a/src/com/android/settings/notification/modes/ZenModesListPreferenceController.java
+++ b/src/com/android/settings/notification/modes/ZenModesListPreferenceController.java
@@ -20,13 +20,13 @@
import android.content.res.Resources;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.search.SearchIndexableRaw;
import java.util.HashMap;
@@ -41,14 +41,10 @@
class ZenModesListPreferenceController extends BasePreferenceController {
protected static final String KEY = "zen_modes_list";
- @Nullable
- protected Fragment mParent;
protected ZenModesBackend mBackend;
- public ZenModesListPreferenceController(Context context, @Nullable Fragment parent,
- @NonNull ZenModesBackend backend) {
+ ZenModesListPreferenceController(Context context, @NonNull ZenModesBackend backend) {
super(context, KEY);
- mParent = parent;
mBackend = backend;
}
diff --git a/src/com/android/settings/notification/modes/ZenServiceListing.java b/src/com/android/settings/notification/modes/ZenServiceListing.java
new file mode 100644
index 0000000..ccecec5
--- /dev/null
+++ b/src/com/android/settings/notification/modes/ZenServiceListing.java
@@ -0,0 +1,170 @@
+/*
+ * 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.modes;
+
+import android.app.ActivityManager;
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.service.notification.ConditionProviderService;
+import android.util.ArraySet;
+import android.util.Slog;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.settings.utils.ManagedServiceSettings;
+
+import com.google.common.collect.ImmutableSet;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+class ZenServiceListing {
+
+ static final ManagedServiceSettings.Config CONFIGURATION =
+ new ManagedServiceSettings.Config.Builder()
+ .setTag("ZenServiceListing")
+ .setIntentAction(ConditionProviderService.SERVICE_INTERFACE)
+ .setConfigurationIntentAction(NotificationManager.ACTION_AUTOMATIC_ZEN_RULE)
+ .setPermission(android.Manifest.permission.BIND_CONDITION_PROVIDER_SERVICE)
+ .setNoun("condition provider")
+ .build();
+
+ private final Context mContext;
+ private final Set<ComponentInfo> mApprovedComponents = new ArraySet<>();
+ private final List<Callback> mZenCallbacks = new ArrayList<>();
+ private final NotificationManager mNm;
+
+ ZenServiceListing(Context context) {
+ mContext = context;
+ mNm = context.getSystemService(NotificationManager.class);
+ }
+
+ public ComponentInfo findService(final ComponentName cn) {
+ if (cn == null) {
+ return null;
+ }
+ for (ComponentInfo component : mApprovedComponents) {
+ final ComponentName ci = new ComponentName(component.packageName, component.name);
+ if (ci.equals(cn)) {
+ return component;
+ }
+ }
+ return null;
+ }
+
+ public void addZenCallback(Callback callback) {
+ mZenCallbacks.add(callback);
+ }
+
+ public void removeZenCallback(Callback callback) {
+ mZenCallbacks.remove(callback);
+ }
+
+ @WorkerThread
+ public ImmutableSet<ComponentInfo> loadApprovedComponents() {
+ return loadApprovedComponents(null);
+ }
+
+ @WorkerThread
+ public ImmutableSet<ComponentInfo> loadApprovedComponents(@Nullable String restrictToPkg) {
+ mApprovedComponents.clear();
+
+ List<String> enabledNotificationListenerPkgs = mNm.getEnabledNotificationListenerPackages();
+ List<ComponentInfo> components = new ArrayList<>();
+ getServices(CONFIGURATION, components, mContext.getPackageManager(), restrictToPkg);
+ getActivities(CONFIGURATION, components, mContext.getPackageManager(), restrictToPkg);
+ for (ComponentInfo componentInfo : components) {
+ final String pkg = componentInfo.getComponentName().getPackageName();
+ if (mNm.isNotificationPolicyAccessGrantedForPackage(pkg)
+ || enabledNotificationListenerPkgs.contains(pkg)) {
+ mApprovedComponents.add(componentInfo);
+ }
+ }
+
+ if (!mApprovedComponents.isEmpty()) {
+ for (Callback callback : mZenCallbacks) {
+ callback.onComponentsReloaded(mApprovedComponents);
+ }
+ }
+
+ return ImmutableSet.copyOf(mApprovedComponents);
+ }
+
+ private static void getServices(ManagedServiceSettings.Config c, List<ComponentInfo> list,
+ PackageManager pm, @Nullable String restrictToPkg) {
+ final int user = ActivityManager.getCurrentUser();
+
+ Intent queryIntent = new Intent(c.intentAction);
+ if (restrictToPkg != null) {
+ queryIntent.setPackage(restrictToPkg);
+ }
+ List<ResolveInfo> installedServices = pm.queryIntentServicesAsUser(
+ queryIntent,
+ PackageManager.GET_SERVICES | PackageManager.GET_META_DATA,
+ user);
+
+ for (int i = 0, count = installedServices.size(); i < count; i++) {
+ ResolveInfo resolveInfo = installedServices.get(i);
+ ServiceInfo info = resolveInfo.serviceInfo;
+
+ if (!c.permission.equals(info.permission)) {
+ Slog.w(c.tag, "Skipping " + c.noun + " service "
+ + info.packageName + "/" + info.name
+ + ": it does not require the permission "
+ + c.permission);
+ continue;
+ }
+ if (list != null) {
+ list.add(info);
+ }
+ }
+ }
+
+ private static void getActivities(ManagedServiceSettings.Config c, List<ComponentInfo> list,
+ PackageManager pm, @Nullable String restrictToPkg) {
+ final int user = ActivityManager.getCurrentUser();
+
+ Intent queryIntent = new Intent(c.configIntentAction);
+ if (restrictToPkg != null) {
+ queryIntent.setPackage(restrictToPkg);
+ }
+ List<ResolveInfo> resolveInfos = pm.queryIntentActivitiesAsUser(
+ queryIntent,
+ PackageManager.GET_ACTIVITIES | PackageManager.GET_META_DATA,
+ user);
+
+ for (int i = 0, count = resolveInfos.size(); i < count; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+ ActivityInfo info = resolveInfo.activityInfo;
+ if (list != null) {
+ list.add(info);
+ }
+ }
+ }
+
+ public interface Callback {
+ void onComponentsReloaded(Set<ComponentInfo> components);
+ }
+}
diff --git a/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java b/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java
index 11f3492..529f7fa 100644
--- a/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java
+++ b/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java
@@ -16,6 +16,8 @@
package com.android.settings.notification.modes;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
+
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
@@ -29,11 +31,11 @@
SettingsEnums.NOTIFICATION_ZEN_MODE_AUTOMATION);
}
- private static SubSettingLauncher forModeFragment(Context context,
+ static SubSettingLauncher forModeFragment(Context context,
Class<? extends ZenModeFragmentBase> fragmentClass, String modeId,
int sourceMetricsCategory) {
Bundle bundle = new Bundle();
- bundle.putString(ZenModeFragmentBase.MODE_ID, modeId);
+ bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, modeId);
return new SubSettingLauncher(context)
.setDestination(fragmentClass.getName())
diff --git a/src/com/android/settings/notification/zen/ZenModeBackend.java b/src/com/android/settings/notification/zen/ZenModeBackend.java
index 426f52d..de641c5 100644
--- a/src/com/android/settings/notification/zen/ZenModeBackend.java
+++ b/src/com/android/settings/notification/zen/ZenModeBackend.java
@@ -116,7 +116,7 @@
ActivityManager.getCurrentUser(), true).id;
if (android.app.Flags.modesApi()) {
mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS,
- conditionId, TAG, /* fromUser= */ true);
+ conditionId, TAG, /* fromUser= */ true);
} else {
mNotificationManager.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS,
conditionId, TAG);
@@ -241,12 +241,14 @@
}
savePolicy(getNewDefaultPriorityCategories(allowSenders, category),
- priorityCallSenders, priorityMessagesSenders, mPolicy.suppressedVisualEffects,
+ priorityCallSenders, priorityMessagesSenders, mPolicy.suppressedVisualEffects,
mPolicy.priorityConversationSenders);
- if (ZenModeSettingsBase.DEBUG) Log.d(TAG, "onPrefChange allow" +
- stringCategory + "=" + allowSenders + " allow" + stringCategory + "From="
- + ZenModeConfig.sourceToString(allowSendersFrom));
+ if (ZenModeSettingsBase.DEBUG) {
+ Log.d(TAG, "onPrefChange allow"
+ + stringCategory + "=" + allowSenders + " allow" + stringCategory + "From="
+ + ZenModeConfig.sourceToString(allowSendersFrom));
+ }
}
protected void saveConversationSenders(int val) {
@@ -280,7 +282,7 @@
switch (contactType) {
case ZenPolicy.PEOPLE_TYPE_ANYONE:
return ZEN_MODE_FROM_ANYONE;
- case ZenPolicy.PEOPLE_TYPE_CONTACTS:
+ case ZenPolicy.PEOPLE_TYPE_CONTACTS:
return ZEN_MODE_FROM_CONTACTS;
case ZenPolicy.PEOPLE_TYPE_STARRED:
return ZEN_MODE_FROM_STARRED;
@@ -308,7 +310,7 @@
switch (setting) {
case ZenPolicy.PEOPLE_TYPE_ANYONE:
return NotificationManager.Policy.PRIORITY_SENDERS_ANY;
- case ZenPolicy.PEOPLE_TYPE_CONTACTS:
+ case ZenPolicy.PEOPLE_TYPE_CONTACTS:
return NotificationManager.Policy.PRIORITY_SENDERS_CONTACTS;
case ZenPolicy.PEOPLE_TYPE_STARRED:
return NotificationManager.Policy.PRIORITY_SENDERS_STARRED;
@@ -321,7 +323,7 @@
protected int getAlarmsTotalSilencePeopleSummary(int category) {
if (category == NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES) {
return R.string.zen_mode_none_messages;
- } else if (category == NotificationManager.Policy.PRIORITY_CATEGORY_CALLS){
+ } else if (category == NotificationManager.Policy.PRIORITY_CATEGORY_CALLS) {
return R.string.zen_mode_none_calls;
} else if (category == NotificationManager.Policy.PRIORITY_CATEGORY_CONVERSATIONS) {
return R.string.zen_mode_from_no_conversations;
@@ -470,8 +472,8 @@
if (cursor != null && cursor.moveToFirst()) {
do {
String contact = cursor.getString(0);
- starredContacts.add(contact != null ? contact :
- mContext.getString(R.string.zen_mode_starred_contacts_empty_name));
+ int emptyNameId = R.string.zen_mode_starred_contacts_empty_name;
+ starredContacts.add(contact != null ? contact : mContext.getString(emptyNameId));
} while (cursor.moveToNext());
}
diff --git a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
index 4f6f058..d16b1e4 100644
--- a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
+++ b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
@@ -132,8 +132,8 @@
final Uri contentUri = new Uri.Builder().appendPath(ZEN_MODE_SLICE_KEY).build();
final String screenTitle = context.getText(R.string.zen_mode_settings_title).toString();
return SliceBuilderUtils.buildSearchResultPageIntent(context,
- ZenModeSettings.class.getName(), ZEN_MODE_SLICE_KEY, screenTitle,
- SettingsEnums.NOTIFICATION_ZEN_MODE, R.string.menu_key_notifications)
+ ZenModeSettings.class.getName(), ZEN_MODE_SLICE_KEY, screenTitle,
+ SettingsEnums.NOTIFICATION_ZEN_MODE, R.string.menu_key_notifications)
.setClassName(context.getPackageName(), SubSettings.class.getName())
.setData(contentUri);
}
diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java
index 02f5b86..a7a039e 100644
--- a/src/com/android/settings/password/BiometricFragment.java
+++ b/src/com/android/settings/password/BiometricFragment.java
@@ -16,8 +16,11 @@
package com.android.settings.password;
+import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_ERROR_USER_CANCELED;
+
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
+import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.BiometricPrompt;
import android.hardware.biometrics.BiometricPrompt.AuthenticationCallback;
import android.hardware.biometrics.BiometricPrompt.AuthenticationResult;
@@ -137,7 +140,7 @@
BiometricPrompt.Builder promptBuilder = new BiometricPrompt.Builder(getContext())
.setTitle(promptInfo.getTitle())
.setUseDefaultTitle() // use default title if title is null/empty
- .setDeviceCredentialAllowed(true)
+ .setAllowedAuthenticators(promptInfo.getAuthenticators())
.setSubtitle(promptInfo.getSubtitle())
.setDescription(promptInfo.getDescription())
.setTextForDeviceCredential(
@@ -170,6 +173,15 @@
if (promptInfo.isUseDefaultSubtitle()) {
promptBuilder.setUseDefaultSubtitle();
}
+
+ if ((promptInfo.getAuthenticators()
+ & BiometricManager.Authenticators.DEVICE_CREDENTIAL) == 0) {
+ promptBuilder.setNegativeButton(promptInfo.getNegativeButtonText(),
+ getContext().getMainExecutor(),
+ (dialog, which) -> mAuthenticationCallback.onAuthenticationError(
+ BIOMETRIC_ERROR_USER_CANCELED,
+ null /* errString */));
+ }
mBiometricPrompt = promptBuilder.build();
}
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index ce9a566..4c18309 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -160,11 +160,13 @@
static final int CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST = 103;
@VisibleForTesting
static final int SKIP_FINGERPRINT_REQUEST = 104;
+ private static final int BIOMETRIC_AUTH_REQUEST = 105;
private LockPatternUtils mLockPatternUtils;
private DevicePolicyManager mDpm;
private boolean mRequestGatekeeperPasswordHandle = false;
private boolean mPasswordConfirmed = false;
+ private boolean mBiometricsAuthSuccessful = false;
private boolean mWaitingForConfirmation = false;
private boolean mWaitingForActivityResult = false;
private LockscreenCredential mUserPassword;
@@ -488,6 +490,17 @@
? data.getParcelableExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD)
: null;
updatePreferencesOrFinish(false /* isRecreatingActivity */);
+ if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getContext(),
+ mBiometricsAuthSuccessful, mWaitingForConfirmation)) {
+ mWaitingForConfirmation = true;
+ Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST);
+ }
+ } else if (requestCode == BIOMETRIC_AUTH_REQUEST) {
+ if (resultCode == Activity.RESULT_OK) {
+ mBiometricsAuthSuccessful = true;
+ } else {
+ finish();
+ }
} else if (requestCode == CHOOSE_LOCK_REQUEST) {
if (resultCode != RESULT_CANCELED) {
getActivity().setResult(resultCode, data);
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
index 7f362c3..c0b3093 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
@@ -17,10 +17,10 @@
package com.android.settings.password;
+import static android.Manifest.permission.SET_BIOMETRIC_DIALOG_ADVANCED;
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.Manifest.permission.SET_BIOMETRIC_DIALOG_ADVANCED;
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
import static com.android.systemui.biometrics.Utils.toBitmap;
@@ -40,6 +40,7 @@
import android.graphics.Bitmap;
import android.graphics.Color;
import android.hardware.biometrics.BiometricConstants;
+import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.BiometricPrompt;
import android.hardware.biometrics.BiometricPrompt.AuthenticationCallback;
import android.hardware.biometrics.PromptInfo;
@@ -76,6 +77,9 @@
/** Use this extra value to provide a custom logo description for the biometric prompt. **/
public static final String CUSTOM_BIOMETRIC_PROMPT_LOGO_DESCRIPTION_KEY =
"custom_logo_description";
+ public static final String BIOMETRIC_PROMPT_AUTHENTICATORS = "biometric_prompt_authenticators";
+ public static final String BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT =
+ "biometric_prompt_negative_button_text";
public static class InternalActivity extends ConfirmDeviceCredentialActivity {
}
@@ -177,6 +181,11 @@
mDetails = intent.getCharSequenceExtra(KeyguardManager.EXTRA_DESCRIPTION);
String alternateButton = intent.getStringExtra(
KeyguardManager.EXTRA_ALTERNATE_BUTTON_LABEL);
+ final int authenticators = intent.getIntExtra(BIOMETRIC_PROMPT_AUTHENTICATORS,
+ BiometricManager.Authenticators.DEVICE_CREDENTIAL
+ | BiometricManager.Authenticators.BIOMETRIC_WEAK);
+ final String negativeButtonText = intent.getStringExtra(
+ BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT);
final boolean frp =
KeyguardManager.ACTION_CONFIRM_FRP_CREDENTIAL.equals(intent.getAction());
final boolean repairMode =
@@ -213,6 +222,8 @@
promptInfo.setTitle(mTitle);
promptInfo.setDescription(mDetails);
promptInfo.setDisallowBiometricsIfPolicyExists(mCheckDevicePolicyManager);
+ promptInfo.setAuthenticators(authenticators);
+ promptInfo.setNegativeButtonText(negativeButtonText);
if (android.multiuser.Flags.enablePrivateSpaceFeatures()
&& android.multiuser.Flags.usePrivateSpaceIconInBiometricPrompt()
diff --git a/src/com/android/settings/print/PrintSettingsPageProvider.kt b/src/com/android/settings/print/PrintSettingsPageProvider.kt
index aac0a5d..f28f0bc 100644
--- a/src/com/android/settings/print/PrintSettingsPageProvider.kt
+++ b/src/com/android/settings/print/PrintSettingsPageProvider.kt
@@ -17,16 +17,32 @@
package com.android.settings.print
import android.app.settings.SettingsEnums
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
import android.os.Bundle
+import android.provider.Settings
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.outlined.Add
+import androidx.compose.material.icons.outlined.Print
+import androidx.compose.material3.Icon
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
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.draw.alpha
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
import androidx.core.os.bundleOf
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settings.R
@@ -36,13 +52,18 @@
import com.android.settings.print.PrintSettingsFragment.EXTRA_SERVICE_COMPONENT_NAME
import com.android.settings.print.PrintSettingsFragment.EXTRA_TITLE
import com.android.settingslib.spa.framework.common.SettingsPageProvider
+import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spa.framework.compose.rememberDrawablePainter
import com.android.settingslib.spa.framework.theme.SettingsDimension
+import com.android.settingslib.spa.framework.theme.SettingsOpacity
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.Category
+import com.android.settingslib.spa.widget.ui.SettingsIcon
+import com.android.settingslib.spaprivileged.settingsprovider.settingsSecureStringFlow
import com.android.settingslib.spaprivileged.template.common.UserProfilePager
+import kotlinx.coroutines.flow.Flow
object PrintSettingsPageProvider : SettingsPageProvider {
override val name = "PrintSettings"
@@ -52,51 +73,101 @@
RegularScaffold(title = stringResource(R.string.print_settings)) {
val context = LocalContext.current
val printRepository = remember(context) { PrintRepository(context) }
- UserProfilePager {
- PrintServices(printRepository)
- }
+ UserProfilePager { PrintServices(printRepository) }
}
}
@Composable
private fun PrintServices(printRepository: PrintRepository) {
- val printServiceDisplayInfos by remember {
- printRepository.printServiceDisplayInfosFlow()
- }.collectAsStateWithLifecycle(initialValue = emptyList())
- Category(title = stringResource(R.string.print_settings_title)) {
- for (printServiceDisplayInfo in printServiceDisplayInfos) {
- PrintService(printServiceDisplayInfo)
+ val printServiceDisplayInfos by
+ remember { printRepository.printServiceDisplayInfosFlow() }
+ .collectAsStateWithLifecycle(initialValue = emptyList())
+ if (printServiceDisplayInfos.isEmpty()) {
+ NoServicesInstalled()
+ } else {
+ Category(title = stringResource(R.string.print_settings_title)) {
+ for (printServiceDisplayInfo in printServiceDisplayInfos) {
+ PrintService(printServiceDisplayInfo)
+ }
}
}
+ AddPrintService()
+ }
+
+ @Composable
+ private fun NoServicesInstalled() {
+ Column(
+ modifier = Modifier.fillMaxSize().padding(SettingsDimension.itemPaddingAround),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ ) {
+ Icon(
+ imageVector = Icons.Outlined.Print,
+ contentDescription = null,
+ modifier =
+ Modifier.size(110.dp)
+ .padding(SettingsDimension.itemPaddingAround)
+ .alpha(SettingsOpacity.SurfaceTone),
+ )
+ Text(
+ text = stringResource(R.string.print_no_services_installed),
+ style = MaterialTheme.typography.titleLarge,
+ )
+ }
}
@VisibleForTesting
@Composable
fun PrintService(displayInfo: PrintServiceDisplayInfo) {
val context = LocalContext.current
- Preference(model = object : PreferenceModel {
- override val title = displayInfo.title
- override val summary = { displayInfo.summary }
- override val icon: @Composable () -> Unit = {
- Image(
- painter = rememberDrawablePainter(displayInfo.icon),
- contentDescription = null,
- modifier = Modifier.size(SettingsDimension.appIconItemSize),
- )
- }
- override val onClick = {
- SubSettingLauncher(context).apply {
- setDestination(PrintServiceSettingsFragment::class.qualifiedName)
- setArguments(
- bundleOf(
- EXTRA_CHECKED to displayInfo.isEnabled,
- EXTRA_TITLE to displayInfo.title,
- EXTRA_SERVICE_COMPONENT_NAME to displayInfo.componentName
- )
+ Preference(
+ object : PreferenceModel {
+ override val title = displayInfo.title
+ override val summary = { displayInfo.summary }
+ override val icon: @Composable () -> Unit = {
+ Image(
+ painter = rememberDrawablePainter(displayInfo.icon),
+ contentDescription = null,
+ modifier = Modifier.size(SettingsDimension.appIconItemSize),
)
- setSourceMetricsCategory(SettingsEnums.PRINT_SETTINGS)
- }.launch()
+ }
+ override val onClick = { launchPrintServiceSettings(context, displayInfo) }
}
- })
+ )
+ }
+
+ private fun launchPrintServiceSettings(context: Context, displayInfo: PrintServiceDisplayInfo) {
+ SubSettingLauncher(context)
+ .apply {
+ setDestination(PrintServiceSettingsFragment::class.qualifiedName)
+ setArguments(
+ bundleOf(
+ EXTRA_CHECKED to displayInfo.isEnabled,
+ EXTRA_TITLE to displayInfo.title,
+ EXTRA_SERVICE_COMPONENT_NAME to displayInfo.componentName
+ )
+ )
+ setSourceMetricsCategory(SettingsEnums.PRINT_SETTINGS)
+ }
+ .launch()
+ }
+
+ @Composable
+ fun AddPrintService(
+ searchUriFlow: Flow<String> = rememberContext { context ->
+ context.settingsSecureStringFlow(Settings.Secure.PRINT_SERVICE_SEARCH_URI)
+ },
+ ) {
+ val context = LocalContext.current
+ val searchUri by searchUriFlow.collectAsStateWithLifecycle("")
+ if (searchUri.isEmpty()) return
+ Preference(
+ object : PreferenceModel {
+ override val title = stringResource(R.string.print_menu_item_add_service)
+ override val icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.Add) }
+ override val onClick = {
+ context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(searchUri)))
+ }
+ }
+ )
}
}
diff --git a/src/com/android/settings/privacy/PrivacyHubPreferenceController.java b/src/com/android/settings/privacy/PrivacyHubPreferenceController.java
index 20e5290..4c59f80 100644
--- a/src/com/android/settings/privacy/PrivacyHubPreferenceController.java
+++ b/src/com/android/settings/privacy/PrivacyHubPreferenceController.java
@@ -18,7 +18,6 @@
import android.content.Context;
import android.content.Intent;
-import android.provider.DeviceConfig;
import androidx.annotation.NonNull;
import androidx.preference.Preference;
@@ -30,7 +29,6 @@
* The preference controller for privacy hub top level preference.
*/
public final class PrivacyHubPreferenceController extends BasePreferenceController {
- public static final String PROPERTY_PRIVACY_HUB_ENABLED = "privacy_hub_enabled";
public PrivacyHubPreferenceController(@NonNull Context context, @NonNull String key) {
super(context, key);
@@ -38,8 +36,7 @@
@Override
public int getAvailabilityStatus() {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_PRIVACY_HUB_ENABLED, true) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return AVAILABLE;
}
@Override
diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java
deleted file mode 100644
index 3a62ddf..0000000
--- a/src/com/android/settings/search/SearchFeatureProviderImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2017 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.search;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.provider.Settings;
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-
-import com.android.settingslib.search.SearchIndexableResources;
-import com.android.settingslib.search.SearchIndexableResourcesMobile;
-
-/**
- * FeatureProvider for the refactored search code.
- */
-public class SearchFeatureProviderImpl implements SearchFeatureProvider {
-
- private SearchIndexableResources mSearchIndexableResources;
-
- @Override
- public void verifyLaunchSearchResultPageCaller(@NonNull Context context,
- @NonNull String callerPackage) {
- if (TextUtils.isEmpty(callerPackage)) {
- throw new IllegalArgumentException("ExternalSettingsTrampoline intents "
- + "must be called with startActivityForResult");
- }
- final boolean isSettingsPackage = TextUtils.equals(callerPackage, context.getPackageName())
- || TextUtils.equals(getSettingsIntelligencePkgName(context), callerPackage);
- final boolean isAllowlistedPackage = isSignatureAllowlisted(context, callerPackage);
- if (isSettingsPackage || isAllowlistedPackage) {
- return;
- }
- throw new SecurityException("Search result intents must be called with from an "
- + "allowlisted package.");
- }
-
- @Override
- public SearchIndexableResources getSearchIndexableResources() {
- if (mSearchIndexableResources == null) {
- mSearchIndexableResources = new SearchIndexableResourcesMobile();
- }
- return mSearchIndexableResources;
- }
-
- @Override
- public Intent buildSearchIntent(Context context, int pageId) {
- return new Intent(Settings.ACTION_APP_SEARCH_SETTINGS)
- .setPackage(getSettingsIntelligencePkgName(context))
- .putExtra(Intent.EXTRA_REFERRER, buildReferrer(context, pageId));
- }
-
- protected boolean isSignatureAllowlisted(Context context, String callerPackage) {
- return false;
- }
-
- private static Uri buildReferrer(Context context, int pageId) {
- return new Uri.Builder()
- .scheme("android-app")
- .authority(context.getPackageName())
- .path(String.valueOf(pageId))
- .build();
- }
-}
diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.kt b/src/com/android/settings/search/SearchFeatureProviderImpl.kt
new file mode 100644
index 0000000..2ea9910
--- /dev/null
+++ b/src/com/android/settings/search/SearchFeatureProviderImpl.kt
@@ -0,0 +1,64 @@
+/*
+ * 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.search
+
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.provider.Settings
+import com.android.settings.search.SearchIndexableResourcesFactory.createSearchIndexableResources
+import com.android.settingslib.search.SearchIndexableResources
+
+/** FeatureProvider for the refactored search code. */
+open class SearchFeatureProviderImpl : SearchFeatureProvider {
+ private val lazySearchIndexableResources by lazy { createSearchIndexableResources() }
+
+ override fun verifyLaunchSearchResultPageCaller(context: Context, callerPackage: String) {
+ require(callerPackage.isNotEmpty()) {
+ "ExternalSettingsTrampoline intents must be called with startActivityForResult"
+ }
+ val isSettingsPackage = callerPackage == context.packageName
+ if (isSettingsPackage ||
+ callerPackage == getSettingsIntelligencePkgName(context) ||
+ isSignatureAllowlisted(context, callerPackage)) {
+ return
+ }
+ throw SecurityException(
+ "Search result intents must be called with from an allowlisted package.")
+ }
+
+ override fun getSearchIndexableResources(): SearchIndexableResources =
+ lazySearchIndexableResources
+
+ override fun buildSearchIntent(context: Context, pageId: Int): Intent =
+ Intent(Settings.ACTION_APP_SEARCH_SETTINGS)
+ .setPackage(getSettingsIntelligencePkgName(context))
+ .putExtra(Intent.EXTRA_REFERRER, buildReferrer(context, pageId))
+
+ protected open fun isSignatureAllowlisted(context: Context, callerPackage: String): Boolean =
+ false
+
+ companion object {
+ private fun buildReferrer(context: Context, pageId: Int): Uri =
+ Uri.Builder()
+ .scheme("android-app")
+ .authority(context.packageName)
+ .path(pageId.toString())
+ .build()
+ }
+}
diff --git a/src/com/android/settings/search/SearchIndexableResourcesFactory.java b/src/com/android/settings/search/SearchIndexableResourcesFactory.java
new file mode 100644
index 0000000..25f34ed
--- /dev/null
+++ b/src/com/android/settings/search/SearchIndexableResourcesFactory.java
@@ -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.search;
+
+import androidx.annotation.NonNull;
+
+import com.android.settingslib.search.SearchIndexableResources;
+import com.android.settingslib.search.SearchIndexableResourcesMobile;
+
+/**
+ * Creates the {@link SearchIndexableResourcesMobile}.
+ * <p>
+ * Since this class is generated by annotation processor, so it can only be created in Java now.
+ */
+class SearchIndexableResourcesFactory {
+ @NonNull
+ static SearchIndexableResources createSearchIndexableResources() {
+ return new SearchIndexableResourcesMobile();
+ }
+}
diff --git a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java
index 8f934d7..9394af1 100644
--- a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java
+++ b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java
@@ -28,6 +28,7 @@
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo;
+import android.telephony.UiccPortInfo;
import android.telephony.UiccSlotInfo;
import android.util.Log;
@@ -91,10 +92,10 @@
Log.e(TAG, "Unable to find the removable slot. Do nothing.");
return;
}
-
+ Log.i(TAG, "The removableSlotInfo: " + removableSlotInfo);
int lastRemovableSlotState = getLastRemovableSimSlotState(mContext);
int currentRemovableSlotState = removableSlotInfo.getCardStateInfo();
- Log.i(TAG,
+ Log.d(TAG,
"lastRemovableSlotState: " + lastRemovableSlotState + ",currentRemovableSlotState: "
+ currentRemovableSlotState);
boolean isRemovableSimInserted =
@@ -115,8 +116,12 @@
if (Flags.isDualSimOnboardingEnabled()) {
// ForNewUi, when the user inserts the psim, showing the sim onboarding for the user
- // to setup the sim switching or the default data subscription.
- handleRemovableSimInsertWhenDsds();
+ // to setup the sim switching or the default data subscription in DSDS.
+ // Will show dialog for below case.
+ // 1. the psim slot is not active.
+ // 2. there are one or more active sim.
+ handleRemovableSimInsertWhenDsds(removableSlotInfo);
+ return;
} else if (!isMultipleEnabledProfilesSupported()) {
Log.d(TAG, "The device is already in DSDS mode and no MEP. Do nothing.");
return;
@@ -124,8 +129,6 @@
handleRemovableSimInsertUnderDsdsMep(removableSlotInfo);
return;
}
- Log.d(TAG, "the device is already in DSDS mode and have the DDS. Do nothing.");
- return;
}
if (isRemovableSimInserted) {
@@ -258,15 +261,29 @@
startChooseSimActivity(false);
}
- private void handleRemovableSimInsertWhenDsds() {
+ private boolean hasOtherActiveSubInfo(int psimSubId) {
+ List<SubscriptionInfo> activeSubs = SubscriptionUtil.getActiveSubscriptions(mSubMgr);
+ return activeSubs.stream()
+ .anyMatch(subscriptionInfo -> subscriptionInfo.getSubscriptionId() != psimSubId);
+ }
+
+ private boolean hasAnyPortActiveInSlot(UiccSlotInfo removableSlotInfo) {
+ return removableSlotInfo.getPorts().stream().anyMatch(UiccPortInfo::isActive);
+ }
+
+ private void handleRemovableSimInsertWhenDsds(UiccSlotInfo removableSlotInfo) {
+ Log.i(TAG, "ForNewUi: Handle Removable SIM inserted");
List<SubscriptionInfo> subscriptionInfos = getAvailableRemovableSubscription();
if (subscriptionInfos.isEmpty()) {
Log.e(TAG, "Unable to find the removable subscriptionInfo. Do nothing.");
return;
}
- Log.d(TAG, "ForNewUi and getAvailableRemovableSubscription:"
- + subscriptionInfos);
- startSimConfirmDialogActivity(subscriptionInfos.get(0).getSubscriptionId());
+ Log.d(TAG, "getAvailableRemovableSubscription:" + subscriptionInfos);
+ int psimSubId = subscriptionInfos.get(0).getSubscriptionId();
+ if (!hasAnyPortActiveInSlot(removableSlotInfo) || hasOtherActiveSubInfo(psimSubId)) {
+ Log.d(TAG, "ForNewUi Start Setup flow");
+ startSimConfirmDialogActivity(psimSubId);
+ }
}
private void handleRemovableSimInsertUnderDsdsMep(UiccSlotInfo removableSlotInfo) {
diff --git a/src/com/android/settings/spa/SpaBridgeActivity.kt b/src/com/android/settings/spa/SpaBridgeActivity.kt
index 61d8f51..d579fdf 100644
--- a/src/com/android/settings/spa/SpaBridgeActivity.kt
+++ b/src/com/android/settings/spa/SpaBridgeActivity.kt
@@ -17,20 +17,18 @@
package com.android.settings.spa
import android.app.Activity
-import android.content.Intent
+import android.content.pm.PackageManager.ComponentInfoFlags
+import android.content.pm.PackageManager.GET_META_DATA
import android.os.Bundle
-import com.android.settings.activityembedding.ActivityEmbeddingUtils
-import com.android.settings.activityembedding.EmbeddedDeepLinkUtils.tryStartMultiPaneDeepLink
-import com.android.settings.spa.SpaDestination.Companion.getDestination
-import com.android.settingslib.spa.framework.util.SESSION_EXTERNAL
-import com.android.settingslib.spa.framework.util.appendSpaParams
+import androidx.annotation.VisibleForTesting
+import com.android.settings.SettingsActivity.META_DATA_KEY_HIGHLIGHT_MENU_KEY
/**
* Activity used as a bridge to [SpaActivity].
*
* Since [SpaActivity] is not exported, [SpaActivity] could not be the target activity of
- * <activity-alias>, otherwise all its pages will be exported.
- * So need this bridge activity to sit in the middle of <activity-alias> and [SpaActivity].
+ * <activity-alias>, otherwise all its pages will be exported. So need this bridge activity to sit
+ * in the middle of <activity-alias> and [SpaActivity].
*/
class SpaBridgeActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -41,17 +39,28 @@
companion object {
fun Activity.startSpaActivityFromBridge(destinationFactory: (String) -> String? = { it }) {
- val (destination, highlightMenuKey) = getDestination(destinationFactory) ?: return
- val intent = Intent(this, SpaActivity::class.java)
- .appendSpaParams(
- destination = destination,
- sessionName = SESSION_EXTERNAL,
- )
- if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this) ||
- !tryStartMultiPaneDeepLink(intent, highlightMenuKey)
- ) {
- startActivity(intent)
- }
+ getDestination(destinationFactory)?.startFromExportedActivity(this)
}
+
+ @VisibleForTesting
+ fun Activity.getDestination(
+ destinationFactory: (String) -> String? = { it },
+ ): SpaDestination? {
+ val metaData =
+ packageManager
+ .getActivityInfo(componentName, ComponentInfoFlags.of(GET_META_DATA.toLong()))
+ .metaData
+ val destination = metaData.getString(META_DATA_KEY_DESTINATION)
+ if (destination.isNullOrBlank()) return null
+ val finalDestination = destinationFactory(destination)
+ if (finalDestination.isNullOrBlank()) return null
+ return SpaDestination(
+ destination = finalDestination,
+ highlightMenuKey = metaData.getString(META_DATA_KEY_HIGHLIGHT_MENU_KEY),
+ )
+ }
+
+ @VisibleForTesting
+ const val META_DATA_KEY_DESTINATION = "com.android.settings.spa.DESTINATION"
}
}
diff --git a/src/com/android/settings/spa/SpaDestination.kt b/src/com/android/settings/spa/SpaDestination.kt
index bdec1d8..cb20c37 100644
--- a/src/com/android/settings/spa/SpaDestination.kt
+++ b/src/com/android/settings/spa/SpaDestination.kt
@@ -17,33 +17,26 @@
package com.android.settings.spa
import android.app.Activity
-import android.content.pm.PackageManager
-import androidx.annotation.VisibleForTesting
-import com.android.settings.SettingsActivity.META_DATA_KEY_HIGHLIGHT_MENU_KEY
+import android.content.Intent
+import com.android.settings.activityembedding.ActivityEmbeddingUtils
+import com.android.settings.activityembedding.EmbeddedDeepLinkUtils.tryStartMultiPaneDeepLink
+import com.android.settingslib.spa.framework.util.SESSION_EXTERNAL
+import com.android.settingslib.spa.framework.util.appendSpaParams
data class SpaDestination(
val destination: String,
val highlightMenuKey: String?,
) {
- companion object {
- fun Activity.getDestination(
- destinationFactory: (String) -> String? = { it },
- ): SpaDestination? {
- val metaData = packageManager.getActivityInfo(
- componentName,
- PackageManager.ComponentInfoFlags.of(PackageManager.GET_META_DATA.toLong())
- ).metaData
- val destination = metaData.getString(META_DATA_KEY_DESTINATION)
- if (destination.isNullOrBlank()) return null
- val finalDestination = destinationFactory(destination)
- if (finalDestination.isNullOrBlank()) return null
- return SpaDestination(
- destination = finalDestination,
- highlightMenuKey = metaData.getString(META_DATA_KEY_HIGHLIGHT_MENU_KEY),
+ fun startFromExportedActivity(activity: Activity) {
+ val intent = Intent(activity, SpaActivity::class.java)
+ .appendSpaParams(
+ destination = destination,
+ sessionName = SESSION_EXTERNAL,
)
+ if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(activity) ||
+ !activity.tryStartMultiPaneDeepLink(intent, highlightMenuKey)
+ ) {
+ activity.startActivity(intent)
}
-
- @VisibleForTesting
- const val META_DATA_KEY_DESTINATION = "com.android.settings.spa.DESTINATION"
}
}
diff --git a/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt b/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt
index 904f0af..55e842f 100644
--- a/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt
+++ b/src/com/android/settings/spa/app/specialaccess/DisplayOverOtherApps.kt
@@ -44,6 +44,16 @@
logPermissionChange(newAllowed)
}
+ // TODO (b/349195999)
+ override fun isChangeable(record: AppOpPermissionRecord): Boolean {
+ if (record.app.packageName in
+ context.resources.getStringArray(R.array.display_over_apps_permission_change_exempt)
+ && record.app.isSystemApp()) {
+ return false
+ }
+ return super.isChangeable(record)
+ }
+
private fun logPermissionChange(newAllowed: Boolean) {
val category = when {
newAllowed -> SettingsEnums.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW
diff --git a/src/com/android/settings/spa/network/AutomaticDataSwitchingPreference.kt b/src/com/android/settings/spa/network/AutomaticDataSwitchingPreference.kt
index e79be4a..e7cc18f 100644
--- a/src/com/android/settings/spa/network/AutomaticDataSwitchingPreference.kt
+++ b/src/com/android/settings/spa/network/AutomaticDataSwitchingPreference.kt
@@ -16,13 +16,11 @@
package com.android.settings.spa.network
-import android.telephony.TelephonyManager
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.viewmodel.compose.viewModel
import com.android.settings.R
-import com.android.settings.network.telephony.TelephonyRepository
import com.android.settings.network.telephony.wificalling.CrossSimCallingViewModel
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
@@ -51,11 +49,3 @@
}
)
}
-
-fun TelephonyRepository.setAutomaticData(subId: Int, newEnabled: Boolean) {
- setMobileDataPolicyEnabled(
- subId = subId,
- policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
- enabled = newEnabled,
- )
-}
diff --git a/src/com/android/settings/spa/network/MobileDataSwitchingPreference.kt b/src/com/android/settings/spa/network/MobileDataSwitchingPreference.kt
index 0d40bca..4b95d44 100644
--- a/src/com/android/settings/spa/network/MobileDataSwitchingPreference.kt
+++ b/src/com/android/settings/spa/network/MobileDataSwitchingPreference.kt
@@ -16,12 +16,10 @@
package com.android.settings.spa.network
-import android.telephony.TelephonyManager
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.res.stringResource
import com.android.settings.R
-import com.android.settings.network.telephony.TelephonyRepository
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import kotlinx.coroutines.Dispatchers
diff --git a/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt b/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt
index 4b9fcf4..873a2c3 100644
--- a/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt
+++ b/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt
@@ -48,13 +48,14 @@
import com.android.settings.R
import com.android.settings.network.SubscriptionInfoListViewModel
import com.android.settings.network.telephony.DataSubscriptionRepository
-import com.android.settings.network.telephony.TelephonyRepository
+import com.android.settings.network.telephony.MobileDataRepository
import com.android.settings.spa.network.PrimarySimRepository.PrimarySimInfo
import com.android.settings.wifi.WifiPickerTrackerHelper
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
+import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
@@ -202,21 +203,18 @@
) {
val context = LocalContext.current
val localLifecycleOwner = LocalLifecycleOwner.current
- val wifiPickerTrackerHelper = getWifiPickerTrackerHelper(context, localLifecycleOwner)
-
- val subscriptionManager: SubscriptionManager? =
- context.getSystemService(SubscriptionManager::class.java)
+ val mobileDataRepository = rememberContext(::MobileDataRepository)
Category(title = stringResource(id = R.string.mobile_data_settings_title)) {
val isAutoDataEnabled by remember(nonDds.intValue) {
- TelephonyRepository(context).isMobileDataPolicyEnabledFlow(
+ mobileDataRepository.isMobileDataPolicyEnabledFlow(
subId = nonDds.intValue,
policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH
)
}.collectAsStateWithLifecycle(initialValue = null)
val mobileDataStateChanged by remember(mobileDataSelectedId.intValue) {
- TelephonyRepository(context).isDataEnabledFlow(mobileDataSelectedId.intValue)
+ mobileDataRepository.isMobileDataEnabledFlow(mobileDataSelectedId.intValue)
}.collectAsStateWithLifecycle(initialValue = false)
val coroutineScope = rememberCoroutineScope()
@@ -226,8 +224,8 @@
coroutineScope.launch {
setMobileData(
context,
- subscriptionManager,
- wifiPickerTrackerHelper,
+ context.getSystemService(SubscriptionManager::class.java),
+ getWifiPickerTrackerHelper(context, localLifecycleOwner),
mobileDataSelectedId.intValue,
newEnabled
)
@@ -238,7 +236,7 @@
AutomaticDataSwitchingPreference(
isAutoDataEnabled = { isAutoDataEnabled },
setAutoDataEnabled = { newEnabled ->
- TelephonyRepository(context).setAutomaticData(nonDds.intValue, newEnabled)
+ mobileDataRepository.setAutoDataSwitch(nonDds.intValue, newEnabled)
},
)
}
@@ -281,14 +279,14 @@
) {
CreatePrimarySimListPreference(
stringResource(id = R.string.primary_sim_calls_title),
- primarySimInfo.callsAndSmsList,
+ primarySimInfo.callsList,
callsSelectedId,
ImageVector.vectorResource(R.drawable.ic_phone),
actionSetCalls
)
CreatePrimarySimListPreference(
stringResource(id = R.string.primary_sim_texts_title),
- primarySimInfo.callsAndSmsList,
+ primarySimInfo.smsList,
textsSelectedId,
Icons.AutoMirrored.Outlined.Message,
actionSetTexts
@@ -426,6 +424,6 @@
Log.d(NetworkCellularGroupProvider.fileName, "setDefaultData: [$targetSubId]")
subscriptionManager?.setDefaultDataSubId(targetSubId)
}
- TelephonyRepository(context)
- .setMobileData(targetSubId, enabled, wifiPickerTrackerHelper)
+ MobileDataRepository(context)
+ .setMobileDataEnabled(targetSubId, enabled, wifiPickerTrackerHelper)
}
\ No newline at end of file
diff --git a/src/com/android/settings/spa/network/PrimarySimRepository.kt b/src/com/android/settings/spa/network/PrimarySimRepository.kt
index e34a29e..420f870 100644
--- a/src/com/android/settings/spa/network/PrimarySimRepository.kt
+++ b/src/com/android/settings/spa/network/PrimarySimRepository.kt
@@ -22,12 +22,14 @@
import android.util.Log
import com.android.settings.R
import com.android.settings.network.SubscriptionUtil
+import com.android.settings.network.telephony.CarrierConfigRepository
import com.android.settingslib.spa.widget.preference.ListPreferenceOption
class PrimarySimRepository(private val context: Context) {
data class PrimarySimInfo(
- val callsAndSmsList: List<ListPreferenceOption>,
+ val callsList: List<ListPreferenceOption>,
+ val smsList: List<ListPreferenceOption>,
val dataList: List<ListPreferenceOption>,
)
@@ -37,7 +39,8 @@
return null
}
- val callsAndSmsList = mutableListOf<ListPreferenceOption>()
+ val callsList = mutableListOf<ListPreferenceOption>()
+ val smsList = mutableListOf<ListPreferenceOption>()
val dataList = mutableListOf<ListPreferenceOption>()
for (info in selectableSubscriptionInfoList) {
val item = ListPreferenceOption(
@@ -45,15 +48,22 @@
text = "${info.displayName}",
summary = SubscriptionUtil.getBidiFormattedPhoneNumber(context, info) ?: "",
)
- callsAndSmsList += item
+ callsList += item
+ smsList += item
dataList += item
}
- callsAndSmsList += ListPreferenceOption(
+
+ val askEveryTime = ListPreferenceOption(
id = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
text = context.getString(R.string.sim_calls_ask_first_prefs_title),
)
+ callsList += askEveryTime
+ if (context.resources
+ .getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support)) {
+ smsList += askEveryTime
+ }
- return PrimarySimInfo(callsAndSmsList, dataList)
+ return PrimarySimInfo(callsList, smsList, dataList)
}
private companion object {
diff --git a/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt b/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt
index 6466731..f78808f 100644
--- a/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt
+++ b/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt
@@ -81,24 +81,28 @@
onboardingService: SimOnboardingService,
subInfo: SubscriptionInfo,
) {
- val originalSimCarrierName = subInfo.displayName.toString()
- var titleSimName by remember {
- mutableStateOf(onboardingService.getSubscriptionInfoDisplayName(subInfo))
+ val currentSimName = onboardingService.getSubscriptionInfoDisplayName(subInfo)
+ var prefTitle by remember {
+ mutableStateOf(currentSimName)
+ }
+ var dialogInputContent by remember {
+ mutableStateOf(currentSimName)
}
val phoneNumber = phoneNumber(subInfo)
val alertDialogPresenter = rememberAlertDialogPresenter(
confirmButton = AlertDialogButton(
stringResource(R.string.mobile_network_sim_name_rename),
- titleSimName.isNotBlank()
+ dialogInputContent.isNotBlank()
) {
onboardingService.addItemForRenaming(
- subInfo, if (titleSimName.isEmpty()) originalSimCarrierName else titleSimName
+ subInfo, dialogInputContent
)
+ prefTitle = dialogInputContent
},
dismissButton = AlertDialogButton(
stringResource(R.string.cancel),
) {
- titleSimName = onboardingService.getSubscriptionInfoDisplayName(subInfo)
+ // Do nothing
},
title = stringResource(R.string.sim_onboarding_label_sim_dialog_title),
text = {
@@ -107,17 +111,19 @@
modifier = Modifier.padding(bottom = SettingsDimension.itemPaddingVertical)
)
SettingsOutlinedTextField(
- value = titleSimName,
+ value = dialogInputContent,
label = stringResource(R.string.sim_onboarding_label_sim_dialog_label),
- placeholder = {Text(text = originalSimCarrierName)},
- modifier = Modifier.fillMaxWidth().testTag("contentInput")
+ placeholder = {Text(text = subInfo.displayName.toString())},
+ modifier = Modifier
+ .fillMaxWidth()
+ .testTag("contentInput")
) {
- titleSimName = it
+ dialogInputContent = it
}
},
)
Preference(object : PreferenceModel {
- override val title = titleSimName
+ override val title = prefTitle
override val summary = { phoneNumber.value ?: "" }
override val onClick = alertDialogPresenter::open
})
diff --git a/src/com/android/settings/system/DeviceDiagnosticsPreferenceController.kt b/src/com/android/settings/system/DeviceDiagnosticsPreferenceController.kt
index 695bb5b..d683804 100644
--- a/src/com/android/settings/system/DeviceDiagnosticsPreferenceController.kt
+++ b/src/com/android/settings/system/DeviceDiagnosticsPreferenceController.kt
@@ -26,7 +26,7 @@
import com.android.settings.core.BasePreferenceController
import com.android.settings.flags.Flags
-class DeviceDiagnosticsPreferenceController(context: Context, preferenceKey: String) :
+open class DeviceDiagnosticsPreferenceController(context: Context, preferenceKey: String) :
BasePreferenceController(context, preferenceKey) {
override fun getAvailabilityStatus(): Int {
@@ -59,6 +59,12 @@
val packageName = mContext.getResources().getString(
R.string.config_device_diagnostics_package_name)
intent.setPackage(packageName)
+
+ val info = mContext.getPackageManager().resolveActivity(intent, 0)
+ if (info == null) {
+ return null
+ }
+
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
return intent
}
diff --git a/src/com/android/settings/system/FactoryResetPreferenceController.java b/src/com/android/settings/system/FactoryResetPreferenceController.java
index df7cc3d..54c97a3 100644
--- a/src/com/android/settings/system/FactoryResetPreferenceController.java
+++ b/src/com/android/settings/system/FactoryResetPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.settings.system;
import android.Manifest;
+import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -37,8 +38,8 @@
private static final String TAG = "FactoryResetPreference";
- @VisibleForTesting
- static final String ACTION_PREPARE_FACTORY_RESET =
+ @RequiresPermission(Manifest.permission.PREPARE_FACTORY_RESET)
+ public static final String ACTION_PREPARE_FACTORY_RESET =
"com.android.settings.ACTION_PREPARE_FACTORY_RESET";
private final UserManager mUm;
diff --git a/src/com/android/settings/system/reset/ResetNetworkConfirm.kt b/src/com/android/settings/system/reset/ResetNetworkConfirm.kt
new file mode 100644
index 0000000..34b9909
--- /dev/null
+++ b/src/com/android/settings/system/reset/ResetNetworkConfirm.kt
@@ -0,0 +1,217 @@
+/*
+ * 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.system.reset
+
+import android.app.ProgressDialog
+import android.app.settings.SettingsEnums
+import android.os.Bundle
+import android.os.Looper
+import android.telephony.SubscriptionManager
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import android.widget.Toast
+import androidx.annotation.VisibleForTesting
+import androidx.appcompat.app.AlertDialog
+import androidx.lifecycle.lifecycleScope
+import com.android.settings.R
+import com.android.settings.ResetNetworkRequest
+import com.android.settings.Utils
+import com.android.settings.core.InstrumentedFragment
+import com.android.settings.network.ResetNetworkRestrictionViewBuilder
+import com.android.settings.network.telephony.SubscriptionRepository
+import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.emptyFlow
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.mapNotNull
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
+/**
+ * Confirm and execute a reset of the network settings to a clean "just out of the box" state.
+ * Multiple confirmations are required: first, a general "are you sure you want to do this?" prompt,
+ * followed by a keyguard pattern trace if the user has defined one, followed by a final
+ * strongly-worded "THIS WILL RESET EVERYTHING" prompt. If at any time the phone is allowed to go to
+ * sleep, is locked, et cetera, then the confirmation sequence is abandoned.
+ *
+ * This is the confirmation screen.
+ */
+class ResetNetworkConfirm : InstrumentedFragment() {
+ @VisibleForTesting lateinit var resetNetworkRequest: ResetNetworkRequest
+ private var progressDialog: ProgressDialog? = null
+ private var alertDialog: AlertDialog? = null
+ private var resetStarted = false
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ Log.d(TAG, "onCreate: $arguments")
+ resetNetworkRequest = ResetNetworkRequest(arguments)
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ val view = ResetNetworkRestrictionViewBuilder(requireActivity()).build()
+ if (view != null) {
+ Log.w(TAG, "Access deny.")
+ return view
+ }
+ return inflater.inflate(R.layout.reset_network_confirm, null).apply {
+ establishFinalConfirmationState()
+ setSubtitle()
+ }
+ }
+
+ /** Configure the UI for the final confirmation interaction */
+ private fun View.establishFinalConfirmationState() {
+ requireViewById<View>(R.id.execute_reset_network).setOnClickListener {
+ if (!Utils.isMonkeyRunning() && !resetStarted) {
+ resetStarted = true
+ viewLifecycleOwner.lifecycleScope.launch { onResetClicked() }
+ }
+ }
+ }
+
+ private fun View.setSubtitle() {
+ if (resetNetworkRequest.resetEsimPackageName != null) {
+ requireViewById<TextView>(R.id.reset_network_confirm)
+ .setText(R.string.reset_network_final_desc_esim)
+ }
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ invalidSubIdFlow().collectLatestWithLifecycle(viewLifecycleOwner) { invalidSubId ->
+ // Reset process could triage this callback, so if reset has started, ignore the event.
+ if (!resetStarted) {
+ Log.w(TAG, "subId $invalidSubId no longer active.")
+ requireActivity().finish()
+ }
+ }
+ }
+
+ /**
+ * Monitor the sub ids in the request, if any sub id becomes inactive, the request is abandoned.
+ */
+ private fun invalidSubIdFlow(): Flow<Int> {
+ val subIdsInRequest =
+ listOf(
+ resetNetworkRequest.resetTelephonyAndNetworkPolicyManager,
+ resetNetworkRequest.resetApnSubId,
+ resetNetworkRequest.resetImsSubId,
+ )
+ .distinct()
+ .filter(SubscriptionManager::isUsableSubscriptionId)
+
+ if (subIdsInRequest.isEmpty()) return emptyFlow()
+
+ return SubscriptionRepository(requireContext())
+ .activeSubscriptionIdListFlow()
+ .mapNotNull { activeSubIds -> subIdsInRequest.firstOrNull { it !in activeSubIds } }
+ .conflate()
+ .flowOn(Dispatchers.Default)
+ }
+
+ /**
+ * The user has gone through the multiple confirmation, so now we go ahead and reset the network
+ * settings to its factory-default state.
+ */
+ @VisibleForTesting
+ suspend fun onResetClicked() {
+ showProgressDialog()
+ resetNetwork()
+ }
+
+ private fun showProgressDialog() {
+ progressDialog =
+ ProgressDialog(requireContext()).apply {
+ isIndeterminate = true
+ setCancelable(false)
+ setMessage(requireContext().getString(R.string.main_clear_progress_text))
+ show()
+ }
+ }
+
+ private fun dismissProgressDialog() {
+ progressDialog?.let { progressDialog ->
+ if (progressDialog.isShowing) {
+ progressDialog.dismiss()
+ }
+ }
+ }
+
+ /**
+ * Do all reset task.
+ *
+ * If error happens during erasing eSIM profiles or timeout, an error msg is shown.
+ */
+ private suspend fun resetNetwork() {
+ var resetEsimSuccess = true
+
+ withContext(Dispatchers.Default) {
+ val builder =
+ resetNetworkRequest.toResetNetworkOperationBuilder(
+ requireContext(), Looper.getMainLooper())
+ resetNetworkRequest.resetEsimPackageName?.let { resetEsimPackageName ->
+ builder.resetEsim(resetEsimPackageName)
+ builder.resetEsimResultCallback { resetEsimSuccess = it }
+ }
+ builder.build().run()
+ }
+
+ Log.d(TAG, "network factoryReset complete. succeeded: $resetEsimSuccess")
+ onResetFinished(resetEsimSuccess)
+ }
+
+ private fun onResetFinished(resetEsimSuccess: Boolean) {
+ dismissProgressDialog()
+ val activity = requireActivity()
+
+ if (!resetEsimSuccess) {
+ alertDialog =
+ AlertDialog.Builder(activity)
+ .setTitle(R.string.reset_esim_error_title)
+ .setMessage(R.string.reset_esim_error_msg)
+ .setPositiveButton(android.R.string.ok, /* listener= */ null)
+ .show()
+ } else {
+ Toast.makeText(activity, R.string.reset_network_complete_toast, Toast.LENGTH_SHORT)
+ .show()
+ }
+ activity.finish()
+ }
+
+ override fun onDestroy() {
+ progressDialog?.dismiss()
+ alertDialog?.dismiss()
+ super.onDestroy()
+ }
+
+ override fun getMetricsCategory() = SettingsEnums.RESET_NETWORK_CONFIRM
+
+ private companion object {
+ const val TAG = "ResetNetworkConfirm"
+ }
+}
diff --git a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
index ce5533e..fe90a2a 100644
--- a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
+++ b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
@@ -42,9 +42,18 @@
if (!isAvailable()) {
restrictedSwitchPreference.setVisible(false);
} else {
- restrictedSwitchPreference.setDisabledByAdmin(
- mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
- restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ restrictedSwitchPreference.setVisible(true);
+ if (mUserCaps.mDisallowAddUserSetByAdmin) {
+ restrictedSwitchPreference.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
+ } else if (mUserCaps.mDisallowAddUser) {
+ restrictedSwitchPreference.setVisible(false);
+ }
+ } else {
+ restrictedSwitchPreference.setDisabledByAdmin(
+ mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
+ restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+ }
}
}
@@ -52,6 +61,8 @@
public int getAvailabilityStatus() {
if (!mUserCaps.isAdmin()) {
return DISABLED_FOR_USER;
+ } else if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ return AVAILABLE;
} else if (mUserCaps.disallowAddUser() || mUserCaps.disallowAddUserSetByAdmin()) {
return DISABLED_FOR_USER;
} else {
diff --git a/src/com/android/settings/users/GuestTelephonyPreferenceController.java b/src/com/android/settings/users/GuestTelephonyPreferenceController.java
index 4fbd449..e730cbf 100644
--- a/src/com/android/settings/users/GuestTelephonyPreferenceController.java
+++ b/src/com/android/settings/users/GuestTelephonyPreferenceController.java
@@ -19,12 +19,16 @@
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
+import android.os.UserHandle;
import android.os.UserManager;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedSwitchPreference;
/**
* Controls the preference on the user settings screen which determines whether the guest user
@@ -43,10 +47,21 @@
@Override
public int getAvailabilityStatus() {
- if (!mUserCaps.isAdmin() || !mUserCaps.mCanAddGuest) {
+ if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ || UserManager.isHeadlessSystemUserMode()) {
return DISABLED_FOR_USER;
+ }
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ if (!mUserCaps.isAdmin()) {
+ return DISABLED_FOR_USER;
+ }
+ return AVAILABLE;
} else {
- return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ if (!mUserCaps.isAdmin() || !mUserCaps.mCanAddGuest) {
+ return DISABLED_FOR_USER;
+ } else {
+ return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ }
}
}
@@ -74,8 +89,31 @@
public void updateState(Preference preference) {
super.updateState(preference);
mUserCaps.updateAddUserCapabilities(mContext);
- preference.setVisible(isAvailable() && mUserCaps.mUserSwitcherEnabled
- && mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
- && !UserManager.isHeadlessSystemUserMode());
+ final RestrictedSwitchPreference restrictedSwitchPreference =
+ (RestrictedSwitchPreference) preference;
+ restrictedSwitchPreference.setChecked(isChecked());
+ if (!isAvailable()) {
+ restrictedSwitchPreference.setVisible(false);
+ } else {
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ restrictedSwitchPreference.setVisible(true);
+ final RestrictedLockUtils.EnforcedAdmin disallowRemoveUserAdmin =
+ RestrictedLockUtilsInternal.checkIfRestrictionEnforced(mContext,
+ UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
+ if (disallowRemoveUserAdmin != null) {
+ restrictedSwitchPreference.setDisabledByAdmin(disallowRemoveUserAdmin);
+ } else if (mUserCaps.mDisallowAddUserSetByAdmin) {
+ restrictedSwitchPreference.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
+ } else if (mUserCaps.mDisallowAddUser) {
+ // Adding user is restricted by system
+ restrictedSwitchPreference.setVisible(false);
+ }
+ } else {
+ restrictedSwitchPreference.setDisabledByAdmin(
+ mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
+ restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled
+ && isAvailable());
+ }
+ }
}
}
diff --git a/src/com/android/settings/users/MultiUserSwitchBarController.java b/src/com/android/settings/users/MultiUserSwitchBarController.java
index f57b795..641ae51 100644
--- a/src/com/android/settings/users/MultiUserSwitchBarController.java
+++ b/src/com/android/settings/users/MultiUserSwitchBarController.java
@@ -57,11 +57,6 @@
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
UserHandle.myUserId()));
-
- } else if (mUserCapabilities.mDisallowAddUser) {
- mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
- .checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_ADD_USER,
- UserHandle.myUserId()));
} else {
mSwitchBar.setEnabled(mUserCapabilities.mIsMain);
}
diff --git a/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java b/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java
index 01df5fd..345b506 100644
--- a/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java
+++ b/src/com/android/settings/users/RemoveGuestOnExitPreferenceController.java
@@ -22,6 +22,7 @@
import android.content.pm.UserInfo;
import android.os.Bundle;
import android.os.Handler;
+import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.util.Log;
@@ -33,6 +34,8 @@
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedSwitchPreference;
/**
@@ -70,9 +73,24 @@
if (!isAvailable()) {
restrictedSwitchPreference.setVisible(false);
} else {
- restrictedSwitchPreference.setDisabledByAdmin(
- mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
- restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ restrictedSwitchPreference.setVisible(true);
+ final RestrictedLockUtils.EnforcedAdmin disallowRemoveUserAdmin =
+ RestrictedLockUtilsInternal.checkIfRestrictionEnforced(mContext,
+ UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
+ if (disallowRemoveUserAdmin != null) {
+ restrictedSwitchPreference.setDisabledByAdmin(disallowRemoveUserAdmin);
+ } else if (mUserCaps.mDisallowAddUserSetByAdmin) {
+ restrictedSwitchPreference.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
+ } else if (mUserCaps.mDisallowAddUser) {
+ // Adding user is restricted by system
+ restrictedSwitchPreference.setVisible(false);
+ }
+ } else {
+ restrictedSwitchPreference.setDisabledByAdmin(
+ mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
+ restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
+ }
}
}
@@ -82,14 +100,24 @@
// then disable this controller
// also disable this controller for non-admin users
// also disable when config_guestUserAllowEphemeralStateChange is false
- if (mUserManager.isGuestUserAlwaysEphemeral()
- || !UserManager.isGuestUserAllowEphemeralStateChange()
- || !mUserCaps.isAdmin()
- || mUserCaps.disallowAddUser()
- || mUserCaps.disallowAddUserSetByAdmin()) {
- return DISABLED_FOR_USER;
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ if (mUserManager.isGuestUserAlwaysEphemeral()
+ || !UserManager.isGuestUserAllowEphemeralStateChange()
+ || !mUserCaps.isAdmin()) {
+ return DISABLED_FOR_USER;
+ } else {
+ return AVAILABLE;
+ }
} else {
- return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ if (mUserManager.isGuestUserAlwaysEphemeral()
+ || !UserManager.isGuestUserAllowEphemeralStateChange()
+ || !mUserCaps.isAdmin()
+ || mUserCaps.disallowAddUser()
+ || mUserCaps.disallowAddUserSetByAdmin()) {
+ return DISABLED_FOR_USER;
+ } else {
+ return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ }
}
}
diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java
index b48c717..588f01a 100644
--- a/src/com/android/settings/users/UserDetailsSettings.java
+++ b/src/com/android/settings/users/UserDetailsSettings.java
@@ -126,7 +126,11 @@
@Override
public void onResume() {
super.onResume();
- mSwitchUserPref.setEnabled(canSwitchUserNow());
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ mSwitchUserPref.setEnabled(canSwitchUserNow() && mUserCaps.mUserSwitcherEnabled);
+ } else {
+ mSwitchUserPref.setEnabled(canSwitchUserNow());
+ }
if (mUserInfo.isGuest() && mGuestUserAutoCreated) {
mRemoveUserPref.setEnabled((mUserInfo.flags & UserInfo.FLAG_INITIALIZED) != 0);
}
@@ -358,18 +362,22 @@
mSwitchUserPref.setDisabledByAdmin(RestrictedLockUtilsInternal.getDeviceOwner(context));
} else {
mSwitchUserPref.setDisabledByAdmin(null);
- mSwitchUserPref.setSelectable(true);
+ if (android.multiuser.Flags.newMultiuserSettingsUx()) {
+ mSwitchUserPref.setEnabled(mUserCaps.mUserSwitcherEnabled);
+ mSwitchUserPref.setSelectable(mUserCaps.mUserSwitcherEnabled);
+ } else {
+ mSwitchUserPref.setSelectable(true);
+ }
mSwitchUserPref.setOnPreferenceClickListener(this);
}
if (mUserInfo.isMain() || mUserInfo.isGuest() || !UserManager.isMultipleAdminEnabled()
|| mUserManager.hasUserRestrictionForUser(UserManager.DISALLOW_GRANT_ADMIN,
- mUserInfo.getUserHandle())) {
+ mUserInfo.getUserHandle()) || !mUserManager.isAdminUser()) {
removePreference(KEY_GRANT_ADMIN);
}
if (!mUserManager.isAdminUser()) { // non admin users can't remove users and allow calls
removePreference(KEY_ENABLE_TELEPHONY);
removePreference(KEY_REMOVE_USER);
- removePreference(KEY_GRANT_ADMIN);
removePreference(KEY_APP_AND_CONTENT_ACCESS);
removePreference(KEY_APP_COPYING);
} else {
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index bf21c9b..0cf01e3 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -463,7 +463,8 @@
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
int pos = 0;
- if (!isCurrentUserAdmin() && canSwitchUserNow() && !isCurrentUserGuest()) {
+ if (!isCurrentUserAdmin() && (canSwitchUserNow() || Flags.newMultiuserSettingsUx())
+ && !isCurrentUserGuest()) {
String nickname = mUserManager.getUserName();
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
getResources().getString(R.string.user_remove_user_menu, nickname));
@@ -1198,15 +1199,23 @@
}
List<UserInfo> users;
- if (mUserCaps.mUserSwitcherEnabled) {
+ if (Flags.newMultiuserSettingsUx()) {
// Only users that can be switched to should show up here.
// e.g. Managed profiles appear under Accounts Settings instead
users = mUserManager.getAliveUsers().stream()
.filter(UserInfo::supportsSwitchToByUser)
.collect(Collectors.toList());
} else {
- // Only current user will be displayed in case of multi-user switch is disabled
- users = List.of(mUserManager.getUserInfo(context.getUserId()));
+ if (mUserCaps.mUserSwitcherEnabled) {
+ // Only users that can be switched to should show up here.
+ // e.g. Managed profiles appear under Accounts Settings instead
+ users = mUserManager.getAliveUsers().stream()
+ .filter(UserInfo::supportsSwitchToByUser)
+ .collect(Collectors.toList());
+ } else {
+ // Only current user will be displayed in case of multi-user switch is disabled
+ users = List.of(mUserManager.getUserInfo(context.getUserId()));
+ }
}
final ArrayList<Integer> missingIcons = new ArrayList<>();
@@ -1257,7 +1266,10 @@
pref.setSummary(R.string.user_summary_not_set_up);
// Disallow setting up user which results in user switching when the
// restriction is set.
- pref.setEnabled(!mUserCaps.mDisallowSwitchUser && canSwitchUserNow());
+ // If newMultiuserSettingsUx flag is enabled, allow opening user details page
+ // since switch to user will be disabled
+ pref.setEnabled((!mUserCaps.mDisallowSwitchUser && canSwitchUserNow())
+ || Flags.newMultiuserSettingsUx());
}
} else if (user.isRestricted()) {
pref.setSummary(R.string.user_summary_restricted_profile);
@@ -1417,16 +1429,22 @@
getContext().getResources(), icon)));
pref.setKey(KEY_USER_GUEST);
pref.setOrder(Preference.DEFAULT_ORDER);
- if (mUserCaps.mDisallowSwitchUser) {
+ if (mUserCaps.mDisallowSwitchUser && !Flags.newMultiuserSettingsUx()) {
pref.setDisabledByAdmin(
RestrictedLockUtilsInternal.getDeviceOwner(context));
} else {
pref.setDisabledByAdmin(null);
}
- if (mUserCaps.mUserSwitcherEnabled) {
+ if (Flags.newMultiuserSettingsUx()) {
mGuestUserCategory.addPreference(pref);
// guest user preference is shown hence also make guest category visible
mGuestUserCategory.setVisible(true);
+ } else {
+ if (mUserCaps.mUserSwitcherEnabled) {
+ mGuestUserCategory.addPreference(pref);
+ // guest user preference is shown hence also make guest category visible
+ mGuestUserCategory.setVisible(true);
+ }
}
isGuestAlreadyCreated = true;
}
@@ -1450,10 +1468,11 @@
private boolean updateAddGuestPreference(Context context, boolean isGuestAlreadyCreated) {
boolean isVisible = false;
- if (!isGuestAlreadyCreated && mUserCaps.mCanAddGuest
+ if (!isGuestAlreadyCreated && (mUserCaps.mCanAddGuest
+ || (Flags.newMultiuserSettingsUx() && mUserCaps.mDisallowAddUser))
&& mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_GUEST)
&& WizardManagerHelper.isDeviceProvisioned(context)
- && mUserCaps.mUserSwitcherEnabled) {
+ && (mUserCaps.mUserSwitcherEnabled || Flags.newMultiuserSettingsUx())) {
Drawable icon = context.getDrawable(
com.android.settingslib.R.drawable.ic_account_circle);
mAddGuest.setIcon(centerAndTint(icon));
@@ -1466,7 +1485,25 @@
mAddGuest.setEnabled(false);
} else {
mAddGuest.setTitle(com.android.settingslib.R.string.guest_new_guest);
- mAddGuest.setEnabled(canSwitchUserNow());
+ if (Flags.newMultiuserSettingsUx()
+ && mUserCaps.mDisallowAddUserSetByAdmin) {
+ mAddGuest.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
+ } else if (Flags.newMultiuserSettingsUx() && mUserCaps.mDisallowAddUser) {
+ final List<UserManager.EnforcingUser> enforcingUsers =
+ mUserManager.getUserRestrictionSources(UserManager.DISALLOW_ADD_USER,
+ UserHandle.of(UserHandle.myUserId()));
+ if (!enforcingUsers.isEmpty()) {
+ final UserManager.EnforcingUser enforcingUser = enforcingUsers.get(0);
+ final int restrictionSource = enforcingUser.getUserRestrictionSource();
+ if (restrictionSource == UserManager.RESTRICTION_SOURCE_SYSTEM) {
+ mAddGuest.setEnabled(false);
+ } else {
+ mAddGuest.setVisible(false);
+ }
+ }
+ } else {
+ mAddGuest.setEnabled(canSwitchUserNow() || Flags.newMultiuserSettingsUx());
+ }
}
} else {
mAddGuest.setVisible(false);
@@ -1494,16 +1531,18 @@
private void updateAddUserCommon(Context context, RestrictedPreference addUser,
boolean canAddRestrictedProfile) {
- if ((mUserCaps.mCanAddUser && !mUserCaps.mDisallowAddUserSetByAdmin)
+ if ((mUserCaps.mCanAddUser
+ && !(mUserCaps.mDisallowAddUserSetByAdmin && Flags.newMultiuserSettingsUx()))
&& WizardManagerHelper.isDeviceProvisioned(context)
- && mUserCaps.mUserSwitcherEnabled) {
+ && (mUserCaps.mUserSwitcherEnabled || Flags.newMultiuserSettingsUx())) {
addUser.setVisible(true);
addUser.setSelectable(true);
final boolean canAddMoreUsers =
mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_SECONDARY)
|| (canAddRestrictedProfile
&& mUserManager.canAddMoreUsers(UserManager.USER_TYPE_FULL_RESTRICTED));
- addUser.setEnabled(canAddMoreUsers && !mAddingUser && canSwitchUserNow());
+ addUser.setEnabled(canAddMoreUsers && !mAddingUser
+ && (canSwitchUserNow() || Flags.newMultiuserSettingsUx()));
if (!canAddMoreUsers) {
addUser.setSummary(getString(R.string.user_add_max_count));
@@ -1514,6 +1553,23 @@
addUser.setDisabledByAdmin(
mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
}
+ } else if (Flags.newMultiuserSettingsUx() && mUserCaps.mDisallowAddUserSetByAdmin) {
+ addUser.setVisible(true);
+ addUser.setDisabledByAdmin(mUserCaps.mEnforcedAdmin);
+ } else if (Flags.newMultiuserSettingsUx() && mUserCaps.mDisallowAddUser) {
+ final List<UserManager.EnforcingUser> enforcingUsers =
+ mUserManager.getUserRestrictionSources(UserManager.DISALLOW_ADD_USER,
+ UserHandle.of(UserHandle.myUserId()));
+ if (!enforcingUsers.isEmpty()) {
+ final UserManager.EnforcingUser enforcingUser = enforcingUsers.get(0);
+ final int restrictionSource = enforcingUser.getUserRestrictionSource();
+ if (restrictionSource == UserManager.RESTRICTION_SOURCE_SYSTEM) {
+ addUser.setVisible(true);
+ addUser.setEnabled(false);
+ } else {
+ addUser.setVisible(false);
+ }
+ }
} else {
addUser.setVisible(false);
}
diff --git a/src/com/android/settings/utils/ZenServiceListing.java b/src/com/android/settings/utils/ZenServiceListing.java
index 99f56f6..96d700b 100644
--- a/src/com/android/settings/utils/ZenServiceListing.java
+++ b/src/com/android/settings/utils/ZenServiceListing.java
@@ -28,11 +28,14 @@
import android.util.ArraySet;
import android.util.Slog;
+import androidx.annotation.Nullable;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class ZenServiceListing {
+ private static final String TAG = "ZenServiceListing";
private final Context mContext;
private final ManagedServiceSettings.Config mConfig;
@@ -40,9 +43,18 @@
private final List<Callback> mZenCallbacks = new ArrayList<>();
private final NotificationManager mNm;
+ // only used when android.app.modes_ui flag is true
+ @Nullable
+ private String mPkg = null;
+
public ZenServiceListing(Context context, ManagedServiceSettings.Config config) {
+ this(context, config, null);
+ }
+
+ public ZenServiceListing(Context context, ManagedServiceSettings.Config config, @Nullable String pkg) {
mContext = context;
mConfig = config;
+ mPkg = pkg;
mNm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
@@ -89,12 +101,16 @@
}
}
- private static void getServices(ManagedServiceSettings.Config c, List<ComponentInfo> list,
+ private void getServices(ManagedServiceSettings.Config c, List<ComponentInfo> list,
PackageManager pm) {
final int user = ActivityManager.getCurrentUser();
+ Intent queryIntent = new Intent(c.intentAction);
+ if (mPkg != null) {
+ queryIntent.setPackage(mPkg);
+ }
List<ResolveInfo> installedServices = pm.queryIntentServicesAsUser(
- new Intent(c.intentAction),
+ queryIntent,
PackageManager.GET_SERVICES | PackageManager.GET_META_DATA,
user);
@@ -115,12 +131,16 @@
}
}
- private static void getActivities(ManagedServiceSettings.Config c, List<ComponentInfo> list,
+ private void getActivities(ManagedServiceSettings.Config c, List<ComponentInfo> list,
PackageManager pm) {
final int user = ActivityManager.getCurrentUser();
+ Intent queryIntent = new Intent(c.configIntentAction);
+ if (mPkg != null) {
+ queryIntent.setPackage(mPkg);
+ }
List<ResolveInfo> resolveInfos = pm.queryIntentActivitiesAsUser(
- new Intent(c.configIntentAction),
+ queryIntent,
PackageManager.GET_ACTIVITIES | PackageManager.GET_META_DATA,
user);
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 82537d4..e5581d3 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -33,7 +33,6 @@
import android.telephony.TelephonyManager;
import android.telephony.ims.ImsManager;
import android.telephony.ims.ImsMmTelManager;
-import android.telephony.ims.ProvisioningManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -42,12 +41,14 @@
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
+import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceClickListener;
import androidx.preference.PreferenceScreen;
-import com.android.ims.ImsConfig;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.flags.Flags;
@@ -57,8 +58,12 @@
import com.android.settings.Utils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.network.ims.WifiCallingQueryImsState;
+import com.android.settings.network.telephony.wificalling.IWifiCallingRepository;
+import com.android.settings.network.telephony.wificalling.WifiCallingRepository;
import com.android.settings.widget.SettingsMainSwitchPreference;
+import kotlin.Unit;
+
import java.util.List;
/**
@@ -103,7 +108,6 @@
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private ImsMmTelManager mImsMmTelManager;
- private ProvisioningManager mProvisioningManager;
private TelephonyManager mTelephonyManager;
private PhoneTelephonyCallback mTelephonyCallback;
@@ -188,19 +192,6 @@
return true;
};
- private final ProvisioningManager.Callback mProvisioningCallback =
- new ProvisioningManager.Callback() {
- @Override
- public void onProvisioningIntChanged(int item, int value) {
- if (item == ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED
- || item == ImsConfig.ConfigConstants.VLT_SETTING_ENABLED) {
- // The provisioning policy might have changed. Update the body to make sure
- // this change takes effect if needed.
- updateBody();
- }
- }
- };
-
@VisibleForTesting
void showAlert(Intent intent) {
final Context context = getActivity();
@@ -264,14 +255,6 @@
}
@VisibleForTesting
- ProvisioningManager getImsProvisioningManager() {
- if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
- return null;
- }
- return ProvisioningManager.createForSubscriptionId(mSubId);
- }
-
- @VisibleForTesting
ImsMmTelManager getImsMmTelManager() {
if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
return null;
@@ -294,7 +277,6 @@
FRAGMENT_BUNDLE_SUBID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
}
- mProvisioningManager = getImsProvisioningManager();
mImsMmTelManager = getImsMmTelManager();
mSwitchBar = (SettingsMainSwitchPreference) findPreference(SWITCH_BAR);
@@ -336,19 +318,33 @@
return view;
}
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ getWifiCallingRepository().collectIsWifiCallingReadyFlow(
+ getLifecycleOwner(), (isWifiWifiCallingReadyFlow) -> {
+ if (!isWifiWifiCallingReadyFlow) {
+ // This screen is not allowed to be shown due to provisioning policy and
+ // should therefore be closed.
+ finish();
+ }
+ return Unit.INSTANCE;
+ });
+ }
+
@VisibleForTesting
- boolean isWfcProvisionedOnDevice() {
- return queryImsState(mSubId).isWifiCallingProvisioned();
+ @NonNull
+ IWifiCallingRepository getWifiCallingRepository() {
+ return new WifiCallingRepository(requireContext(), mSubId);
+ }
+
+ @VisibleForTesting
+ @NonNull
+ LifecycleOwner getLifecycleOwner() {
+ return getViewLifecycleOwner();
}
private void updateBody() {
- if (!isWfcProvisionedOnDevice()) {
- // This screen is not allowed to be shown due to provisioning policy and should
- // therefore be closed.
- finish();
- return;
- }
-
final CarrierConfigManager configManager = (CarrierConfigManager)
getSystemService(Context.CARRIER_CONFIG_SERVICE);
boolean isWifiOnlySupported = true;
@@ -448,8 +444,6 @@
if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
showAlert(intent);
}
- // Register callback for provisioning changes.
- registerProvisioningChangedCallback();
}
@Override
@@ -462,8 +456,6 @@
mSwitchBar.removeOnSwitchChangeListener(this);
}
context.unregisterReceiver(mIntentReceiver);
- // Remove callback for provisioning changes.
- unregisterProvisioningChangedCallback();
}
/**
@@ -699,27 +691,6 @@
return SubscriptionManager.getResourcesForSubId(getContext(), mSubId);
}
- @VisibleForTesting
- void registerProvisioningChangedCallback() {
- if (mProvisioningManager == null) {
- return;
- }
- try {
- mProvisioningManager.registerProvisioningChangedCallback(getContext().getMainExecutor(),
- mProvisioningCallback);
- } catch (Exception ex) {
- Log.w(TAG, "onResume: Unable to register callback for provisioning changes.");
- }
- }
-
- @VisibleForTesting
- void unregisterProvisioningChangedCallback() {
- if (mProvisioningManager == null) {
- return;
- }
- mProvisioningManager.unregisterProvisioningChangedCallback(mProvisioningCallback);
- }
-
/**
* Determine whether to override roaming Wi-Fi calling preference when device is connected to
* non-terrestrial network.
diff --git a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java
index a7527d7..c7ad9ca 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivity.java
@@ -35,6 +35,8 @@
import androidx.fragment.app.FragmentTransaction;
import com.android.settings.R;
+import com.android.settings.flags.Flags;
+import com.android.settings.overlay.FeatureFactory;
import java.util.List;
@@ -236,7 +238,12 @@
WifiDppUtils.TAG_FRAGMENT_QR_CODE_GENERATOR);
if (fragment == null) {
- fragment = new WifiDppQrCodeGeneratorFragment();
+ if (Flags.enableWifiSharingRuntimeFragment()) {
+ fragment = FeatureFactory.getFeatureFactory().getWifiFeatureProvider()
+ .getWifiDppQrCodeGeneratorFragment();
+ } else {
+ fragment = new WifiDppQrCodeGeneratorFragment();
+ }
} else {
if (fragment.isVisible()) {
return;
diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java
index 3d437e2..1213b0d 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java
@@ -56,7 +56,7 @@
private static final String TAG = "WifiDppQrCodeGeneratorFragment";
private ImageView mQrCodeView;
- private String mQrCode;
+ protected String mQrCode;
private static final String CHIP_LABEL_METADATA_KEY = "android.service.chooser.chip_label";
private static final String CHIP_ICON_METADATA_KEY = "android.service.chooser.chip_icon";
@@ -258,7 +258,7 @@
return button;
}
- private void setQrCode() {
+ protected void setQrCode() {
try {
final int qrcodeSize = getContext().getResources().getDimensionPixelSize(
R.dimen.qrcode_size);
diff --git a/src/com/android/settings/wifi/factory/WifiFeatureProvider.java b/src/com/android/settings/wifi/factory/WifiFeatureProvider.java
index 5ab899a..e5bf81a 100644
--- a/src/com/android/settings/wifi/factory/WifiFeatureProvider.java
+++ b/src/com/android/settings/wifi/factory/WifiFeatureProvider.java
@@ -27,6 +27,7 @@
import androidx.lifecycle.ViewModelStoreOwner;
import com.android.settings.wifi.details.WifiNetworkDetailsViewModel;
+import com.android.settings.wifi.dpp.WifiDppQrCodeGeneratorFragment;
import com.android.settings.wifi.repository.SharedConnectivityRepository;
import com.android.settings.wifi.repository.WifiHotspotRepository;
import com.android.settings.wifi.tether.WifiHotspotSecurityViewModel;
@@ -147,6 +148,15 @@
}
/**
+ * Gets an instance of WifiDppQrCodeGeneratorFragment
+ */
+ public WifiDppQrCodeGeneratorFragment getWifiDppQrCodeGeneratorFragment() {
+ WifiDppQrCodeGeneratorFragment fragment = new WifiDppQrCodeGeneratorFragment();
+ verboseLog(TAG, "getWifiDppQrCodeGeneratorFragment():" + fragment);
+ return fragment;
+ }
+
+ /**
* Send a {@link Log#VERBOSE} log message.
*
* @param tag Used to identify the source of a log message. It usually identifies
diff --git a/tests/Enable16KbTests/Android.bp b/tests/Enable16KbTests/Android.bp
index 781ea8f..fa05d33 100644
--- a/tests/Enable16KbTests/Android.bp
+++ b/tests/Enable16KbTests/Android.bp
@@ -33,7 +33,6 @@
],
platform_apis: true,
certificate: "platform",
- test_suites: ["device-tests"],
libs: [
"android.test.runner",
"android.test.base",
@@ -57,6 +56,6 @@
data: [
":test_16kb_app",
],
- test_suites: ["device-tests"],
+ test_suites: ["general-tests"],
test_config: "AndroidTest.xml",
}
diff --git a/tests/robotests/src/com/android/settings/MainClearTest.java b/tests/robotests/src/com/android/settings/MainClearTest.java
index e84d4eb..1136d94 100644
--- a/tests/robotests/src/com/android/settings/MainClearTest.java
+++ b/tests/robotests/src/com/android/settings/MainClearTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
@@ -39,7 +40,12 @@
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.hardware.biometrics.BiometricManager;
+import android.hardware.biometrics.Flags;
import android.os.UserManager;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
@@ -57,6 +63,7 @@
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;
import org.mockito.ArgumentCaptor;
@@ -77,6 +84,9 @@
})
public class MainClearTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
private static final String TEST_ACCOUNT_TYPE = "android.test.account.type";
private static final String TEST_CONFIRMATION_PACKAGE = "android.test.conf.pkg";
private static final String TEST_CONFIRMATION_CLASS = "android.test.conf.pkg.ConfActivity";
@@ -95,6 +105,12 @@
@Mock
private FragmentActivity mMockActivity;
+ @Mock
+ private BiometricManager mBiometricManager;
+ @Mock
+ private Resources mResources;
+ @Mock
+ private Context mContext;
@Mock
private Intent mMockIntent;
@@ -122,6 +138,7 @@
// Make scrollView only have one child
when(mScrollView.getChildAt(0)).thenReturn(mLinearLayout);
when(mScrollView.getChildCount()).thenReturn(1);
+ doReturn(mActivity).when(mMainClear).getActivity();
}
@After
@@ -344,6 +361,59 @@
}
@Test
+ @EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
+ public void testOnActivityResultInternal_keyguardRequestTriggeringBiometricPrompt() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mMockActivity.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
+ when(mResources.getString(anyInt())).thenReturn(TEST_ACCOUNT_NAME);
+ when(mBiometricManager.canAuthenticate(
+ BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ .thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
+ doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.KEYGUARD_REQUEST));
+ doNothing().when(mMainClear).startActivityForResult(any(), anyInt());
+ doReturn(mMockActivity).when(mMainClear).getActivity();
+ doReturn(mContext).when(mMainClear).getContext();
+
+ mMainClear
+ .onActivityResultInternal(MainClear.KEYGUARD_REQUEST, Activity.RESULT_OK, null);
+
+ verify(mMainClear, times(1)).isValidRequestCode(eq(MainClear.KEYGUARD_REQUEST));
+ verify(mMainClear).startActivityForResult(any(), eq(MainClear.BIOMETRICS_REQUEST));
+ verify(mMainClear, times(0)).establishInitialState();
+ verify(mMainClear, times(0)).getAccountConfirmationIntent();
+ verify(mMainClear, times(0)).showFinalConfirmation();
+ }
+
+ @Test
+ public void testOnActivityResultInternal_biometricRequestTriggeringFinalConfirmation() {
+ doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.BIOMETRICS_REQUEST));
+ doReturn(null).when(mMainClear).getAccountConfirmationIntent();
+ doNothing().when(mMainClear).showFinalConfirmation();
+
+ mMainClear
+ .onActivityResultInternal(MainClear.BIOMETRICS_REQUEST, Activity.RESULT_OK, null);
+
+ verify(mMainClear, times(1)).isValidRequestCode(eq(MainClear.BIOMETRICS_REQUEST));
+ verify(mMainClear, times(0)).establishInitialState();
+ verify(mMainClear, times(1)).getAccountConfirmationIntent();
+ verify(mMainClear, times(1)).showFinalConfirmation();
+ }
+
+ @Test
+ public void testOnActivityResultInternal_biometricRequestTriggeringInitialState() {
+ doReturn(true).when(mMainClear).isValidRequestCode(eq(MainClear.BIOMETRICS_REQUEST));
+ doNothing().when(mMainClear).establishInitialState();
+
+ mMainClear.onActivityResultInternal(MainClear.BIOMETRICS_REQUEST, Activity.RESULT_CANCELED,
+ null);
+
+ verify(mMainClear, times(1)).isValidRequestCode(eq(MainClear.BIOMETRICS_REQUEST));
+ verify(mMainClear, times(1)).establishInitialState();
+ verify(mMainClear, times(0)).getAccountConfirmationIntent();
+ verify(mMainClear, times(0)).showFinalConfirmation();
+ }
+
+ @Test
public void testOnActivityResultInternal_confirmRequestTriggeringShowFinal() {
doReturn(true).when(mMainClear)
.isValidRequestCode(eq(MainClear.CREDENTIAL_CONFIRM_REQUEST));
diff --git a/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java b/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java
deleted file mode 100644
index ea6559c..0000000
--- a/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java
+++ /dev/null
@@ -1,124 +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;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.spy;
-
-import android.view.LayoutInflater;
-import android.widget.TextView;
-
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
-import com.android.settings.testutils.shadow.ShadowRecoverySystem;
-
-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.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.android.util.concurrent.PausedExecutorService;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowLooper;
-import org.robolectric.shadows.ShadowPausedAsyncTask;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowRecoverySystem.class, ShadowBluetoothAdapter.class})
-public class ResetNetworkConfirmTest {
- @Rule
- public final MockitoRule mMockitoRule = MockitoJUnit.rule();
-
- private static final String TEST_PACKAGE = "com.android.settings";
-
- private FragmentActivity mActivity;
-
- @Mock
- private ResetNetworkConfirm mResetNetworkConfirm;
- private PausedExecutorService mExecutorService;
-
- @Before
- public void setUp() {
- mExecutorService = new PausedExecutorService();
- ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
- mResetNetworkConfirm = new ResetNetworkConfirm();
- mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
- mResetNetworkConfirm.mActivity = mActivity;
- }
-
- @After
- public void tearDown() {
- ShadowRecoverySystem.reset();
- }
-
- @Test
- public void testResetNetworkData_notResetEsim() {
- mResetNetworkConfirm.mResetNetworkRequest =
- new ResetNetworkRequest(ResetNetworkRequest.RESET_NONE);
- mResetNetworkConfirm.mResetSubscriptionContract =
- new ResetSubscriptionContract(mActivity,
- mResetNetworkConfirm.mResetNetworkRequest) {
- @Override
- public void onSubscriptionInactive(int subscriptionId) {
- mActivity.onBackPressed();
- }
- };
-
- mResetNetworkConfirm.mFinalClickListener.onClick(null /* View */);
- mExecutorService.runAll();
- ShadowLooper.idleMainLooper();
-
- assertThat(ShadowRecoverySystem.getWipeEuiccCalledCount()).isEqualTo(0);
- }
-
- @Test
- public void setSubtitle_eraseEsim() {
- mResetNetworkConfirm.mResetNetworkRequest =
- new ResetNetworkRequest(ResetNetworkRequest.RESET_NONE);
- mResetNetworkConfirm.mResetNetworkRequest.setResetEsim(TEST_PACKAGE);
-
- mResetNetworkConfirm.mContentView =
- LayoutInflater.from(mActivity).inflate(R.layout.reset_network_confirm, null);
-
- mResetNetworkConfirm.setSubtitle();
-
- assertThat(((TextView) mResetNetworkConfirm.mContentView
- .findViewById(R.id.reset_network_confirm)).getText())
- .isEqualTo(mActivity.getString(R.string.reset_network_final_desc_esim));
- }
-
- @Test
- public void setSubtitle_notEraseEsim() {
- mResetNetworkConfirm.mResetNetworkRequest =
- new ResetNetworkRequest(ResetNetworkRequest.RESET_NONE);
-
- mResetNetworkConfirm.mContentView =
- LayoutInflater.from(mActivity).inflate(R.layout.reset_network_confirm, null);
-
- mResetNetworkConfirm.setSubtitle();
-
- assertThat(((TextView) mResetNetworkConfirm.mContentView
- .findViewById(R.id.reset_network_confirm)).getText())
- .isEqualTo(mActivity.getString(R.string.reset_network_final_desc));
- }
-}
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
index 0c57b01..fd97b78 100644
--- a/tests/robotests/src/com/android/settings/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -20,6 +20,10 @@
import static android.hardware.biometrics.SensorProperties.STRENGTH_STRONG;
import static android.hardware.biometrics.SensorProperties.STRENGTH_WEAK;
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_AUTHENTICATORS;
+import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT;
+
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertNull;
@@ -35,10 +39,12 @@
import static org.mockito.Mockito.when;
import android.app.ActionBar;
+import android.app.KeyguardManager;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyResourcesManager;
import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
@@ -47,6 +53,8 @@
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.VectorDrawable;
+import android.hardware.biometrics.BiometricManager;
+import android.hardware.biometrics.Flags;
import android.hardware.face.FaceManager;
import android.hardware.face.FaceSensorProperties;
import android.hardware.face.FaceSensorPropertiesInternal;
@@ -61,21 +69,27 @@
import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.util.IconDrawableFactory;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.core.graphics.drawable.IconCompat;
+import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.password.ConfirmDeviceCredentialActivity;
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
@@ -92,6 +106,9 @@
@Config(shadows = ShadowLockPatternUtils.class)
public class UtilsTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
private static final String PACKAGE_NAME = "com.android.app";
private static final int USER_ID = 1;
@@ -113,6 +130,11 @@
private IconDrawableFactory mIconDrawableFactory;
@Mock
private ApplicationInfo mApplicationInfo;
+ @Mock
+ private BiometricManager mBiometricManager;
+ @Mock
+ private Fragment mFragment;
+
private Context mContext;
private UserManager mUserManager;
private static final int FLAG_SYSTEM = 0x00000000;
@@ -128,6 +150,7 @@
when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
.thenReturn(connectivityManager);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
}
@After
@@ -503,6 +526,61 @@
assertThat(Utils.isFaceNotConvenienceBiometric(mContext)).isFalse();
}
+ @Test
+ @EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
+ public void testRequestBiometricAuthentication_biometricManagerNull_shouldReturnFalse() {
+ when(mContext.getSystemService(BiometricManager.class)).thenReturn(null);
+ assertThat(Utils.requestBiometricAuthenticationForMandatoryBiometrics(mContext,
+ false /* biometricsSuccessfullyAuthenticated */,
+ false /* biometricsAuthenticationRequested */)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
+ public void testRequestBiometricAuthentication_biometricManagerReturnsSuccess_shouldReturnTrue() {
+ when(mBiometricManager.canAuthenticate(
+ BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ .thenReturn(BiometricManager.BIOMETRIC_SUCCESS);
+ boolean requestBiometricAuthenticationForMandatoryBiometrics =
+ Utils.requestBiometricAuthenticationForMandatoryBiometrics(mContext,
+ true /* biometricsSuccessfullyAuthenticated */,
+ false /* biometricsAuthenticationRequested */);
+ assertThat(requestBiometricAuthenticationForMandatoryBiometrics).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
+ public void testRequestBiometricAuthentication_biometricManagerReturnsError_shouldReturnFalse() {
+ when(mBiometricManager.canAuthenticate(
+ BiometricManager.Authenticators.MANDATORY_BIOMETRICS))
+ .thenReturn(BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE);
+ assertThat(Utils.requestBiometricAuthenticationForMandatoryBiometrics(mContext,
+ false /* biometricsSuccessfullyAuthenticated */,
+ false /* biometricsAuthenticationRequested */)).isFalse();
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_MANDATORY_BIOMETRICS)
+ public void testLaunchBiometricPrompt_checkIntentValues() {
+ when(mFragment.getContext()).thenReturn(mContext);
+
+ final int requestCode = 1;
+ final ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
+ Utils.launchBiometricPromptForMandatoryBiometrics(mFragment, requestCode);
+
+ verify(mFragment).startActivityForResult(intentArgumentCaptor.capture(), eq(requestCode));
+
+ final Intent intent = intentArgumentCaptor.getValue();
+
+ assertThat(intent.getExtra(BIOMETRIC_PROMPT_AUTHENTICATORS)).isEqualTo(
+ BiometricManager.Authenticators.MANDATORY_BIOMETRICS);
+ assertThat(intent.getExtra(BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT)).isNotNull();
+ assertThat(intent.getExtra(KeyguardManager.EXTRA_DESCRIPTION)).isNotNull();
+ assertThat(intent.getComponent().getPackageName()).isEqualTo(SETTINGS_PACKAGE_NAME);
+ assertThat(intent.getComponent().getClassName()).isEqualTo(
+ ConfirmDeviceCredentialActivity.class.getName());
+ }
+
private void setUpForConfirmCredentialString(boolean isEffectiveUserManagedProfile) {
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
when(mMockUserManager.getCredentialOwnerProfile(USER_ID)).thenReturn(USER_ID);
diff --git a/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java b/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
index 1e6e068..c0b9dbd 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
@@ -18,66 +18,97 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import android.app.settings.SettingsEnums;
-import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.test.core.app.ApplicationProvider;
+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.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;
/** Tests for {@link AutoBrightnessPreferenceFragmentForSetupWizard}. */
@RunWith(RobolectricTestRunner.class)
public class AutoBrightnessPreferenceFragmentForSetupWizardTest {
- @Rule
- public final MockitoRule mMockito = MockitoJUnit.rule();
+ // Same as AutoBrightnessPreferenceFragmentForSetupWizard#FOOTER_PREFERENCE_KEY
+ private static final String FOOTER_PREFERENCE_KEY = "auto_brightness_footer";
- @Spy
- private final Context mContext = ApplicationProvider.getApplicationContext();
- @Mock
- private GlifPreferenceLayout mGlifLayoutView;
- @Mock
- private FooterBarMixin mFooterBarMixin;
+ private FragmentScenario<AutoBrightnessPreferenceFragmentForSetupWizard> mFragmentScenario;
+
private AutoBrightnessPreferenceFragmentForSetupWizard mFragment;
+ private GlifLayout mGlifLayout;
@Before
public void setUp() {
- mFragment = spy(new AutoBrightnessPreferenceFragmentForSetupWizard());
- doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner();
- doReturn(mContext).when(mFragment).getContext();
- when(mGlifLayoutView.getMixin(eq(FooterBarMixin.class))).thenReturn(mFooterBarMixin);
+ 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 setHeaderText_onViewCreated_verifyAction() {
- final String title = "title";
- doReturn(title).when(mContext).getString(R.string.auto_brightness_title);
+ public void onViewCreated_verifyGlifHerderText() {
+ assertThat(mGlifLayout.getHeaderText())
+ .isEqualTo(mFragment.getString(R.string.auto_brightness_title));
+ }
- mFragment.onViewCreated(mGlifLayoutView, null);
+ @Test
+ public void onViewCreated_verifyGlifFooter() {
+ FooterBarMixin footerMixin = mGlifLayout.getMixin(FooterBarMixin.class);
+ assertThat(footerMixin).isNotNull();
- verify(mGlifLayoutView).setHeaderText(title);
+ 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
@@ -85,11 +116,4 @@
assertThat(mFragment.getMetricsCategory()).isEqualTo(
SettingsEnums.SUW_ACCESSIBILITY_AUTO_BRIGHTNESS);
}
-
- @Test
- public void onViewCreated_verifyAction() {
- mFragment.onViewCreated(mGlifLayoutView, null);
-
- verify(mFooterBarMixin).setPrimaryButton(any());
- }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java
index 8b4bcd8..9f50146 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java
@@ -133,23 +133,23 @@
}
@Test
- public void getSummary_switchModeAndSettingsOff_disabledSummaryTextUsed() {
+ public void getSummary_switchModeAndSettingsOff_defaultSummaryTextUsed() {
MagnificationCapabilities.setCapabilities(mContext, MagnificationMode.ALL);
Settings.Secure.putInt(mContext.getContentResolver(), ONE_FINGER_PANNING_KEY, OFF);
mController.updateState(mSwitchPreference);
- assertThat(mController.getSummary()).isEqualTo(disabledSummary());
+ assertThat(mController.getSummary().toString()).isEqualTo(defaultSummary());
}
@Test
- public void getSummary_switchModeAndSettingsOn_enabledSummaryTextUsed() {
+ public void getSummary_switchModeAndSettingsOn_defaultSummaryTextUsed() {
MagnificationCapabilities.setCapabilities(mContext, MagnificationMode.ALL);
Settings.Secure.putInt(mContext.getContentResolver(), ONE_FINGER_PANNING_KEY, ON);
mController.updateState(mSwitchPreference);
- assertThat(mController.getSummary()).isEqualTo(enabledSummary());
+ assertThat(mController.getSummary().toString()).isEqualTo(defaultSummary());
}
@Test
@@ -158,7 +158,7 @@
mController.updateState(mSwitchPreference);
- assertThat(mController.getSummary()).isEqualTo(unavailableSummary());
+ assertThat(mController.getSummary().toString()).isEqualTo(unavailableSummary());
}
@Test
@@ -199,14 +199,9 @@
assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
- private String enabledSummary() {
+ private String defaultSummary() {
return mContext.getString(
- R.string.accessibility_magnification_one_finger_panning_summary_on);
- }
-
- private String disabledSummary() {
- return mContext.getString(
- R.string.accessibility_magnification_one_finger_panning_summary_off);
+ R.string.accessibility_magnification_one_finger_panning_summary);
}
private String unavailableSummary() {
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
index ab2e9d1..b801521 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java
@@ -24,6 +24,7 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -394,6 +395,40 @@
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_ONE_FINGER_PANNING_GESTURE)
+ public void onResume_oneFingerPanningFlagOn_registerToSpecificUri() {
+ ShadowContentResolver shadowContentResolver = Shadows.shadowOf(
+ mContext.getContentResolver());
+ Uri observedUri = Settings.Secure.getUriFor(
+ Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED);
+ // verify no one finger panning settings observer registered before launching the fragment
+ assertThat(shadowContentResolver.getContentObservers(observedUri)).isEmpty();
+
+ mFragController.create(R.id.main_content, /* bundle= */ null).start().resume();
+
+ Collection<ContentObserver> observers =
+ shadowContentResolver.getContentObservers(observedUri);
+ assertThat(observers.size()).isEqualTo(1);
+ assertThat(observers.stream().findFirst().get()).isInstanceOf(
+ AccessibilitySettingsContentObserver.class);
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_ONE_FINGER_PANNING_GESTURE)
+ public void onResume_oneFingerPanningFlagOff_notRegisterToSpecificUri() {
+ ShadowContentResolver shadowContentResolver = Shadows.shadowOf(
+ mContext.getContentResolver());
+ Uri observedUri = Settings.Secure.getUriFor(
+ Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED);
+ // verify no one finger panning settings observer registered before launching the fragment
+ assertThat(shadowContentResolver.getContentObservers(observedUri)).isEmpty();
+
+ mFragController.create(R.id.main_content, /* bundle= */ null).start().resume();
+ // verify no one finger panning settings observer registered after launching the fragment
+ assertThat(shadowContentResolver.getContentObservers(observedUri)).isEmpty();
+ }
+
+ @Test
public void hasValueInSettings_putValue_hasValue() {
setMagnificationTripleTapEnabled(/* enabled= */ true);
@@ -934,7 +969,9 @@
}
@Test
- public void onProcessArguments_defaultArgumentUnavailable_shouldSetDefaultArguments() {
+ @DisableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_ONE_FINGER_PANNING_GESTURE)
+ public void
+ onProcessArguments_defaultArgumentUnavailableAndFlagOff_shouldSetDefaultArguments() {
ToggleScreenMagnificationPreferenceFragment fragment =
mFragController.create(
R.id.main_content, /* bundle= */ null).start().resume().get();
@@ -948,6 +985,32 @@
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_MAGNIFICATION_ONE_FINGER_PANNING_GESTURE)
+ public void
+ onProcessArguments_defaultArgumentUnavailableAndFlagOn_shouldSetDefaultArguments() {
+ ToggleScreenMagnificationPreferenceFragment fragment =
+ mFragController.create(
+ R.id.main_content, /* bundle= */ null).start().resume().get();
+ Bundle arguments = new Bundle();
+
+ fragment.onProcessArguments(arguments);
+
+ assertTrue(arguments.containsKey(AccessibilitySettings.EXTRA_PREFERENCE_KEY));
+ assertTrue(arguments.containsKey(AccessibilitySettings.EXTRA_INTRO));
+ // If OneFingerPanning flag is on, the EXTRA_HTML_DESCRIPTION should not be set. The html
+ // description would be decided dynamically based on the OneFingerPanning preference state.
+ assertFalse(arguments.containsKey(AccessibilitySettings.EXTRA_HTML_DESCRIPTION));
+ }
+
+ @Test
+ public void getCurrentHtmlDescription_shouldNotBeEmpty() {
+ ToggleScreenMagnificationPreferenceFragment fragment =
+ mFragController.create(
+ R.id.main_content, /* bundle= */ null).start().resume().get();
+ assertThat(fragment.getCurrentHtmlDescription().toString()).isNotEmpty();
+ }
+
+ @Test
public void getSummary_magnificationEnabled_returnShortcutOnWithSummary() {
setMagnificationTripleTapEnabled(true);
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 6407f64..58e7e2d 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsFragmentTest.java
@@ -17,7 +17,6 @@
package com.android.settings.biometrics.fingerprint;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
-import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_REAR;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment;
@@ -34,16 +33,13 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
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.Context;
import android.content.Intent;
import android.content.pm.UserInfo;
import android.hardware.biometrics.ComponentInfoInternal;
import android.hardware.biometrics.SensorProperties;
-import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorProperties;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
@@ -84,7 +80,6 @@
import org.robolectric.annotation.Config;
import java.util.ArrayList;
-import java.util.List;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowSettingsPreferenceFragment.class, ShadowUtils.class, ShadowFragment.class,
@@ -152,6 +147,7 @@
public void testCancellationSignalLifeCycle() {
setUpFragment(false);
+ mFingerprintAuthenticateSidecar.setFingerprintManager(mFingerprintManager);
doNothing().when(mFingerprintManager).authenticate(any(),
mCancellationSignalArgumentCaptor.capture(),
@@ -217,7 +213,6 @@
doReturn(fragmentManager).when(mActivity).getSupportFragmentManager();
mFingerprintAuthenticateSidecar = new FingerprintAuthenticateSidecar();
- mFingerprintAuthenticateSidecar.setFingerprintManager(mFingerprintManager);
doReturn(mFingerprintAuthenticateSidecar).when(fragmentManager).findFragmentByTag(
"authenticate_sidecar");
@@ -251,27 +246,4 @@
true /* resetLockoutRequiresHardwareAuthToken */));
doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
}
-
- @Test
- public void testAuthOnFragmentSetup() {
- doReturn(List.of(new Fingerprint("Finger 1", 1, 2, 3)))
- .when(mFingerprintManager).getEnrolledFingerprints(anyInt());
- setUpFragment(false, 1, TYPE_REAR);
-
- verify(mFingerprintManager).authenticate(any(), any(),
- any(), any(), anyInt());
- }
-
- @Test
- public void testErrorCancelledRestartsAuth() {
- doReturn(List.of(new Fingerprint("Finger 1", 1, 2, 3)))
- .when(mFingerprintManager).getEnrolledFingerprints(anyInt());
- setUpFragment(false, 1, TYPE_REAR);
-
- // When we receive a cancel, we should restart auth.
- mFragment.handleError(FingerprintManager.FINGERPRINT_ERROR_CANCELED, "blah");
-
- verify(mFingerprintManager, times(2)).authenticate(any(), any(),
- any(), any(), anyInt());
- }
}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java
index cf80a87..7c865f3 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsHearingAidsPresetsControllerTest.java
@@ -38,6 +38,7 @@
import androidx.preference.ListPreference;
import androidx.preference.PreferenceCategory;
+import com.android.settings.R;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.HapClientProfile;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -215,11 +216,13 @@
assertThat(mController.getPreference()).isNotNull();
assertThat(mController.getPreference().isEnabled()).isFalse();
+ assertThat(String.valueOf(mController.getPreference().getSummary())).isEqualTo(
+ mContext.getString(R.string.bluetooth_hearing_aids_presets_empty_list_message));
}
@Test
public void refresh_validPresetInfo_preferenceEnabled() {
- BluetoothHapPresetInfo info = getTestPresetInfo();
+ BluetoothHapPresetInfo info = getTestPresetInfo(true);
when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info));
mController.refresh();
@@ -230,7 +233,7 @@
@Test
public void refresh_invalidActivePresetIndex_summaryIsNull() {
- BluetoothHapPresetInfo info = getTestPresetInfo();
+ BluetoothHapPresetInfo info = getTestPresetInfo(true);
when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info));
when(mHapClientProfile.getActivePresetIndex(mDevice)).thenReturn(PRESET_INDEX_UNAVAILABLE);
@@ -242,7 +245,7 @@
@Test
public void refresh_validActivePresetIndex_summaryIsNotNull() {
- BluetoothHapPresetInfo info = getTestPresetInfo();
+ BluetoothHapPresetInfo info = getTestPresetInfo(true);
when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info));
when(mHapClientProfile.getActivePresetIndex(mDevice)).thenReturn(TEST_PRESET_INDEX);
@@ -262,10 +265,30 @@
verify(mHapClientProfile).selectPreset(mDevice, TEST_PRESET_INDEX);
}
- private BluetoothHapPresetInfo getTestPresetInfo() {
+ @Test
+ public void loadAllPresetInfo_unavailablePreset_notAddedToEntries() {
+ BluetoothHapPresetInfo info = getTestPresetInfo(false);
+ when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info));
+
+ mController.refresh();
+
+ assertThat(mController.getPreference().getEntries().length).isEqualTo(0);
+ }
+
+ @Test
+ public void loadAllPresetInfo_availablePreset_addedToEntries() {
+ BluetoothHapPresetInfo info = getTestPresetInfo(true);
+ when(mHapClientProfile.getAllPresetInfo(mDevice)).thenReturn(List.of(info));
+
+ mController.refresh();
+
+ assertThat(mController.getPreference().getEntries().length).isEqualTo(1);
+ }
+ private BluetoothHapPresetInfo getTestPresetInfo(boolean available) {
BluetoothHapPresetInfo info = mock(BluetoothHapPresetInfo.class);
when(info.getName()).thenReturn(TEST_PRESET_NAME);
when(info.getIndex()).thenReturn(TEST_PRESET_INDEX);
+ when(info.isAvailable()).thenReturn(available);
return info;
}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioControllerTest.java
index d9a917b..24528ae 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsSpatialAudioControllerTest.java
@@ -21,26 +21,35 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
import android.media.AudioDeviceAttributes;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.media.Spatializer;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.PreferenceCategory;
import androidx.preference.TwoStatePreference;
import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.bluetooth.A2dpProfile;
+import com.android.settingslib.bluetooth.HearingAidProfile;
+import com.android.settingslib.bluetooth.LeAudioProfile;
import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.flags.Flags;
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;
@@ -54,7 +63,8 @@
@RunWith(RobolectricTestRunner.class)
public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetailsControllerTestBase {
-
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private static final String MAC_ADDRESS = "04:52:C7:0B:D8:3C";
private static final String KEY_SPATIAL_AUDIO = "spatial_audio";
private static final String KEY_HEAD_TRACKING = "head_tracking";
@@ -64,6 +74,9 @@
@Mock private Lifecycle mSpatialAudioLifecycle;
@Mock private PreferenceCategory mProfilesContainer;
@Mock private BluetoothDevice mBluetoothDevice;
+ @Mock private A2dpProfile mA2dpProfile;
+ @Mock private LeAudioProfile mLeAudioProfile;
+ @Mock private HearingAidProfile mHearingAidProfile;
private AudioDeviceAttributes mAvailableDevice;
@@ -83,6 +96,12 @@
when(mAudioManager.getSpatializer()).thenReturn(mSpatializer);
when(mCachedDevice.getAddress()).thenReturn(MAC_ADDRESS);
when(mCachedDevice.getDevice()).thenReturn(mBluetoothDevice);
+ when(mCachedDevice.getProfiles())
+ .thenReturn(List.of(mA2dpProfile, mLeAudioProfile, mHearingAidProfile));
+ when(mA2dpProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
+ when(mA2dpProfile.getProfileId()).thenReturn(BluetoothProfile.A2DP);
+ when(mLeAudioProfile.getProfileId()).thenReturn(BluetoothProfile.LE_AUDIO);
+ when(mHearingAidProfile.getProfileId()).thenReturn(BluetoothProfile.HEARING_AID);
when(mBluetoothDevice.getAnonymizedAddress()).thenReturn(MAC_ADDRESS);
when(mFeatureFactory.getBluetoothFeatureProvider().getSpatializer(mContext))
.thenReturn(mSpatializer);
@@ -273,6 +292,52 @@
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_DETERMINING_SPATIAL_AUDIO_ATTRIBUTES_BY_PROFILE)
+ public void refresh_leAudioProfileEnabledForHeadset_useLeAudioHeadsetAttributes() {
+ when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
+ when(mA2dpProfile.isEnabled(mBluetoothDevice)).thenReturn(false);
+ when(mHearingAidProfile.isEnabled(mBluetoothDevice)).thenReturn(false);
+ when(mAudioManager.getBluetoothAudioDeviceCategory(MAC_ADDRESS))
+ .thenReturn(AudioManager.AUDIO_DEVICE_CATEGORY_HEADPHONES);
+ when(mSpatializer.isAvailableForDevice(any())).thenReturn(true);
+
+ mController.refresh();
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mController.mAudioDevice.getType()).isEqualTo(AudioDeviceInfo.TYPE_BLE_HEADSET);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DETERMINING_SPATIAL_AUDIO_ATTRIBUTES_BY_PROFILE)
+ public void refresh_leAudioProfileEnabledForSpeaker_useLeAudioSpeakerAttributes() {
+ when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
+ when(mA2dpProfile.isEnabled(mBluetoothDevice)).thenReturn(false);
+ when(mHearingAidProfile.isEnabled(mBluetoothDevice)).thenReturn(false);
+ when(mAudioManager.getBluetoothAudioDeviceCategory(MAC_ADDRESS))
+ .thenReturn(AudioManager.AUDIO_DEVICE_CATEGORY_SPEAKER);
+ when(mSpatializer.isAvailableForDevice(any())).thenReturn(true);
+
+ mController.refresh();
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mController.mAudioDevice.getType()).isEqualTo(AudioDeviceInfo.TYPE_BLE_SPEAKER);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DETERMINING_SPATIAL_AUDIO_ATTRIBUTES_BY_PROFILE)
+ public void refresh_hearingAidProfileEnabled_useHearingAidAttributes() {
+ when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(false);
+ when(mA2dpProfile.isEnabled(mBluetoothDevice)).thenReturn(false);
+ when(mHearingAidProfile.isEnabled(mBluetoothDevice)).thenReturn(true);
+ when(mSpatializer.isAvailableForDevice(any())).thenReturn(true);
+
+ mController.refresh();
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mController.mAudioDevice.getType()).isEqualTo(AudioDeviceInfo.TYPE_HEARING_AID);
+ }
+
+ @Test
public void turnedOnSpatialAudio_invokesAddCompatibleAudioDevice() {
mController.setAvailableDevice(mAvailableDevice);
mSpatialAudioPref.setChecked(true);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java
index d28ab3b..5a9f2bc 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java
@@ -17,6 +17,8 @@
import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+import static com.android.settings.flags.Flags.FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING;
+import static com.android.settings.flags.Flags.FLAG_ROTATION_CONNECTED_DISPLAY_SETTING;
import static com.google.common.truth.Truth.assertThat;
@@ -30,6 +32,7 @@
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.hardware.input.InputManager;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -40,13 +43,16 @@
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater;
import com.android.settings.bluetooth.Utils;
+import com.android.settings.connecteddevice.display.ExternalDisplayUpdater;
import com.android.settings.connecteddevice.dock.DockUpdater;
import com.android.settings.connecteddevice.stylus.StylusDeviceUpdater;
import com.android.settings.connecteddevice.usb.ConnectedUsbDeviceUpdater;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.flags.FakeFeatureFlagsImpl;
import com.android.settings.flags.Flags;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
@@ -65,7 +71,6 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplicationPackageManager;
@@ -84,6 +89,8 @@
@Mock
private DashboardFragment mDashboardFragment;
@Mock
+ private ExternalDisplayUpdater mExternalDisplayUpdater;
+ @Mock
private ConnectedBluetoothDeviceUpdater mConnectedBluetoothDeviceUpdater;
@Mock
private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater;
@@ -105,6 +112,9 @@
private CachedBluetoothDevice mCachedDevice;
@Mock
private BluetoothDevice mDevice;
+ @Mock
+ private Resources mResources;
+ private final FakeFeatureFlagsImpl mFakeFeatureFlags = new FakeFeatureFlagsImpl();
private ShadowApplicationPackageManager mPackageManager;
private PreferenceGroup mPreferenceGroup;
@@ -118,8 +128,10 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ mFakeFeatureFlags.setFlag(FLAG_ROTATION_CONNECTED_DISPLAY_SETTING, true);
+ mFakeFeatureFlags.setFlag(FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING, true);
- mContext = spy(RuntimeEnvironment.application);
+ mContext = spy(ApplicationProvider.getApplicationContext());
mPreference = new Preference(mContext);
mPreference.setKey(PREFERENCE_KEY_1);
mPackageManager = (ShadowApplicationPackageManager) Shadows.shadowOf(
@@ -129,15 +141,19 @@
doReturn(mContext).when(mDashboardFragment).getContext();
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, true);
when(mContext.getSystemService(InputManager.class)).thenReturn(mInputManager);
+ when(mContext.getResources()).thenReturn(mResources);
when(mInputManager.getInputDeviceIds()).thenReturn(new int[]{});
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
mLocalBluetoothManager = Utils.getLocalBtManager(mContext);
when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
- mConnectedDeviceGroupController = new ConnectedDeviceGroupController(mContext);
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
- mConnectedUsbDeviceUpdater, mConnectedDockUpdater, mStylusDeviceUpdater);
+ mConnectedDeviceGroupController = spy(new ConnectedDeviceGroupController(mContext));
+ when(mConnectedDeviceGroupController.getFeatureFlags()).thenReturn(mFakeFeatureFlags);
+
+ mConnectedDeviceGroupController.init(mExternalDisplayUpdater,
+ mConnectedBluetoothDeviceUpdater, mConnectedUsbDeviceUpdater, mConnectedDockUpdater,
+ mStylusDeviceUpdater);
mConnectedDeviceGroupController.mPreferenceGroup = mPreferenceGroup;
when(mCachedDevice.getName()).thenReturn(DEVICE_NAME);
@@ -147,6 +163,7 @@
FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_SHOW_STYLUS_PREFERENCES,
true);
+ when(mPreferenceScreen.getContext()).thenReturn(mContext);
}
@Test
@@ -193,6 +210,7 @@
// register the callback in onStart()
mConnectedDeviceGroupController.onStart();
+ verify(mExternalDisplayUpdater).registerCallback();
verify(mConnectedBluetoothDeviceUpdater).registerCallback();
verify(mConnectedUsbDeviceUpdater).registerCallback();
verify(mConnectedDockUpdater).registerCallback();
@@ -204,6 +222,7 @@
public void onStop_shouldUnregisterUpdaters() {
// unregister the callback in onStop()
mConnectedDeviceGroupController.onStop();
+ verify(mExternalDisplayUpdater).unregisterCallback();
verify(mConnectedBluetoothDeviceUpdater).unregisterCallback();
verify(mConnectedUsbDeviceUpdater).unregisterCallback();
verify(mConnectedDockUpdater).unregisterCallback();
@@ -212,10 +231,12 @@
@Test
public void getAvailabilityStatus_noBluetoothUsbDockFeature_returnUnSupported() {
+ mFakeFeatureFlags.setFlag(FLAG_ROTATION_CONNECTED_DISPLAY_SETTING, false);
+ mFakeFeatureFlags.setFlag(FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
mConnectedUsbDeviceUpdater, null, null);
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
@@ -223,11 +244,23 @@
}
@Test
+ public void getAvailabilityStatus_connectedDisplay_returnSupported() {
+ mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
+ mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
+ mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
+ mConnectedUsbDeviceUpdater, null, null);
+
+ assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
+ AVAILABLE_UNSEARCHABLE);
+ }
+
+ @Test
public void getAvailabilityStatus_BluetoothFeature_returnSupported() {
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, true);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
mConnectedUsbDeviceUpdater, null, null);
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
@@ -239,7 +272,7 @@
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, true);
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
mConnectedUsbDeviceUpdater, null, null);
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
@@ -251,7 +284,7 @@
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
mConnectedUsbDeviceUpdater, mConnectedDockUpdater, null);
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
@@ -261,6 +294,8 @@
@Test
public void getAvailabilityStatus_noUsiStylusFeature_returnUnSupported() {
+ mFakeFeatureFlags.setFlag(FLAG_ROTATION_CONNECTED_DISPLAY_SETTING, false);
+ mFakeFeatureFlags.setFlag(FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_ACCESSORY, false);
mPackageManager.setSystemFeature(PackageManager.FEATURE_USB_HOST, false);
@@ -268,7 +303,7 @@
when(mInputManager.getInputDevice(0)).thenReturn(new InputDevice.Builder().setSources(
InputDevice.SOURCE_DPAD).setExternal(false).build());
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
mConnectedUsbDeviceUpdater, null, mStylusDeviceUpdater);
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
@@ -284,7 +319,7 @@
when(mInputManager.getInputDevice(0)).thenReturn(new InputDevice.Builder().setSources(
InputDevice.SOURCE_STYLUS).setExternal(false).build());
- mConnectedDeviceGroupController.init(mConnectedBluetoothDeviceUpdater,
+ mConnectedDeviceGroupController.init(null, mConnectedBluetoothDeviceUpdater,
mConnectedUsbDeviceUpdater, mConnectedDockUpdater, mStylusDeviceUpdater);
assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo(
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java
index 7f0c1c9..51ed899 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java
@@ -23,6 +23,7 @@
import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothStatusCodes;
+import android.os.Bundle;
import android.platform.test.flag.junit.SetFlagsRule;
import androidx.appcompat.app.AlertDialog;
@@ -78,10 +79,6 @@
BluetoothStatusCodes.FEATURE_SUPPORTED);
shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
BluetoothStatusCodes.FEATURE_SUPPORTED);
- mFragment = new AudioSharingCallAudioDialogFragment();
- mParent = new Fragment();
- FragmentController.setupFragment(
- mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
}
@After
@@ -91,6 +88,7 @@
@Test
public void getMetricsCategory_correctValue() {
+ mFragment = new AudioSharingCallAudioDialogFragment();
assertThat(mFragment.getMetricsCategory())
.isEqualTo(SettingsEnums.DIALOG_AUDIO_SHARING_CALL_AUDIO);
}
@@ -98,21 +96,52 @@
@Test
public void onCreateDialog_flagOff_dialogNotExist() {
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
- mFragment.show(mParent, new ArrayList<>(), (item) -> {});
+ mParent = new Fragment();
+ FragmentController.setupFragment(
+ mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
+ AudioSharingCallAudioDialogFragment.show(mParent, new ArrayList<>(), (item) -> {});
shadowMainLooper().idle();
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog).isNull();
}
@Test
+ public void onCreateDialog_unattachedFragment_dialogNotExist() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mParent = new Fragment();
+ AudioSharingCallAudioDialogFragment.show(mParent, new ArrayList<>(), (item) -> {});
+ shadowMainLooper().idle();
+ AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+ }
+
+ @Test
+ public void onCreateDialog_nullDeviceItems_showEmptyDialog() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mFragment = new AudioSharingCallAudioDialogFragment();
+ mFragment.setArguments(Bundle.EMPTY);
+ FragmentController.setupFragment(
+ mFragment, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
+ AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY);
+ dialog.show();
+ shadowMainLooper().idle();
+ assertThat(dialog.isShowing()).isTrue();
+ assertThat(dialog.getListView()).isNull();
+ }
+
+ @Test
public void onCreateDialog_showCorrectItems() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mParent = new Fragment();
+ FragmentController.setupFragment(
+ mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
ArrayList<AudioSharingDeviceItem> deviceItemList = new ArrayList<>();
deviceItemList.add(TEST_DEVICE_ITEM1);
deviceItemList.add(TEST_DEVICE_ITEM2);
- mFragment.show(mParent, deviceItemList, (item) -> {});
+ AudioSharingCallAudioDialogFragment.show(mParent, deviceItemList, (item) -> {});
shadowMainLooper().idle();
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNotNull();
assertThat(dialog.getListView().getCount()).isEqualTo(2);
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java
index 32f666f..9aa00fb 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java
@@ -96,6 +96,15 @@
}
@Test
+ public void onCreateDialog_unattachedFragment_dialogNotExist() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ AudioSharingConfirmDialogFragment.show(new Fragment());
+ shadowMainLooper().idle();
+ AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+ }
+
+ @Test
public void onCreateDialog_flagOn_showDialog() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
AudioSharingConfirmDialogFragment.show(mParent);
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 18f75ba..f3f32ae 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDevicePreferenceControllerTest.java
@@ -30,9 +30,11 @@
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
+import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastAssistant;
@@ -57,6 +59,7 @@
import com.android.settings.SettingsActivity;
import com.android.settings.bluetooth.Utils;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settings.testutils.shadow.ShadowFragment;
@@ -136,6 +139,7 @@
private LifecycleOwner mLifecycleOwner;
private PreferenceCategory mPreferenceGroup;
private Preference mAudioSharingPreference;
+ private FakeFeatureFactory mFeatureFactory;
@Before
public void setUp() {
@@ -148,6 +152,7 @@
BluetoothStatusCodes.FEATURE_SUPPORTED);
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
mLocalBtManager = Utils.getLocalBtManager(mContext);
when(mLocalBtManager.getEventManager()).thenReturn(mEventManager);
@@ -175,6 +180,7 @@
.thenReturn(mAudioSharingPreference);
when(mScreen.findPreference(KEY)).thenReturn(mPreferenceGroup);
mController = new AudioSharingDevicePreferenceController(mContext);
+ mController.init(mFragment);
mController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater);
mController.setDialogHandler(mDialogHandler);
doReturn(mActivity).when(mFragment).getActivity();
@@ -527,6 +533,25 @@
}
@Test
+ public void testBluetoothLeBroadcastAssistantCallbacks_logAction() {
+ mController.mBroadcastAssistantCallback.onSourceAddFailed(
+ mDevice, mSource, /* reason= */ 1);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_JOIN_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+
+ mController.mBroadcastAssistantCallback.onSourceRemoveFailed(
+ mDevice, /* sourceId= */ 1, /* reason= */ 1);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_LEAVE_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+ }
+
+ @Test
public void testBluetoothLeBroadcastAssistantCallbacks_doNothing() {
mController.mBroadcastAssistantCallback.onSearchStarted(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSearchStartFailed(/* reason= */ 1);
@@ -534,10 +559,6 @@
mController.mBroadcastAssistantCallback.onSearchStopFailed(/* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceAdded(
mDevice, /* sourceId= */ 1, /* reason= */ 1);
- mController.mBroadcastAssistantCallback.onSourceAddFailed(
- mDevice, mSource, /* reason= */ 1);
- mController.mBroadcastAssistantCallback.onSourceRemoveFailed(
- mDevice, /* sourceId= */ 1, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceModified(
mDevice, /* sourceId= */ 1, /* reason= */ 1);
mController.mBroadcastAssistantCallback.onSourceModifyFailed(
@@ -546,7 +567,8 @@
mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1);
shadowOf(Looper.getMainLooper()).idle();
- // Above callbacks won't update group preference
+ // Above callbacks won't update group preference and log actions
verify(mBluetoothDeviceUpdater, never()).forceUpdate();
+ verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java
index 39709c1..20c225c 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java
@@ -130,7 +130,16 @@
AudioSharingDialogFragment.show(
mParent, new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
shadowMainLooper().idle();
+ AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+ }
+ @Test
+ public void onCreateDialog_unattachedFragment_dialogNotExist() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ AudioSharingDialogFragment.show(
+ new Fragment(), new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST);
+ shadowMainLooper().idle();
AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(dialog).isNull();
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java
index 4c060d4..e71e876 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java
@@ -25,6 +25,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
@@ -248,6 +249,23 @@
}
@Test
+ public void handleUserTriggeredLeaDeviceConnected_noSharingLeaDeviceInErrorState_setActive() {
+ setUpBroadcast(false);
+ when(mCachedDevice1.getGroupId()).thenReturn(-1);
+ when(mLeAudioProfile.getGroupId(mDevice1)).thenReturn(-1);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
+ when(mAssistant.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED}))
+ .thenReturn(deviceList);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
+ mHandler.handleDeviceConnected(mCachedDevice1, /* userTriggered= */ true);
+ shadowOf(Looper.getMainLooper()).idle();
+ List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
+ assertThat(childFragments).isEmpty();
+ verify(mCachedDevice1).setActive();
+ }
+
+ @Test
public void handleUserTriggeredLeaDeviceConnected_noSharingTwoLeaDevices_showJoinDialog() {
setUpBroadcast(false);
ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
@@ -288,6 +306,8 @@
assertThat(listener).isNotNull();
listener.onShareClick();
verify(mBroadcast).startPrivateBroadcast();
+ listener.onCancelClick();
+ verify(mCachedDevice1).setActive();
}
@Test
@@ -330,6 +350,8 @@
1));
AudioSharingJoinDialogFragment.DialogEventListener listener = fragment.getListener();
assertThat(listener).isNotNull();
+ listener.onCancelClick();
+ verify(mAssistant, never()).addSource(mDevice1, mMetadata, /* isGroupOp= */ false);
listener.onShareClick();
verify(mAssistant).addSource(mDevice1, mMetadata, /* isGroupOp= */ false);
}
@@ -397,7 +419,7 @@
@Test
public void handleNonLeaDeviceConnected_sharing_showStopDialog() {
setUpBroadcast(true);
- ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice2);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1);
when(mAssistant.getDevicesMatchingConnectionStates(
new int[] {BluetoothProfile.STATE_CONNECTED}))
.thenReturn(deviceList);
@@ -447,6 +469,23 @@
}
@Test
+ public void handleLeaDeviceConnected_noSharingLeaDeviceInErrorState_doNothing() {
+ setUpBroadcast(false);
+ when(mCachedDevice1.getGroupId()).thenReturn(-1);
+ when(mLeAudioProfile.getGroupId(mDevice1)).thenReturn(-1);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
+ when(mAssistant.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED}))
+ .thenReturn(deviceList);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
+ mHandler.handleDeviceConnected(mCachedDevice1, /* userTriggered= */ false);
+ shadowOf(Looper.getMainLooper()).idle();
+ List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
+ assertThat(childFragments).isEmpty();
+ verify(mCachedDevice1, never()).setActive();
+ }
+
+ @Test
public void handleLeaDeviceConnected_noSharingTwoLeaDevices_showJoinDialog() {
setUpBroadcast(false);
ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
@@ -487,6 +526,8 @@
assertThat(listener).isNotNull();
listener.onShareClick();
verify(mBroadcast).startPrivateBroadcast();
+ listener.onCancelClick();
+ verify(mCachedDevice1, never()).setActive();
}
@Test
@@ -529,6 +570,8 @@
1));
AudioSharingJoinDialogFragment.DialogEventListener listener = fragment.getListener();
assertThat(listener).isNotNull();
+ listener.onCancelClick();
+ verify(mAssistant, never()).addSource(mDevice1, mMetadata, /* isGroupOp= */ false);
listener.onShareClick();
verify(mAssistant).addSource(mDevice1, mMetadata, /* isGroupOp= */ false);
}
@@ -605,10 +648,55 @@
}
@Test
+ public void closeOpeningDialogsForLeaDevice_unattachedFragment_doNothing() {
+ mParentFragment = new Fragment();
+ mHandler = new AudioSharingDialogHandler(mContext, mParentFragment);
+ mHandler.closeOpeningDialogsForLeaDevice(mCachedDevice1);
+ shadowOf(Looper.getMainLooper()).idle();
+ verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
+ }
+
+ @Test
+ public void closeOpeningDialogsForLeaDevice_closeDisconnectDialog() {
+ // Show disconnect dialog
+ setUpBroadcast(true);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3, mDevice4);
+ when(mAssistant.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED}))
+ .thenReturn(deviceList);
+ when(mAssistant.getAllSources(mDevice1)).thenReturn(ImmutableList.of());
+ when(mAssistant.getAllSources(mDevice3)).thenReturn(ImmutableList.of(mState));
+ when(mAssistant.getAllSources(mDevice4)).thenReturn(ImmutableList.of(mState));
+ mHandler.handleDeviceConnected(mCachedDevice1, /* userTriggered= */ false);
+ shadowOf(Looper.getMainLooper()).idle();
+ assertThat(mParentFragment.getChildFragmentManager().getFragments())
+ .comparingElementsUsing(TAG_EQUALS)
+ .containsExactly(AudioSharingDisconnectDialogFragment.tag());
+ // Close opening dialogs
+ mHandler.closeOpeningDialogsForLeaDevice(mCachedDevice1);
+ shadowOf(Looper.getMainLooper()).idle();
+ assertThat(mParentFragment.getChildFragmentManager().getFragments()).isEmpty();
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_AUTO_DISMISS,
+ SettingsEnums.DIALOG_AUDIO_SHARING_SWITCH_DEVICE);
+ }
+
+ @Test
+ public void closeOpeningDialogsForNonLeaDevice_unattachedFragment_doNothing() {
+ mParentFragment = new Fragment();
+ mHandler = new AudioSharingDialogHandler(mContext, mParentFragment);
+ mHandler.closeOpeningDialogsForNonLeaDevice(mCachedDevice2);
+ shadowOf(Looper.getMainLooper()).idle();
+ verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
+ }
+
+ @Test
public void closeOpeningDialogsForNonLeaDevice_closeStopDialog() {
// Show stop dialog
setUpBroadcast(true);
- ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice2);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1);
when(mAssistant.getDevicesMatchingConnectionStates(
new int[] {BluetoothProfile.STATE_CONNECTED}))
.thenReturn(deviceList);
@@ -678,6 +766,34 @@
}
@Test
+ public void onBroadcastStartFailed_logAction() {
+ setUpBroadcast(false);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
+ when(mAssistant.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED}))
+ .thenReturn(deviceList);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of());
+ mHandler.handleDeviceConnected(mCachedDevice1, /* userTriggered= */ false);
+ shadowOf(Looper.getMainLooper()).idle();
+ List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
+ assertThat(childFragments)
+ .comparingElementsUsing(TAG_EQUALS)
+ .containsExactly(AudioSharingJoinDialogFragment.tag());
+ AudioSharingJoinDialogFragment fragment =
+ (AudioSharingJoinDialogFragment) Iterables.getOnlyElement(childFragments);
+ AudioSharingJoinDialogFragment.DialogEventListener listener = fragment.getListener();
+ assertThat(listener).isNotNull();
+ listener.onShareClick();
+
+ mHandler.mBroadcastCallback.onBroadcastStartFailed(/* reason= */ 1);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_START_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+ }
+
+ @Test
public void onPlaybackStarted_addSource() {
setUpBroadcast(false);
ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1, mDevice3);
@@ -706,15 +822,41 @@
}
@Test
+ public void onBroadcastStopFailed_logAction() {
+ setUpBroadcast(true);
+ ImmutableList<BluetoothDevice> deviceList = ImmutableList.of(mDevice1);
+ when(mAssistant.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED}))
+ .thenReturn(deviceList);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(mState));
+ mHandler.handleDeviceConnected(mCachedDevice2, /* userTriggered= */ false);
+ shadowOf(Looper.getMainLooper()).idle();
+ List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
+ assertThat(childFragments)
+ .comparingElementsUsing(TAG_EQUALS)
+ .containsExactly(AudioSharingStopDialogFragment.tag());
+
+ AudioSharingStopDialogFragment fragment =
+ (AudioSharingStopDialogFragment) Iterables.getOnlyElement(childFragments);
+ AudioSharingStopDialogFragment.DialogEventListener listener = fragment.getListener();
+ assertThat(listener).isNotNull();
+ listener.onStopSharingClick();
+
+ mHandler.mBroadcastCallback.onBroadcastStopFailed(/* reason= */ 1);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_STOP_FAILED,
+ SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+ }
+
+ @Test
public void testBluetoothLeBroadcastCallbacks_doNothing() {
mHandler.mBroadcastCallback.onBroadcastStarted(/* reason= */ 1, /* broadcastId= */ 1);
- mHandler.mBroadcastCallback.onBroadcastStopped(/* reason= */ 1, /* broadcastId= */ 1);
mHandler.mBroadcastCallback.onBroadcastMetadataChanged(/* reason= */ 1, mMetadata);
mHandler.mBroadcastCallback.onBroadcastUpdated(/* reason= */ 1, /* broadcastId= */ 1);
mHandler.mBroadcastCallback.onPlaybackStarted(/* reason= */ 1, /* broadcastId= */ 1);
mHandler.mBroadcastCallback.onPlaybackStopped(/* reason= */ 1, /* broadcastId= */ 1);
- mHandler.mBroadcastCallback.onBroadcastStartFailed(/* reason= */ 1);
- mHandler.mBroadcastCallback.onBroadcastStopFailed(/* reason= */ 1);
mHandler.mBroadcastCallback.onBroadcastUpdateFailed(/* reason= */ 1, /* broadcastId= */ 1);
verify(mAssistant, never())
@@ -723,6 +865,7 @@
any(BluetoothLeBroadcastMetadata.class),
anyBoolean());
verify(mAssistant, never()).removeSource(any(BluetoothDevice.class), anyInt());
+ verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
}
private void setUpBroadcast(boolean isBroadcasting) {
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java
index 6b984af..86b0d65 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java
@@ -154,6 +154,23 @@
}
@Test
+ public void onCreateDialog_unattachedFragment_dialogNotExist() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mDeviceItems = new ArrayList<>();
+ mDeviceItems.add(TEST_DEVICE_ITEM1);
+ mDeviceItems.add(TEST_DEVICE_ITEM2);
+ AudioSharingDisconnectDialogFragment.show(
+ new Fragment(),
+ mDeviceItems,
+ mCachedDevice3,
+ EMPTY_EVENT_LISTENER,
+ TEST_EVENT_DATA_LIST);
+ shadowMainLooper().idle();
+ AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+ }
+
+ @Test
public void onCreateDialog_flagOn_dialogShowBtnForTwoDevices() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
mDeviceItems = new ArrayList<>();
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java
index 13ea965..2310d75 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java
@@ -164,6 +164,20 @@
}
@Test
+ public void onCreateDialog_unattachedFragment_dialogNotExist() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ AudioSharingJoinDialogFragment.show(
+ new Fragment(),
+ new ArrayList<>(),
+ mCachedDevice2,
+ EMPTY_EVENT_LISTENER,
+ TEST_EVENT_DATA_LIST);
+ shadowMainLooper().idle();
+ AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+ }
+
+ @Test
public void onCreateDialog_flagOn_dialogShowTextForSingleDevice() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
AudioSharingJoinDialogFragment.show(
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceControllerTest.java
new file mode 100644
index 0000000..618e021
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceControllerTest.java
@@ -0,0 +1,319 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+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.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothLeBroadcast;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.bluetooth.BluetoothStatusCodes;
+import android.content.Context;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.bluetooth.Utils;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+import com.android.settingslib.bluetooth.VolumeControlProfile;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+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.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 org.robolectric.shadows.ShadowLooper;
+
+import java.util.concurrent.Executor;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothAdapter.class,
+ ShadowBluetoothUtils.class,
+ })
+public class AudioSharingNamePreferenceControllerTest {
+ private static final String PREF_KEY = "audio_sharing_stream_name";
+ private static final String BROADCAST_NAME = "broadcast_name";
+ private static final CharSequence UPDATED_NAME = "updated_name";
+
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Spy Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private LocalBluetoothLeBroadcast mBroadcast;
+ @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
+ @Mock private VolumeControlProfile mVolumeControl;
+ @Mock private LocalBluetoothManager mLocalBtManager;
+ @Mock private BluetoothEventManager mEventManager;
+ @Mock private LocalBluetoothProfileManager mProfileManager;
+ @Mock private PreferenceScreen mScreen;
+ private AudioSharingNamePreferenceController mController;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private Lifecycle mLifecycle;
+ private LifecycleOwner mLifecycleOwner;
+ private AudioSharingNamePreference mPreference;
+ private FakeFeatureFactory mFeatureFactory;
+
+ @Before
+ public void setUp() {
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+ mShadowBluetoothAdapter.setEnabled(true);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
+ mLocalBtManager = Utils.getLocalBtManager(mContext);
+ when(mLocalBtManager.getEventManager()).thenReturn(mEventManager);
+ when(mLocalBtManager.getProfileManager()).thenReturn(mProfileManager);
+ when(mProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
+ when(mProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(mAssistant);
+ when(mProfileManager.getVolumeControlProfile()).thenReturn(mVolumeControl);
+ when(mBroadcast.isProfileReady()).thenReturn(true);
+ when(mAssistant.isProfileReady()).thenReturn(true);
+ when(mVolumeControl.isProfileReady()).thenReturn(true);
+ when(mBroadcast.isProfileReady()).thenReturn(true);
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ mLifecycleOwner = () -> mLifecycle;
+ mLifecycle = new Lifecycle(mLifecycleOwner);
+ mController = new AudioSharingNamePreferenceController(mContext, PREF_KEY);
+ mPreference = spy(new AudioSharingNamePreference(mContext));
+ when(mScreen.findPreference(PREF_KEY)).thenReturn(mPreference);
+ }
+
+ @Test
+ public void getAvailabilityStatus_flagOn_available() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_flagOff_unsupported() {
+ 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_SHARING);
+ mController.onStart(mLifecycleOwner);
+ verify(mBroadcast, never())
+ .registerServiceCallBack(
+ any(Executor.class), any(BluetoothLeBroadcast.Callback.class));
+ }
+
+ @Test
+ public void onStart_flagOn_registerCallbacks() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStart(mLifecycleOwner);
+ verify(mBroadcast)
+ .registerServiceCallBack(
+ any(Executor.class), any(BluetoothLeBroadcast.Callback.class));
+ }
+
+ @Test
+ public void onStart_flagOn_serviceNotReady_registerCallbacks() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ when(mBroadcast.isProfileReady()).thenReturn(false);
+ mController.onStart(mLifecycleOwner);
+ verify(mProfileManager)
+ .addServiceListener(any(LocalBluetoothProfileManager.ServiceListener.class));
+ }
+
+ @Test
+ public void onServiceConnected_removeCallbacks() {
+ mController.onServiceConnected();
+ verify(mProfileManager)
+ .removeServiceListener(any(LocalBluetoothProfileManager.ServiceListener.class));
+ }
+
+ @Test
+ public void onStop_flagOff_doNothing() {
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStart(mLifecycleOwner);
+ mController.onStop(mLifecycleOwner);
+ verify(mBroadcast, never())
+ .unregisterServiceCallBack(any(BluetoothLeBroadcast.Callback.class));
+ }
+
+ @Test
+ public void onStop_flagOn_unregisterCallbacks() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStart(mLifecycleOwner);
+ mController.onStop(mLifecycleOwner);
+ verify(mBroadcast).unregisterServiceCallBack(any(BluetoothLeBroadcast.Callback.class));
+ }
+
+ @Test
+ public void displayPreference_updateName_showIcon() {
+ when(mBroadcast.getBroadcastName()).thenReturn(BROADCAST_NAME);
+ when(mBroadcast.isEnabled(any())).thenReturn(true);
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mPreference.getText()).isEqualTo(BROADCAST_NAME);
+ assertThat(mPreference.getSummary()).isEqualTo(BROADCAST_NAME);
+ verify(mPreference).setValidator(any());
+ verify(mPreference).setShowQrCodeIcon(true);
+ }
+
+ @Test
+ public void displayPreference_updateName_hideIcon() {
+ when(mBroadcast.getBroadcastName()).thenReturn(BROADCAST_NAME);
+ when(mBroadcast.isEnabled(any())).thenReturn(false);
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mPreference.getText()).isEqualTo(BROADCAST_NAME);
+ assertThat(mPreference.getSummary()).isEqualTo(BROADCAST_NAME);
+ verify(mPreference).setValidator(any());
+ verify(mPreference).setShowQrCodeIcon(false);
+ }
+
+ @Test
+ public void onPreferenceChange_noChange_doNothing() {
+ when(mPreference.getSummary()).thenReturn(BROADCAST_NAME);
+ mController.displayPreference(mScreen);
+ boolean changed = mController.onPreferenceChange(mPreference, BROADCAST_NAME);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast, never()).setBroadcastName(anyString());
+ verify(mBroadcast, never()).setProgramInfo(anyString());
+ verify(mBroadcast, never()).updateBroadcast();
+ verify(mFeatureFactory.metricsFeatureProvider, never()).action(any(), anyInt(), anyInt());
+
+ assertThat(changed).isFalse();
+ }
+
+ @Test
+ public void onPreferenceChange_changed_updateName_broadcasting() {
+ when(mPreference.getSummary()).thenReturn(BROADCAST_NAME);
+ when(mBroadcast.isEnabled(any())).thenReturn(true);
+ mController.displayPreference(mScreen);
+ boolean changed = mController.onPreferenceChange(mPreference, UPDATED_NAME);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast).setBroadcastName(UPDATED_NAME.toString());
+ verify(mBroadcast).setProgramInfo(UPDATED_NAME.toString());
+ verify(mBroadcast).updateBroadcast();
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_AUDIO_STREAM_NAME_UPDATED, 1);
+ assertThat(changed).isTrue();
+ }
+
+ @Test
+ public void onPreferenceChange_changed_updateName_notBroadcasting() {
+ when(mPreference.getSummary()).thenReturn(BROADCAST_NAME);
+ when(mBroadcast.isEnabled(any())).thenReturn(false);
+ mController.displayPreference(mScreen);
+ boolean changed = mController.onPreferenceChange(mPreference, UPDATED_NAME);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast).setBroadcastName(UPDATED_NAME.toString());
+ verify(mBroadcast).setProgramInfo(UPDATED_NAME.toString());
+ verify(mBroadcast, never()).updateBroadcast();
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_AUDIO_STREAM_NAME_UPDATED, 0);
+ assertThat(changed).isTrue();
+ }
+
+ @Test
+ public void unrelatedCallbacks_doNotUpdateIcon() {
+ mController.displayPreference(mScreen);
+ mController.mBroadcastCallback.onBroadcastStartFailed(/* reason= */ 0);
+ mController.mBroadcastCallback.onBroadcastStarted(/* reason= */ 0, /* broadcastId= */ 0);
+ mController.mBroadcastCallback.onBroadcastStopFailed(/* reason= */ 0);
+ mController.mBroadcastCallback.onBroadcastUpdateFailed(
+ /* reason= */ 0, /* broadcastId= */ 0);
+ mController.mBroadcastCallback.onBroadcastUpdated(/* reason= */ 0, /* broadcastId= */ 0);
+ mController.mBroadcastCallback.onPlaybackStarted(/* reason= */ 0, /* broadcastId= */ 0);
+ mController.mBroadcastCallback.onPlaybackStopped(/* reason= */ 0, /* broadcastId= */ 0);
+
+ ShadowLooper.idleMainLooper();
+ // Should be called once in displayPreference, but not called after callbacks
+ verify(mPreference).setShowQrCodeIcon(anyBoolean());
+ }
+
+ @Test
+ public void broadcastOnCallback_updateIcon() {
+ mController.displayPreference(mScreen);
+ mController.mBroadcastCallback.onBroadcastMetadataChanged(
+ /* broadcastId= */ 0, mock(BluetoothLeBroadcastMetadata.class));
+
+ ShadowLooper.idleMainLooper();
+
+ // Should be called twice, in displayPreference and also after callback
+ verify(mPreference, times(2)).setShowQrCodeIcon(anyBoolean());
+ }
+
+ @Test
+ public void broadcastStopCallback_updateIcon() {
+ mController.displayPreference(mScreen);
+ mController.mBroadcastCallback.onBroadcastStopped(/* reason= */ 0, /* broadcastId= */ 0);
+
+ ShadowLooper.idleMainLooper();
+
+ // Should be called twice, in displayPreference and also after callback
+ verify(mPreference, times(2)).setShowQrCodeIcon(anyBoolean());
+ }
+
+ @Test
+ public void idTextValid_emptyString() {
+ boolean valid = mController.isTextValid("");
+
+ assertThat(valid).isFalse();
+ }
+
+ @Test
+ public void idTextValid_validName() {
+ boolean valid = mController.isTextValid("valid name");
+
+ assertThat(valid).isTrue();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceTest.java
new file mode 100644
index 0000000..13e2a9d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNamePreferenceTest.java
@@ -0,0 +1,141 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.LinearLayout;
+
+import androidx.preference.PreferenceViewHolder;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.SettingsActivity;
+import com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsQrCodeFragment;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioSharingNamePreferenceTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private Context mContext;
+ private AudioSharingNamePreference mPreference;
+
+ @Before
+ public void setup() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mPreference = spy(new AudioSharingNamePreference(mContext, null));
+ }
+
+ @Test
+ public void initialize_correctLayout() {
+ assertThat(mPreference.getLayoutResource())
+ .isEqualTo(
+ com.android.settingslib.widget.preference.twotarget.R.layout
+ .preference_two_target);
+ assertThat(mPreference.getWidgetLayoutResource())
+ .isEqualTo(R.layout.preference_widget_qrcode);
+ }
+
+ @Test
+ public void onBindViewHolder_correctLayout_noQrCodeButton() {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ View view = inflater.inflate(mPreference.getLayoutResource(), null);
+ LinearLayout widgetView = view.findViewById(android.R.id.widget_frame);
+ assertThat(widgetView).isNotNull();
+ inflater.inflate(mPreference.getWidgetLayoutResource(), widgetView, true);
+
+ var holder = PreferenceViewHolder.createInstanceForTests(view);
+ mPreference.setShowQrCodeIcon(false);
+ mPreference.onBindViewHolder(holder);
+
+ ImageButton shareButton = (ImageButton) holder.findViewById(R.id.button_icon);
+ View divider =
+ holder.findViewById(
+ com.android.settingslib.widget.preference.twotarget.R.id
+ .two_target_divider);
+
+ assertThat(shareButton).isNotNull();
+ assertThat(shareButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(shareButton.hasOnClickListeners()).isFalse();
+ assertThat(divider).isNotNull();
+ assertThat(divider.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void onBindViewHolder_correctLayout_showQrCodeButton() {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ View view = inflater.inflate(mPreference.getLayoutResource(), null);
+ LinearLayout widgetView = view.findViewById(android.R.id.widget_frame);
+ assertThat(widgetView).isNotNull();
+ inflater.inflate(mPreference.getWidgetLayoutResource(), widgetView, true);
+
+ var holder = PreferenceViewHolder.createInstanceForTests(view);
+ mPreference.setShowQrCodeIcon(true);
+ mPreference.onBindViewHolder(holder);
+
+ ImageButton shareButton = (ImageButton) holder.findViewById(R.id.button_icon);
+ View divider =
+ holder.findViewById(
+ com.android.settingslib.widget.preference.twotarget.R.id
+ .two_target_divider);
+
+ assertThat(shareButton).isNotNull();
+ assertThat(shareButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(shareButton.getDrawable()).isNotNull();
+ assertThat(shareButton.hasOnClickListeners()).isTrue();
+ assertThat(divider).isNotNull();
+ assertThat(divider.getVisibility()).isEqualTo(View.VISIBLE);
+
+ // mContext is not an Activity context, calling startActivity() from outside of an Activity
+ // context requires the FLAG_ACTIVITY_NEW_TASK flag, create a mock to avoid this
+ // AndroidRuntimeException.
+ Context activityContext = mock(Context.class);
+ when(mPreference.getContext()).thenReturn(activityContext);
+ shareButton.callOnClick();
+
+ ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(activityContext).startActivity(argumentCaptor.capture());
+
+ Intent intent = argumentCaptor.getValue();
+ assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(AudioStreamsQrCodeFragment.class.getName());
+ assertThat(intent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+ .isEqualTo(R.string.audio_streams_qr_code_page_title);
+ assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, 0))
+ .isEqualTo(SettingsEnums.AUDIO_SHARING_SETTINGS);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidatorTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidatorTest.java
new file mode 100644
index 0000000..ada6117
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingNameTextValidatorTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioSharingNameTextValidatorTest {
+ private AudioSharingNameTextValidator mValidator;
+
+ @Before
+ public void setUp() {
+ mValidator = new AudioSharingNameTextValidator();
+ }
+
+ @Test
+ public void testValidNames() {
+ assertThat(mValidator.isTextValid("ValidName")).isTrue();
+ assertThat(mValidator.isTextValid("12345678")).isTrue();
+ assertThat(mValidator.isTextValid("Name_With_Underscores")).isTrue();
+ assertThat(mValidator.isTextValid("ÄÖÜß")).isTrue();
+ assertThat(mValidator.isTextValid("ThisNameIsExactly32Characters!")).isTrue();
+ }
+
+ @Test
+ public void testInvalidNames() {
+ assertThat(mValidator.isTextValid(null)).isFalse();
+ assertThat(mValidator.isTextValid("")).isFalse();
+ assertThat(mValidator.isTextValid("abc")).isFalse();
+ assertThat(mValidator.isTextValid("ThisNameIsWayTooLongForAnAudioSharingName")).isFalse();
+ assertThat(mValidator.isTextValid("Invalid\uDC00")).isFalse();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java
new file mode 100644
index 0000000..5bfb966
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceControllerTest.java
@@ -0,0 +1,335 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothStatusCodes;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.database.ContentObserver;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.bluetooth.Utils;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+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.ArgumentCaptor;
+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 org.robolectric.shadows.ShadowLooper;
+
+import java.nio.charset.StandardCharsets;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothAdapter.class,
+ ShadowBluetoothUtils.class,
+ })
+public class AudioSharingPasswordPreferenceControllerTest {
+ private static final String PREF_KEY = "audio_sharing_stream_password";
+ private static final String SHARED_PREF_KEY = "default_password";
+ private static final String BROADCAST_PASSWORD = "password";
+ private static final String EDITTEXT_PASSWORD = "edittext_password";
+ private static final String HIDDEN_PASSWORD = "********";
+
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Spy Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private LocalBluetoothLeBroadcast mBroadcast;
+ @Mock private LocalBluetoothManager mLocalBtManager;
+ @Mock private LocalBluetoothProfileManager mProfileManager;
+ @Mock private SharedPreferences mSharedPreferences;
+ @Mock private SharedPreferences.Editor mEditor;
+ @Mock private ContentResolver mContentResolver;
+ @Mock private PreferenceScreen mScreen;
+ private AudioSharingPasswordPreferenceController mController;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private Lifecycle mLifecycle;
+ private LifecycleOwner mLifecycleOwner;
+ private AudioSharingPasswordPreference mPreference;
+ private FakeFeatureFactory mFeatureFactory;
+
+ @Before
+ public void setUp() {
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+ mShadowBluetoothAdapter.setEnabled(true);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mLocalBtManager = Utils.getLocalBtManager(mContext);
+ when(mLocalBtManager.getProfileManager()).thenReturn(mProfileManager);
+ when(mProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ when(mContext.getContentResolver()).thenReturn(mContentResolver);
+ when(mContext.getSharedPreferences(anyString(), anyInt())).thenReturn(mSharedPreferences);
+ when(mSharedPreferences.edit()).thenReturn(mEditor);
+ when(mEditor.putString(anyString(), anyString())).thenReturn(mEditor);
+ mLifecycleOwner = () -> mLifecycle;
+ mLifecycle = new Lifecycle(mLifecycleOwner);
+ mController = new AudioSharingPasswordPreferenceController(mContext, PREF_KEY);
+ mPreference = spy(new AudioSharingPasswordPreference(mContext));
+ when(mScreen.findPreference(PREF_KEY)).thenReturn(mPreference);
+ }
+
+ @Test
+ public void getAvailabilityStatus_flagOn_available() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_flagOff_unsupported() {
+ 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_SHARING);
+ mController.onStart(mLifecycleOwner);
+ verify(mContentResolver, never()).registerContentObserver(any(), anyBoolean(), any());
+ verify(mSharedPreferences, never()).registerOnSharedPreferenceChangeListener(any());
+ }
+
+ @Test
+ public void onStart_flagOn_registerCallbacks() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStart(mLifecycleOwner);
+ verify(mContentResolver).registerContentObserver(any(), anyBoolean(), any());
+ verify(mSharedPreferences).registerOnSharedPreferenceChangeListener(any());
+ }
+
+ @Test
+ public void onStop_flagOff_doNothing() {
+ mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStop(mLifecycleOwner);
+ verify(mContentResolver, never()).unregisterContentObserver(any());
+ verify(mSharedPreferences, never()).unregisterOnSharedPreferenceChangeListener(any());
+ }
+
+ @Test
+ public void onStop_flagOn_registerCallbacks() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStop(mLifecycleOwner);
+ verify(mContentResolver).unregisterContentObserver(any());
+ verify(mSharedPreferences).unregisterOnSharedPreferenceChangeListener(any());
+ }
+
+ @Test
+ public void displayPreference_setupPreference_noPassword() {
+ when(mSharedPreferences.getString(anyString(), anyString())).thenReturn(EDITTEXT_PASSWORD);
+ when(mBroadcast.getBroadcastCode()).thenReturn(new byte[] {});
+
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mPreference.isPassword()).isTrue();
+ assertThat(mPreference.getDialogLayoutResource())
+ .isEqualTo(R.layout.audio_sharing_password_dialog);
+ assertThat(mPreference.getText()).isEqualTo(EDITTEXT_PASSWORD);
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.audio_streams_no_password_summary));
+ verify(mPreference).setValidator(any());
+ verify(mPreference).setOnDialogEventListener(any());
+ }
+
+ @Test
+ public void contentObserver_updatePreferenceOnChange() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ when(mBroadcast.getBroadcastCode())
+ .thenReturn(BROADCAST_PASSWORD.getBytes(StandardCharsets.UTF_8));
+ mController.onStart(mLifecycleOwner);
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+
+ ArgumentCaptor<ContentObserver> observerCaptor =
+ ArgumentCaptor.forClass(ContentObserver.class);
+ verify(mContentResolver)
+ .registerContentObserver(any(), anyBoolean(), observerCaptor.capture());
+
+ var observer = observerCaptor.getValue();
+ assertThat(observer).isNotNull();
+ observer.onChange(true);
+ verify(mPreference).setText(anyString());
+ verify(mPreference).setSummary(anyString());
+ }
+
+ @Test
+ public void sharedPrefChangeListener_updatePreferenceOnChange() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ when(mBroadcast.getBroadcastCode())
+ .thenReturn(BROADCAST_PASSWORD.getBytes(StandardCharsets.UTF_8));
+ mController.onStart(mLifecycleOwner);
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+
+ ArgumentCaptor<SharedPreferences.OnSharedPreferenceChangeListener> captor =
+ ArgumentCaptor.forClass(SharedPreferences.OnSharedPreferenceChangeListener.class);
+ verify(mSharedPreferences).registerOnSharedPreferenceChangeListener(captor.capture());
+
+ var observer = captor.getValue();
+ assertThat(captor).isNotNull();
+ observer.onSharedPreferenceChanged(mSharedPreferences, SHARED_PREF_KEY);
+ verify(mPreference).setText(anyString());
+ verify(mPreference).setSummary(anyString());
+ }
+
+ @Test
+ public void displayPreference_setupPreference_hasPassword() {
+ when(mBroadcast.getBroadcastCode())
+ .thenReturn(BROADCAST_PASSWORD.getBytes(StandardCharsets.UTF_8));
+ mController.displayPreference(mScreen);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(mPreference.isPassword()).isTrue();
+ assertThat(mPreference.getDialogLayoutResource())
+ .isEqualTo(R.layout.audio_sharing_password_dialog);
+ assertThat(mPreference.getText()).isEqualTo(BROADCAST_PASSWORD);
+ assertThat(mPreference.getSummary()).isEqualTo(HIDDEN_PASSWORD);
+ verify(mPreference).setValidator(any());
+ verify(mPreference).setOnDialogEventListener(any());
+ }
+
+ @Test
+ public void onBindDialogView_updatePreference_isBroadcasting_noPassword() {
+ when(mBroadcast.getBroadcastCode()).thenReturn(new byte[] {});
+ when(mBroadcast.isEnabled(any())).thenReturn(true);
+ mController.displayPreference(mScreen);
+ mController.onBindDialogView();
+ ShadowLooper.idleMainLooper();
+
+ verify(mPreference).setEditable(false);
+ verify(mPreference).setChecked(true);
+ }
+
+ @Test
+ public void onBindDialogView_updatePreference_isNotBroadcasting_hasPassword() {
+ when(mBroadcast.getBroadcastCode())
+ .thenReturn(BROADCAST_PASSWORD.getBytes(StandardCharsets.UTF_8));
+ mController.displayPreference(mScreen);
+ mController.onBindDialogView();
+ ShadowLooper.idleMainLooper();
+
+ verify(mPreference).setEditable(true);
+ verify(mPreference).setChecked(false);
+ }
+
+ @Test
+ public void onPreferenceDataChanged_isBroadcasting_doNothing() {
+ when(mBroadcast.isEnabled(any())).thenReturn(true);
+ mController.displayPreference(mScreen);
+ mController.onPreferenceDataChanged(BROADCAST_PASSWORD, /* isPublicBroadcast= */ false);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast, never()).setBroadcastCode(any());
+ verify(mFeatureFactory.metricsFeatureProvider, never()).action(any(), anyInt(), anyInt());
+ }
+
+ @Test
+ public void onPreferenceDataChanged_noChange_doNothing() {
+ when(mSharedPreferences.getString(anyString(), anyString())).thenReturn(EDITTEXT_PASSWORD);
+ when(mBroadcast.getBroadcastCode()).thenReturn(new byte[] {});
+ mController.displayPreference(mScreen);
+ mController.onPreferenceDataChanged(EDITTEXT_PASSWORD, /* isPublicBroadcast= */ true);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast, never()).setBroadcastCode(any());
+ verify(mFeatureFactory.metricsFeatureProvider, never()).action(any(), anyInt(), anyInt());
+ }
+
+ @Test
+ public void onPreferenceDataChanged_updateToNonPublicBroadcast() {
+ when(mSharedPreferences.getString(anyString(), anyString())).thenReturn(EDITTEXT_PASSWORD);
+ when(mBroadcast.getBroadcastCode()).thenReturn(new byte[] {});
+ mController.displayPreference(mScreen);
+ mController.onPreferenceDataChanged(BROADCAST_PASSWORD, /* isPublicBroadcast= */ false);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast).setBroadcastCode(BROADCAST_PASSWORD.getBytes(StandardCharsets.UTF_8));
+ verify(mEditor).putString(anyString(), eq(BROADCAST_PASSWORD));
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_AUDIO_STREAM_PASSWORD_UPDATED, 0);
+ }
+
+ @Test
+ public void onPreferenceDataChanged_updateToPublicBroadcast() {
+ when(mSharedPreferences.getString(anyString(), anyString())).thenReturn(EDITTEXT_PASSWORD);
+ when(mBroadcast.getBroadcastCode())
+ .thenReturn(BROADCAST_PASSWORD.getBytes(StandardCharsets.UTF_8));
+ mController.displayPreference(mScreen);
+ mController.onPreferenceDataChanged(EDITTEXT_PASSWORD, /* isPublicBroadcast= */ true);
+ ShadowLooper.idleMainLooper();
+
+ verify(mBroadcast).setBroadcastCode("".getBytes(StandardCharsets.UTF_8));
+ verify(mEditor, never()).putString(anyString(), eq(EDITTEXT_PASSWORD));
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(mContext, SettingsEnums.ACTION_AUDIO_STREAM_PASSWORD_UPDATED, 1);
+ }
+
+ @Test
+ public void idTextValid_emptyString() {
+ boolean valid = mController.isTextValid("");
+
+ assertThat(valid).isFalse();
+ }
+
+ @Test
+ public void idTextValid_validPassword() {
+ boolean valid = mController.isTextValid(BROADCAST_PASSWORD);
+
+ assertThat(valid).isTrue();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java
new file mode 100644
index 0000000..0b87e8c
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordPreferenceTest.java
@@ -0,0 +1,215 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.EditText;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioSharingPasswordPreferenceTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final String EDIT_TEXT_CONTENT = "text";
+ private Context mContext;
+ private AudioSharingPasswordPreference mPreference;
+
+ @Before
+ public void setup() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mPreference = new AudioSharingPasswordPreference(mContext, null);
+ }
+
+ @Test
+ public void onBindDialogView_correctLayout() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ 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);
+
+ assertThat(editText).isNotNull();
+ assertThat(checkBox).isNotNull();
+ assertThat(dialogMessage).isNotNull();
+ }
+
+ @Test
+ public void setEditable_true() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ 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);
+
+ mPreference.setEditable(true);
+
+ assertThat(editText).isNotNull();
+ assertThat(editText.isEnabled()).isTrue();
+ assertThat(editText.getAlpha()).isEqualTo(1.0f);
+ assertThat(checkBox).isNotNull();
+ assertThat(checkBox.isEnabled()).isTrue();
+ assertThat(dialogMessage).isNotNull();
+ assertThat(dialogMessage.getVisibility()).isEqualTo(GONE);
+ }
+
+ @Test
+ public void setEditable_false() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ 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);
+
+ mPreference.setEditable(false);
+
+ assertThat(editText).isNotNull();
+ assertThat(editText.isEnabled()).isFalse();
+ assertThat(editText.getAlpha()).isLessThan(1.0f);
+ assertThat(checkBox).isNotNull();
+ assertThat(checkBox.isEnabled()).isFalse();
+ assertThat(dialogMessage).isNotNull();
+ assertThat(dialogMessage.getVisibility()).isEqualTo(VISIBLE);
+ }
+
+ @Test
+ public void setChecked_true() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ CheckBox checkBox = view.findViewById(R.id.audio_sharing_stream_password_checkbox);
+
+ mPreference.setChecked(true);
+
+ assertThat(checkBox).isNotNull();
+ assertThat(checkBox.isChecked()).isTrue();
+ }
+
+ @Test
+ public void setChecked_false() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ CheckBox checkBox = view.findViewById(R.id.audio_sharing_stream_password_checkbox);
+
+ mPreference.setChecked(false);
+
+ assertThat(checkBox).isNotNull();
+ assertThat(checkBox.isChecked()).isFalse();
+ }
+
+ @Test
+ public void onDialogEventListener_onClick_positiveButton() {
+ AudioSharingPasswordPreference.OnDialogEventListener listener =
+ mock(AudioSharingPasswordPreference.OnDialogEventListener.class);
+ mPreference.setOnDialogEventListener(listener);
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ EditText editText = view.findViewById(android.R.id.edit);
+ assertThat(editText).isNotNull();
+ editText.setText(EDIT_TEXT_CONTENT);
+
+ mPreference.onClick(mock(DialogInterface.class), DialogInterface.BUTTON_POSITIVE);
+
+ verify(listener).onBindDialogView();
+ verify(listener).onPreferenceDataChanged(eq(EDIT_TEXT_CONTENT), anyBoolean());
+ }
+
+ @Test
+ public void onDialogEventListener_onClick_negativeButton_doNothing() {
+ AudioSharingPasswordPreference.OnDialogEventListener listener =
+ mock(AudioSharingPasswordPreference.OnDialogEventListener.class);
+ mPreference.setOnDialogEventListener(listener);
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+
+ EditText editText = view.findViewById(android.R.id.edit);
+ assertThat(editText).isNotNull();
+ editText.setText(EDIT_TEXT_CONTENT);
+
+ mPreference.onClick(mock(DialogInterface.class), DialogInterface.BUTTON_NEGATIVE);
+
+ verify(listener).onBindDialogView();
+ verify(listener, never()).onPreferenceDataChanged(anyString(), anyBoolean());
+ }
+
+ @Test
+ public void onPrepareDialogBuilder_editable_doNothing() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+ mPreference.setEditable(true);
+
+ var dialogBuilder = mock(AlertDialog.Builder.class);
+ mPreference.onPrepareDialogBuilder(
+ dialogBuilder, mock(DialogInterface.OnClickListener.class));
+
+ verify(dialogBuilder, never()).setPositiveButton(any(), any());
+ }
+
+ @Test
+ public void onPrepareDialogBuilder_notEditable_disableButton() {
+ View view =
+ LayoutInflater.from(mContext).inflate(R.layout.audio_sharing_password_dialog, null);
+ mPreference.onBindDialogView(view);
+ mPreference.setEditable(false);
+
+ var dialogBuilder = mock(AlertDialog.Builder.class);
+ mPreference.onPrepareDialogBuilder(
+ dialogBuilder, mock(DialogInterface.OnClickListener.class));
+
+ verify(dialogBuilder).setPositiveButton(any(), any());
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidatorTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidatorTest.java
new file mode 100644
index 0000000..5c96fe1
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingPasswordValidatorTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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.connecteddevice.audiosharing;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioSharingPasswordValidatorTest {
+ private AudioSharingPasswordValidator mValidator;
+
+ @Before
+ public void setUp() {
+ mValidator = new AudioSharingPasswordValidator();
+ }
+
+ @Test
+ public void testValidPasswords() {
+ assertThat(mValidator.isTextValid("1234")).isTrue();
+ assertThat(mValidator.isTextValid("Password")).isTrue();
+ assertThat(mValidator.isTextValid("SecurePass123!")).isTrue();
+ assertThat(mValidator.isTextValid("ÄÖÜß")).isTrue();
+ assertThat(mValidator.isTextValid("1234567890abcdef")).isTrue();
+ }
+
+ @Test
+ public void testInvalidPasswords() {
+ assertThat(mValidator.isTextValid(null)).isFalse();
+ assertThat(mValidator.isTextValid("")).isFalse();
+ assertThat(mValidator.isTextValid("abc")).isFalse();
+ assertThat(mValidator.isTextValid("ThisIsAVeryLongPasswordThatExceedsSixteenOctets"))
+ .isFalse();
+ assertThat(mValidator.isTextValid("Invalid\uDC00")).isFalse();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java
index b6babfb..c0af09f 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java
@@ -149,6 +149,20 @@
}
@Test
+ public void onCreateDialog_unattachedFragment_dialogNotExist() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ AudioSharingStopDialogFragment.show(
+ new Fragment(),
+ ImmutableList.of(TEST_DEVICE_ITEM2),
+ mCachedDevice1,
+ EMPTY_EVENT_LISTENER,
+ TEST_EVENT_DATA_LIST);
+ shadowMainLooper().idle();
+ AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+ }
+
+ @Test
public void onCreateDialog_oneDeviceInSharing_showDialogWithCorrectMessage() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
AudioSharingStopDialogFragment.show(
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 45d99c7..d68b68b 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java
@@ -30,6 +30,7 @@
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;
@@ -39,6 +40,7 @@
import android.bluetooth.BluetoothLeBroadcast;
import android.bluetooth.BluetoothLeBroadcastAssistant;
import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothStatusCodes;
import android.content.BroadcastReceiver;
@@ -431,6 +433,38 @@
}
@Test
+ public void onPlaybackStarted_notInit_noDialog() {
+ FeatureFlagUtils.setEnabled(
+ mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
+ when(mBtnView.isEnabled()).thenReturn(true);
+ when(mAssistant.getDevicesMatchingConnectionStates(
+ new int[] {BluetoothProfile.STATE_CONNECTED}))
+ .thenReturn(ImmutableList.of(mDevice2, mDevice1));
+ doNothing().when(mBroadcast).startPrivateBroadcast();
+ mController =
+ new AudioSharingSwitchBarController(
+ mContext,
+ mSwitchBar,
+ new AudioSharingSwitchBarController.OnAudioSharingStateChangedListener() {
+ @Override
+ public void onAudioSharingStateChanged() {}
+
+ @Override
+ public void onAudioSharingProfilesConnected() {}
+ });
+ mController.onCheckedChanged(mBtnView, /* isChecked= */ true);
+ verify(mBroadcast).startPrivateBroadcast();
+ mController.mBroadcastCallback.onPlaybackStarted(0, 0);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(any(Context.class), eq(SettingsEnums.ACTION_AUTO_JOIN_AUDIO_SHARING));
+
+ List<Fragment> childFragments = mParentFragment.getChildFragmentManager().getFragments();
+ assertThat(childFragments).isEmpty();
+ }
+
+ @Test
public void onPlaybackStarted_showJoinAudioSharingDialog() {
FeatureFlagUtils.setEnabled(
mContext, FeatureFlagUtils.SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, true);
@@ -485,6 +519,11 @@
shadowOf(Looper.getMainLooper()).idle();
assertThat(mSwitchBar.isChecked()).isFalse();
assertThat(mOnAudioSharingStateChanged).isFalse();
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_START_FAILED,
+ SettingsEnums.AUDIO_SHARING_SETTINGS);
when(mBroadcast.isEnabled(any())).thenReturn(true);
mController.mBroadcastCallback.onBroadcastStarted(/* reason= */ 1, /* broadcastId= */ 1);
@@ -497,6 +536,11 @@
shadowOf(Looper.getMainLooper()).idle();
assertThat(mSwitchBar.isChecked()).isTrue();
assertThat(mOnAudioSharingStateChanged).isFalse();
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_STOP_FAILED,
+ SettingsEnums.AUDIO_SHARING_SETTINGS);
when(mBroadcast.isEnabled(any())).thenReturn(false);
mController.mBroadcastCallback.onBroadcastStopped(/* reason= */ 1, /* broadcastId= */ 1);
@@ -517,4 +561,43 @@
verify(mSwitchBar, never()).setChecked(anyBoolean());
assertThat(mOnAudioSharingStateChanged).isFalse();
}
+
+ @Test
+ public void testBluetoothLeBroadcastAssistantCallbacks_logAction() {
+ BluetoothLeBroadcastMetadata metadata = mock(BluetoothLeBroadcastMetadata.class);
+ mController.mBroadcastAssistantCallback.onSourceAddFailed(
+ mDevice1, metadata, /* reason= */ 1);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ mContext,
+ SettingsEnums.ACTION_AUDIO_SHARING_JOIN_FAILED,
+ SettingsEnums.AUDIO_SHARING_SETTINGS);
+ }
+
+ @Test
+ public void testBluetoothLeBroadcastAssistantCallbacks_doNothing() {
+ BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
+ BluetoothLeBroadcastMetadata metadata = mock(BluetoothLeBroadcastMetadata.class);
+
+ // Do nothing
+ mController.mBroadcastAssistantCallback.onReceiveStateChanged(
+ mDevice1, /* sourceId= */ 1, state);
+ mController.mBroadcastAssistantCallback.onSearchStarted(/* reason= */ 1);
+ 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(
+ mDevice1, /* sourceId= */ 1, /* reason= */ 1);
+ mController.mBroadcastAssistantCallback.onSourceModified(
+ mDevice1, /* sourceId= */ 1, /* reason= */ 1);
+ mController.mBroadcastAssistantCallback.onSourceModifyFailed(
+ mDevice1, /* sourceId= */ 1, /* reason= */ 1);
+ mController.mBroadcastAssistantCallback.onSourceFound(metadata);
+ mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1);
+ verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceBadCodeStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceBadCodeStateTest.java
index 2fddff5..391a7b1 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceBadCodeStateTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceBadCodeStateTest.java
@@ -20,22 +20,45 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.testutils.FakeFeatureFactory;
+
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;
@RunWith(RobolectricTestRunner.class)
public class AddSourceBadCodeStateTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private AudioStreamPreference mPreference;
+ @Mock private AudioStreamsProgressCategoryController mController;
+ @Mock private AudioStreamsHelper mHelper;
+ private FakeFeatureFactory mFeatureFactory;
private AddSourceBadCodeState mInstance;
@Before
public void setUp() {
- mInstance = AddSourceBadCodeState.getInstance();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ mInstance = new AddSourceBadCodeState();
}
@Test
public void testGetInstance() {
+ mInstance = AddSourceBadCodeState.getInstance();
assertThat(mInstance).isNotNull();
assertThat(mInstance).isInstanceOf(SyncedState.class);
}
@@ -55,4 +78,19 @@
AudioStreamsProgressCategoryController.AudioStreamState
.ADD_SOURCE_BAD_CODE);
}
+
+ @Test
+ public void testPerformAction() {
+ when(mPreference.getContext()).thenReturn(mContext);
+ when(mPreference.getSourceOriginForLogging())
+ .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);
+
+ mInstance.performAction(mPreference, mController, mHelper);
+
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_FAILED_BAD_CODE),
+ eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceFailedStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceFailedStateTest.java
index d8b1fcf..917d8de 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceFailedStateTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceFailedStateTest.java
@@ -20,22 +20,45 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.testutils.FakeFeatureFactory;
+
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;
@RunWith(RobolectricTestRunner.class)
public class AddSourceFailedStateTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private AudioStreamPreference mPreference;
+ @Mock private AudioStreamsProgressCategoryController mController;
+ @Mock private AudioStreamsHelper mHelper;
+ private FakeFeatureFactory mFeatureFactory;
private AddSourceFailedState mInstance;
@Before
public void setUp() {
- mInstance = AddSourceFailedState.getInstance();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ mInstance = new AddSourceFailedState();
}
@Test
public void testGetInstance() {
+ mInstance = AddSourceFailedState.getInstance();
assertThat(mInstance).isNotNull();
assertThat(mInstance).isInstanceOf(SyncedState.class);
}
@@ -54,4 +77,19 @@
.isEqualTo(
AudioStreamsProgressCategoryController.AudioStreamState.ADD_SOURCE_FAILED);
}
+
+ @Test
+ public void testPerformAction() {
+ when(mPreference.getContext()).thenReturn(mContext);
+ when(mPreference.getSourceOriginForLogging())
+ .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);
+
+ mInstance.performAction(mPreference, mController, mHelper);
+
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_FAILED_OTHER),
+ eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseStateTest.java
index 6e5342b..ce21658 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseStateTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AddSourceWaitForResponseStateTest.java
@@ -22,11 +22,21 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
import org.junit.Rule;
@@ -36,27 +46,41 @@
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowAlertDialog;
import org.robolectric.shadows.ShadowLooper;
import java.util.concurrent.TimeUnit;
@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowAlertDialog.class,
+ })
public class AddSourceWaitForResponseStateTest {
- private static final int BROADCAST_ID = 1;
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final int BROADCAST_ID = 1;
+ private final Context mContext = spy(ApplicationProvider.getApplicationContext());
@Mock private AudioStreamPreference mMockPreference;
@Mock private AudioStreamsProgressCategoryController mMockController;
@Mock private AudioStreamsHelper mMockHelper;
@Mock private BluetoothLeBroadcastMetadata mMockMetadata;
+ @Mock private AudioStreamsRepository mMockRepository;
+ private FakeFeatureFactory mFeatureFactory;
private AddSourceWaitForResponseState mInstance;
@Before
public void setUp() {
- mInstance = AddSourceWaitForResponseState.getInstance();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ mInstance = new AddSourceWaitForResponseState();
+ when(mMockPreference.getContext()).thenReturn(mContext);
+ when(mMockPreference.getSourceOriginForLogging())
+ .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);
}
@Test
public void testGetInstance() {
+ mInstance = AddSourceWaitForResponseState.getInstance();
assertThat(mInstance).isNotNull();
assertThat(mInstance).isInstanceOf(AudioStreamStateHandler.class);
}
@@ -93,11 +117,18 @@
public void testPerformAction_metadataIsNotNull_addSource() {
when(mMockPreference.getAudioStreamMetadata()).thenReturn(mMockMetadata);
when(mMockPreference.getSourceOriginForLogging())
- .thenReturn(SourceOriginForLogging.UNKNOWN);
+ .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);
+ mInstance.setAudioStreamsRepositoryForTesting(mMockRepository);
mInstance.performAction(mMockPreference, mMockController, mMockHelper);
verify(mMockHelper).addSource(mMockMetadata);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN),
+ eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
+ verify(mMockRepository).cacheMetadata(mMockMetadata);
verify(mMockController, never()).handleSourceFailedToConnect(anyInt());
}
@@ -108,12 +139,28 @@
when(mMockPreference.getAudioStreamState()).thenReturn(mInstance.getStateEnum());
when(mMockPreference.getAudioStreamBroadcastId()).thenReturn(BROADCAST_ID);
when(mMockPreference.getSourceOriginForLogging())
- .thenReturn(SourceOriginForLogging.UNKNOWN);
+ .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);
+ when(mMockController.getFragment()).thenReturn(mock(AudioStreamsDashboardFragment.class));
+ mInstance.setAudioStreamsRepositoryForTesting(mMockRepository);
mInstance.performAction(mMockPreference, mMockController, mMockHelper);
ShadowLooper.idleMainLooper(ADD_SOURCE_WAIT_FOR_RESPONSE_TIMEOUT_MILLIS, TimeUnit.SECONDS);
verify(mMockHelper).addSource(mMockMetadata);
verify(mMockController).handleSourceFailedToConnect(BROADCAST_ID);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN),
+ eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
+ verify(mMockRepository).cacheMetadata(mMockMetadata);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_FAILED_TIMEOUT),
+ eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
+ verify(mContext).getString(R.string.audio_streams_dialog_stream_is_not_available);
+ verify(mContext).getString(R.string.audio_streams_is_not_playing);
+ verify(mContext).getString(R.string.audio_streams_dialog_close);
}
}
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 cbf1432..c6fb361 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
@@ -16,22 +16,36 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothLeBroadcastAssistant;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.content.Context;
import android.view.View;
+import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
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.ShadowThreadUtils;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
+import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.ActionButtonsPreference;
import org.junit.After;
@@ -39,14 +53,17 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.Executor;
@RunWith(RobolectricTestRunner.class)
@Config(
@@ -63,14 +80,23 @@
@Mock private AudioStreamsHelper mAudioStreamsHelper;
@Mock private PreferenceScreen mScreen;
@Mock private BluetoothLeBroadcastReceiveState mBroadcastReceiveState;
+ @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
+ @Mock private AudioStreamsRepository mRepository;
@Mock private ActionButtonsPreference mPreference;
+ private Lifecycle mLifecycle;
+ private LifecycleOwner mLifecycleOwner;
+ private FakeFeatureFactory mFeatureFactory;
private AudioStreamButtonController mController;
@Before
public void setUp() {
ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(mAssistant);
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new AudioStreamButtonController(mContext, KEY);
mController.init(BROADCAST_ID);
+ mLifecycleOwner = () -> mLifecycle;
+ mLifecycle = new Lifecycle(mLifecycleOwner);
when(mScreen.findPreference(KEY)).thenReturn(mPreference);
when(mPreference.getContext()).thenReturn(mContext);
when(mPreference.setButton1Text(anyInt())).thenReturn(mPreference);
@@ -86,6 +112,40 @@
}
@Test
+ public void onStart_registerCallbacks() {
+ mController.onStart(mLifecycleOwner);
+ verify(mAssistant)
+ .registerServiceCallBack(
+ any(Executor.class), any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
+ public void onStart_profileNull_doNothing() {
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(null);
+ mController = new AudioStreamButtonController(mContext, KEY);
+ mController.onStart(mLifecycleOwner);
+ verify(mAssistant, never())
+ .registerServiceCallBack(
+ any(Executor.class), any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
+ public void onStop_unregisterCallbacks() {
+ mController.onStop(mLifecycleOwner);
+ verify(mAssistant)
+ .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
+ public void onStop_profileNull_doNothing() {
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(null);
+ mController = new AudioStreamButtonController(mContext, KEY);
+ mController.onStop(mLifecycleOwner);
+ verify(mAssistant, never())
+ .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
public void testDisplayPreference_sourceConnected_setDisconnectButton() {
when(mAudioStreamsHelper.getAllConnectedSources())
.thenReturn(List.of(mBroadcastReceiveState));
@@ -96,18 +156,133 @@
verify(mPreference).setButton1Enabled(true);
verify(mPreference).setButton1Text(R.string.audio_streams_disconnect);
verify(mPreference).setButton1Icon(com.android.settings.R.drawable.ic_settings_close);
- verify(mPreference).setButton1OnClickListener(any(View.OnClickListener.class));
+
+ ArgumentCaptor<View.OnClickListener> listenerCaptor =
+ ArgumentCaptor.forClass(View.OnClickListener.class);
+ verify(mPreference).setButton1OnClickListener(listenerCaptor.capture());
+ var listener = listenerCaptor.getValue();
+
+ assertThat(listener).isNotNull();
+ listener.onClick(mock(View.class));
+ verify(mAudioStreamsHelper).removeSource(BROADCAST_ID);
+ verify(mPreference).setButton1Enabled(false);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(any(), eq(SettingsEnums.ACTION_AUDIO_STREAM_LEAVE_BUTTON_CLICK));
}
@Test
public void testDisplayPreference_sourceNotConnected_setConnectButton() {
when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(Collections.emptyList());
+ mController.setAudioStreamsRepositoryForTesting(mRepository);
+ var metadataToRejoin = mock(BluetoothLeBroadcastMetadata.class);
+ when(mRepository.getSavedMetadata(any(), anyInt())).thenReturn(metadataToRejoin);
mController.displayPreference(mScreen);
verify(mPreference).setButton1Enabled(true);
verify(mPreference).setButton1Text(R.string.audio_streams_connect);
verify(mPreference).setButton1Icon(com.android.settings.R.drawable.ic_add_24dp);
- verify(mPreference).setButton1OnClickListener(any(View.OnClickListener.class));
+
+ ArgumentCaptor<View.OnClickListener> listenerCaptor =
+ ArgumentCaptor.forClass(View.OnClickListener.class);
+ verify(mPreference).setButton1OnClickListener(listenerCaptor.capture());
+ var listener = listenerCaptor.getValue();
+
+ assertThat(listener).isNotNull();
+ listener.onClick(mock(View.class));
+ verify(mAudioStreamsHelper).addSource(metadataToRejoin);
+ verify(mPreference).setButton1Enabled(false);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(any(), eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN), anyInt());
+ }
+
+ @Test
+ public void testCallback_onSourceRemoved_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(Collections.emptyList());
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onSourceRemoved(
+ mock(BluetoothDevice.class), /* sourceId= */ 0, /* reason= */ 0);
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mPreference, times(2)).setButton1Enabled(true);
+ verify(mPreference, times(2)).setButton1Text(R.string.audio_streams_connect);
+ verify(mPreference, times(2)).setButton1Icon(com.android.settings.R.drawable.ic_add_24dp);
+ }
+
+ @Test
+ public void testCallback_onSourceRemovedFailed_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources())
+ .thenReturn(List.of(mBroadcastReceiveState));
+ when(mBroadcastReceiveState.getBroadcastId()).thenReturn(BROADCAST_ID);
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onSourceRemoveFailed(
+ mock(BluetoothDevice.class), /* sourceId= */ 0, /* reason= */ 0);
+
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(any(), eq(SettingsEnums.ACTION_AUDIO_STREAM_LEAVE_FAILED));
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mPreference, times(2)).setButton1Enabled(true);
+ verify(mPreference, times(2)).setButton1Text(R.string.audio_streams_disconnect);
+ verify(mPreference, times(2))
+ .setButton1Icon(com.android.settings.R.drawable.ic_settings_close);
+ }
+
+ @Test
+ public void testCallback_onReceiveStateChanged_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources())
+ .thenReturn(List.of(mBroadcastReceiveState));
+ when(mBroadcastReceiveState.getBroadcastId()).thenReturn(BROADCAST_ID);
+ BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(state.getBisSyncState()).thenReturn(bisSyncState);
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onReceiveStateChanged(
+ mock(BluetoothDevice.class), /* sourceId= */ 0, state);
+
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(any(), eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_SUCCEED), anyInt());
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mPreference, times(2)).setButton1Enabled(true);
+ verify(mPreference, times(2)).setButton1Text(R.string.audio_streams_disconnect);
+ verify(mPreference, times(2))
+ .setButton1Icon(com.android.settings.R.drawable.ic_settings_close);
+ }
+
+ @Test
+ public void testCallback_onSourceAddFailed_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(Collections.emptyList());
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onSourceAddFailed(
+ mock(BluetoothDevice.class),
+ mock(BluetoothLeBroadcastMetadata.class),
+ /* reason= */ 0);
+
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(any(), eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_FAILED_OTHER), anyInt());
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mPreference, times(2)).setButton1Enabled(true);
+ verify(mPreference, times(2)).setButton1Text(R.string.audio_streams_connect);
+ verify(mPreference, times(2)).setButton1Icon(com.android.settings.R.drawable.ic_add_24dp);
+ }
+
+ @Test
+ public void testCallback_onSourceLost_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(Collections.emptyList());
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 0);
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mPreference, times(2)).setButton1Enabled(true);
+ verify(mPreference, times(2)).setButton1Text(R.string.audio_streams_connect);
+ verify(mPreference, times(2)).setButton1Icon(com.android.settings.R.drawable.ic_add_24dp);
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java
index e967a12..1f05cbb 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogActivityTest.java
@@ -18,28 +18,132 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothStatusCodes;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
+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 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.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothAdapter.class,
+ ShadowBluetoothUtils.class,
+ })
public class AudioStreamConfirmDialogActivityTest {
+ @Rule public final MockitoRule mocks = MockitoJUnit.rule();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Mock private LocalBluetoothManager mLocalBluetoothManager;
+ @Mock private LocalBluetoothProfileManager mLocalBluetoothProfileManager;
+ @Mock private LocalBluetoothLeBroadcast mBroadcast;
+ @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
+ @Mock private VolumeControlProfile mVolumeControl;
+ private ShadowBluetoothAdapter mShadowBluetoothAdapter;
private AudioStreamConfirmDialogActivity mActivity;
@Before
public void setUp() {
- mActivity = Robolectric.buildActivity(AudioStreamConfirmDialogActivity.class).get();
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+ mShadowBluetoothAdapter.setEnabled(true);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastSourceSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ mShadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported(
+ BluetoothStatusCodes.FEATURE_SUPPORTED);
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
+ when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager);
+ when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast);
+ when(mLocalBluetoothProfileManager.getLeAudioBroadcastAssistantProfile())
+ .thenReturn(mAssistant);
+ when(mLocalBluetoothProfileManager.getVolumeControlProfile()).thenReturn(mVolumeControl);
+ when(mBroadcast.isProfileReady()).thenReturn(true);
+ when(mAssistant.isProfileReady()).thenReturn(true);
+ when(mVolumeControl.isProfileReady()).thenReturn(true);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowBluetoothUtils.reset();
}
@Test
public void isValidFragment_returnsTrue() {
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
assertThat(mActivity.isValidFragment(AudioStreamConfirmDialog.class.getName())).isTrue();
}
@Test
public void isValidFragment_returnsFalse() {
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
assertThat(mActivity.isValidFragment("")).isFalse();
}
+
+ @Test
+ public void isToolbarEnabled_returnsFalse() {
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
+ assertThat(mActivity.isToolbarEnabled()).isFalse();
+ }
+
+ @Test
+ public void setupActivity_serviceNotReady_registerCallback() {
+ when(mBroadcast.isProfileReady()).thenReturn(false);
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
+
+ verify(mLocalBluetoothProfileManager).addServiceListener(any());
+ }
+
+ @Test
+ public void setupActivity_serviceNotReady_registerCallback_onServiceCallback() {
+ when(mBroadcast.isProfileReady()).thenReturn(false);
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
+
+ verify(mLocalBluetoothProfileManager).addServiceListener(any());
+
+ when(mBroadcast.isProfileReady()).thenReturn(true);
+ mActivity.onServiceConnected();
+ verify(mLocalBluetoothProfileManager).removeServiceListener(any());
+
+ mActivity.onServiceDisconnected();
+ // Do nothing.
+ }
+
+ @Test
+ public void setupActivity_serviceReady_doNothing() {
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
+
+ verify(mLocalBluetoothProfileManager, never()).addServiceListener(any());
+ }
+
+ @Test
+ public void onStop_unregisterCallback() {
+ mActivity = Robolectric.setupActivity(AudioStreamConfirmDialogActivity.class);
+ mActivity.onStop();
+
+ verify(mLocalBluetoothProfileManager).removeServiceListener(any());
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogTest.java
index c7aafe8..601c432 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamConfirmDialogTest.java
@@ -16,14 +16,21 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static android.app.settings.SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_LISTEN;
+
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamConfirmDialog.DEFAULT_DEVICE_NAME;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsDashboardFragment.KEY_BROADCAST_METADATA;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
+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 static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
+import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@@ -127,6 +134,8 @@
assertThat(mDialogFragment.getMetricsCategory())
.isEqualTo(SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_FEATURE_UNSUPPORTED);
+ assertThat(mDialogFragment.mActivity).isNotNull();
+ mDialogFragment.mActivity = spy(mDialogFragment.mActivity);
var dialog = mDialogFragment.getDialog();
assertThat(dialog).isNotNull();
@@ -152,6 +161,10 @@
assertThat(rightButton).isNotNull();
assertThat(rightButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(rightButton.hasOnClickListeners()).isTrue();
+
+ rightButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+ verify(mDialogFragment.mActivity).finish();
}
@Test
@@ -165,6 +178,8 @@
assertThat(mDialogFragment.getMetricsCategory())
.isEqualTo(SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_NO_LE_DEVICE);
+ assertThat(mDialogFragment.mActivity).isNotNull();
+ mDialogFragment.mActivity = spy(mDialogFragment.mActivity);
var dialog = mDialogFragment.getDialog();
assertThat(dialog).isNotNull();
@@ -184,11 +199,20 @@
View leftButton = dialog.findViewById(R.id.left_button);
assertThat(leftButton).isNotNull();
assertThat(leftButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(leftButton.hasOnClickListeners()).isTrue();
+
+ leftButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+
Button rightButton = dialog.findViewById(R.id.right_button);
assertThat(rightButton).isNotNull();
assertThat(rightButton.getText())
.isEqualTo(mContext.getString(R.string.audio_streams_dialog_no_le_device_button));
assertThat(rightButton.hasOnClickListeners()).isTrue();
+
+ rightButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+ verify(mDialogFragment.mActivity, times(2)).finish();
}
@Test
@@ -207,6 +231,8 @@
assertThat(mDialogFragment.getMetricsCategory())
.isEqualTo(SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_DATA_ERROR);
+ assertThat(mDialogFragment.mActivity).isNotNull();
+ mDialogFragment.mActivity = spy(mDialogFragment.mActivity);
var dialog = mDialogFragment.getDialog();
assertThat(dialog).isNotNull();
@@ -231,6 +257,10 @@
assertThat(rightButton).isNotNull();
assertThat(rightButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(rightButton.hasOnClickListeners()).isTrue();
+
+ rightButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+ verify(mDialogFragment.mActivity).finish();
}
@Test
@@ -252,6 +282,8 @@
assertThat(mDialogFragment.getMetricsCategory())
.isEqualTo(SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_DATA_ERROR);
+ assertThat(mDialogFragment.mActivity).isNotNull();
+ mDialogFragment.mActivity = spy(mDialogFragment.mActivity);
var dialog = mDialogFragment.getDialog();
assertThat(dialog).isNotNull();
@@ -276,6 +308,10 @@
assertThat(rightButton).isNotNull();
assertThat(rightButton.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(rightButton.hasOnClickListeners()).isTrue();
+
+ rightButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+ verify(mDialogFragment.mActivity).finish();
}
@Test
@@ -283,7 +319,7 @@
List<BluetoothDevice> devices = new ArrayList<>();
devices.add(mBluetoothDevice);
when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
- when(mBluetoothDevice.getAlias()).thenReturn(DEVICE_NAME);
+ when(mBluetoothDevice.getAlias()).thenReturn("");
Intent intent = new Intent();
intent.putExtra(KEY_BROADCAST_METADATA, VALID_METADATA);
@@ -296,9 +332,11 @@
shadowMainLooper().idle();
assertThat(mDialogFragment.getMetricsCategory())
- .isEqualTo(SettingsEnums.DIALOG_AUDIO_STREAM_CONFIRM_LISTEN);
+ .isEqualTo(DIALOG_AUDIO_STREAM_CONFIRM_LISTEN);
+ assertThat(mDialogFragment.mActivity).isNotNull();
+ mDialogFragment.mActivity = spy(mDialogFragment.mActivity);
- var dialog = mDialogFragment.getDialog();
+ Dialog dialog = mDialogFragment.getDialog();
assertThat(dialog).isNotNull();
assertThat(dialog.isShowing()).isTrue();
TextView title = dialog.findViewById(R.id.dialog_title);
@@ -311,17 +349,27 @@
assertThat(subtitle1.getVisibility()).isEqualTo(View.VISIBLE);
TextView subtitle2 = dialog.findViewById(R.id.dialog_subtitle_2);
assertThat(subtitle2).isNotNull();
+ var defaultName = mContext.getString(DEFAULT_DEVICE_NAME);
assertThat(subtitle2.getText())
.isEqualTo(
mContext.getString(
- R.string.audio_streams_dialog_control_volume, DEVICE_NAME));
+ R.string.audio_streams_dialog_control_volume, defaultName));
View leftButton = dialog.findViewById(R.id.left_button);
assertThat(leftButton).isNotNull();
assertThat(leftButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(leftButton.hasOnClickListeners()).isTrue();
+
+ leftButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+
Button rightButton = dialog.findViewById(R.id.right_button);
assertThat(rightButton).isNotNull();
assertThat(rightButton.getText())
.isEqualTo(mContext.getString(R.string.audio_streams_dialog_listen));
assertThat(rightButton.hasOnClickListeners()).isTrue();
+
+ rightButton.callOnClick();
+ assertThat(dialog.isShowing()).isFalse();
+ verify(mDialogFragment.mActivity, times(2)).finish();
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragmentTest.java
index 724c772..46d481a 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamDetailsFragmentTest.java
@@ -16,22 +16,48 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamDetailsFragment.BROADCAST_ID_ARG;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamDetailsFragment.BROADCAST_NAME_ARG;
+
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.verify;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.test.core.app.ApplicationProvider;
+
import com.android.settings.R;
+import com.android.settingslib.core.AbstractPreferenceController;
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;
@RunWith(RobolectricTestRunner.class)
public class AudioStreamDetailsFragmentTest {
- private AudioStreamDetailsFragment mFragment;
+ @Rule public final MockitoRule mocks = MockitoJUnit.rule();
+ private static final String BROADCAST_NAME = "name";
+ private static final int BROADCAST_ID = 1;
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private AudioStreamHeaderController mHeaderController;
+ @Mock private AudioStreamButtonController mButtonController;
+ private TestFragment mFragment;
@Before
public void setUp() {
- mFragment = new AudioStreamDetailsFragment();
+ mFragment = spy(new TestFragment());
+ doReturn(mHeaderController).when(mFragment).use(AudioStreamHeaderController.class);
+ doReturn(mButtonController).when(mFragment).use(AudioStreamButtonController.class);
}
@Test
@@ -44,4 +70,29 @@
public void getLogTag_returnsCorrectTag() {
assertThat(mFragment.getLogTag()).isEqualTo(AudioStreamDetailsFragment.TAG);
}
+
+ @Test
+ public void getMetricsCategory_returnsCorrectEnum() {
+ assertThat(mFragment.getMetricsCategory()).isEqualTo(SettingsEnums.AUDIO_STREAM_DETAIL);
+ }
+
+ @Test
+ public void onAttach_getArguments() {
+ Bundle bundle = new Bundle();
+ bundle.putString(BROADCAST_NAME_ARG, BROADCAST_NAME);
+ bundle.putInt(BROADCAST_ID_ARG, BROADCAST_ID);
+ mFragment.setArguments(bundle);
+
+ mFragment.onAttach(mContext);
+
+ verify(mButtonController).init(BROADCAST_ID);
+ verify(mHeaderController).init(mFragment, BROADCAST_NAME, BROADCAST_ID);
+ }
+
+ public static class TestFragment extends AudioStreamDetailsFragment {
+ @Override
+ protected <T extends AbstractPreferenceController> T use(Class<T> clazz) {
+ return super.use(clazz);
+ }
+ }
}
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 0cd5d61..327090d 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
@@ -19,12 +19,20 @@
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamHeaderController.AUDIO_STREAM_HEADER_LISTENING_NOW_SUMMARY;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamHeaderController.AUDIO_STREAM_HEADER_NOT_LISTENING_SUMMARY;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothLeBroadcastAssistant;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.content.Context;
+import android.graphics.drawable.Drawable;
+import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
@@ -32,6 +40,8 @@
import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowEntityHeaderController;
import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
+import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.LayoutPreference;
import org.junit.After;
@@ -45,8 +55,10 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.Executor;
@RunWith(RobolectricTestRunner.class)
@Config(
@@ -65,15 +77,21 @@
@Mock private AudioStreamsHelper mAudioStreamsHelper;
@Mock private PreferenceScreen mScreen;
@Mock private BluetoothLeBroadcastReceiveState mBroadcastReceiveState;
+ @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
@Mock private AudioStreamDetailsFragment mFragment;
@Mock private LayoutPreference mPreference;
@Mock private EntityHeaderController mHeaderController;
+ private Lifecycle mLifecycle;
+ private LifecycleOwner mLifecycleOwner;
private AudioStreamHeaderController mController;
@Before
public void setUp() {
ShadowEntityHeaderController.setUseMock(mHeaderController);
ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(mAssistant);
+ mLifecycleOwner = () -> mLifecycle;
+ mLifecycle = new Lifecycle(mLifecycleOwner);
mController = new AudioStreamHeaderController(mContext, KEY);
mController.init(mFragment, BROADCAST_NAME, BROADCAST_ID);
when(mScreen.findPreference(KEY)).thenReturn(mPreference);
@@ -88,6 +106,40 @@
}
@Test
+ public void onStart_registerCallbacks() {
+ mController.onStart(mLifecycleOwner);
+ verify(mAssistant)
+ .registerServiceCallBack(
+ any(Executor.class), any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
+ public void onStart_profileNull_doNothing() {
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(null);
+ mController = new AudioStreamHeaderController(mContext, KEY);
+ mController.onStart(mLifecycleOwner);
+ verify(mAssistant, never())
+ .registerServiceCallBack(
+ any(Executor.class), any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
+ public void onStop_unregisterCallbacks() {
+ mController.onStop(mLifecycleOwner);
+ verify(mAssistant)
+ .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
+ public void onStop_profileNull_doNothing() {
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(null);
+ mController = new AudioStreamHeaderController(mContext, KEY);
+ mController.onStop(mLifecycleOwner);
+ verify(mAssistant, never())
+ .unregisterServiceCallBack(any(BluetoothLeBroadcastAssistant.Callback.class));
+ }
+
+ @Test
public void testDisplayPreference_sourceConnected_setSummary() {
when(mAudioStreamsHelper.getAllConnectedSources())
.thenReturn(List.of(mBroadcastReceiveState));
@@ -96,9 +148,11 @@
mController.displayPreference(mScreen);
verify(mHeaderController).setLabel(BROADCAST_NAME);
+ verify(mHeaderController).setIcon(any(Drawable.class));
verify(mHeaderController)
.setSummary(mContext.getString(AUDIO_STREAM_HEADER_LISTENING_NOW_SUMMARY));
verify(mHeaderController).done(true);
+ verify(mScreen).addPreference(any());
}
@Test
@@ -108,7 +162,54 @@
mController.displayPreference(mScreen);
verify(mHeaderController).setLabel(BROADCAST_NAME);
+ verify(mHeaderController).setIcon(any(Drawable.class));
verify(mHeaderController).setSummary(AUDIO_STREAM_HEADER_NOT_LISTENING_SUMMARY);
verify(mHeaderController).done(true);
+ verify(mScreen).addPreference(any());
+ }
+
+ @Test
+ public void testCallback_onSourceRemoved_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(Collections.emptyList());
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onSourceRemoved(
+ mock(BluetoothDevice.class), /* sourceId= */ 0, /* reason= */ 0);
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mHeaderController, times(2)).setSummary(AUDIO_STREAM_HEADER_NOT_LISTENING_SUMMARY);
+ verify(mHeaderController, times(2)).done(true);
+ }
+
+ @Test
+ public void testCallback_onSourceLost_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(Collections.emptyList());
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1);
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mHeaderController, times(2)).setSummary(AUDIO_STREAM_HEADER_NOT_LISTENING_SUMMARY);
+ verify(mHeaderController, times(2)).done(true);
+ }
+
+ @Test
+ public void testCallback_onReceiveStateChanged_updateButton() {
+ when(mAudioStreamsHelper.getAllConnectedSources())
+ .thenReturn(List.of(mBroadcastReceiveState));
+ when(mBroadcastReceiveState.getBroadcastId()).thenReturn(BROADCAST_ID);
+ BluetoothLeBroadcastReceiveState state = mock(BluetoothLeBroadcastReceiveState.class);
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(state.getBisSyncState()).thenReturn(bisSyncState);
+
+ mController.displayPreference(mScreen);
+ mController.mBroadcastAssistantCallback.onReceiveStateChanged(
+ mock(BluetoothDevice.class), /* sourceId= */ 0, state);
+
+ // Called twice, once in displayPreference, the other one in callback
+ verify(mHeaderController, times(2))
+ .setSummary(mContext.getString(AUDIO_STREAM_HEADER_LISTENING_NOW_SUMMARY));
+ verify(mHeaderController, times(2)).done(true);
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaServiceTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaServiceTest.java
index b184d88..abdd743 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaServiceTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamMediaServiceTest.java
@@ -18,22 +18,29 @@
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamMediaService.BROADCAST_ID;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamMediaService.DEVICES;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamMediaService.LEAVE_BROADCAST_ACTION;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
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.verify;
import static org.mockito.Mockito.when;
import android.app.Notification;
+import android.app.NotificationChannel;
import android.app.NotificationManager;
+import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.content.Intent;
@@ -43,14 +50,20 @@
import android.media.session.ISession;
import android.media.session.ISessionController;
import android.media.session.MediaSessionManager;
+import android.os.Bundle;
+import android.os.IBinder;
import android.os.RemoteException;
import android.platform.test.flag.junit.SetFlagsRule;
import android.util.DisplayMetrics;
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.ShadowBluetoothUtils;
+import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
@@ -72,10 +85,12 @@
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
+import java.util.Set;
@RunWith(RobolectricTestRunner.class)
@Config(
shadows = {
+ ShadowThreadUtils.class,
ShadowBluetoothAdapter.class,
ShadowBluetoothUtils.class,
ShadowAudioStreamsHelper.class,
@@ -83,6 +98,8 @@
public class AudioStreamMediaServiceTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ private static final String CHANNEL_ID = "bluetooth_notification_channel";
+ private static final String DEVICE_NAME = "name";
@Mock private Resources mResources;
@Mock private LocalBluetoothManager mLocalBtManager;
@Mock private LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
@@ -91,17 +108,21 @@
@Mock private MediaSessionManager mMediaSessionManager;
@Mock private BluetoothEventManager mBluetoothEventManager;
@Mock private LocalBluetoothProfileManager mLocalBluetoothProfileManager;
+ @Mock private CachedBluetoothDeviceManager mCachedDeviceManager;
@Mock private VolumeControlProfile mVolumeControlProfile;
+ @Mock private CachedBluetoothDevice mCachedBluetoothDevice;
@Mock private BluetoothDevice mDevice;
@Mock private ISession mISession;
@Mock private ISessionController mISessionController;
@Mock private PackageManager mPackageManager;
@Mock private DisplayMetrics mDisplayMetrics;
@Mock private Context mContext;
+ private FakeFeatureFactory mFeatureFactory;
private AudioStreamMediaService mAudioStreamMediaService;
@Before
public void setUp() {
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(mLeBroadcastAssistant);
ShadowBluetoothAdapter shadowBluetoothAdapter =
@@ -114,6 +135,9 @@
ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
when(mLocalBtManager.getEventManager()).thenReturn(mBluetoothEventManager);
when(mLocalBtManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager);
+ when(mLocalBtManager.getCachedDeviceManager()).thenReturn(mCachedDeviceManager);
+ when(mCachedDeviceManager.findDevice(any())).thenReturn(mCachedBluetoothDevice);
+ when(mCachedBluetoothDevice.getName()).thenReturn(DEVICE_NAME);
when(mLocalBluetoothProfileManager.getVolumeControlProfile())
.thenReturn(mVolumeControlProfile);
@@ -169,6 +193,25 @@
}
@Test
+ public void onCreate_flagOn_createNewChannel() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ when(mNotificationManager.getNotificationChannel(anyString())).thenReturn(null);
+
+ mAudioStreamMediaService.onCreate();
+
+ ArgumentCaptor<NotificationChannel> notificationChannelCapture =
+ ArgumentCaptor.forClass(NotificationChannel.class);
+ verify(mNotificationManager)
+ .createNotificationChannel(notificationChannelCapture.capture());
+ NotificationChannel newChannel = notificationChannelCapture.getValue();
+ assertThat(newChannel).isNotNull();
+ assertThat(newChannel.getId()).isEqualTo(CHANNEL_ID);
+ assertThat(newChannel.getName())
+ .isEqualTo(mContext.getString(com.android.settings.R.string.bluetooth));
+ assertThat(newChannel.getImportance()).isEqualTo(NotificationManager.IMPORTANCE_HIGH);
+ }
+
+ @Test
public void onDestroy_flagOff_doNothing() {
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
@@ -183,8 +226,15 @@
@Test
public void onDestroy_flagOn_cleanup() {
mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ var devices = new ArrayList<BluetoothDevice>();
+ devices.add(mDevice);
+
+ Intent intent = new Intent();
+ intent.putExtra(BROADCAST_ID, 1);
+ intent.putParcelableArrayListExtra(DEVICES, devices);
mAudioStreamMediaService.onCreate();
+ mAudioStreamMediaService.onStartCommand(intent, /* flags= */ 0, /* startId= */ 0);
mAudioStreamMediaService.onDestroy();
verify(mBluetoothEventManager).unregisterCallback(any());
@@ -196,7 +246,6 @@
public void onStartCommand_noBroadcastId_stopSelf() {
mAudioStreamMediaService.onStartCommand(new Intent(), /* flags= */ 0, /* startId= */ 0);
- assertThat(mAudioStreamMediaService.mLocalSession).isNull();
verify(mAudioStreamMediaService).stopSelf();
}
@@ -207,7 +256,6 @@
mAudioStreamMediaService.onStartCommand(intent, /* flags= */ 0, /* startId= */ 0);
- assertThat(mAudioStreamMediaService.mLocalSession).isNull();
verify(mAudioStreamMediaService).stopSelf();
}
@@ -222,12 +270,179 @@
mAudioStreamMediaService.onStartCommand(intent, /* flags= */ 0, /* startId= */ 0);
- assertThat(mAudioStreamMediaService.mLocalSession).isNotNull();
- verify(mAudioStreamMediaService, never()).stopSelf();
+ ArgumentCaptor<Notification> notificationCapture =
+ ArgumentCaptor.forClass(Notification.class);
+ verify(mAudioStreamMediaService).startForeground(anyInt(), notificationCapture.capture());
+ var notification = notificationCapture.getValue();
+ assertThat(notification.getSmallIcon()).isNotNull();
+ assertThat(notification.isStyle(Notification.MediaStyle.class)).isTrue();
- ArgumentCaptor<Notification> notification = ArgumentCaptor.forClass(Notification.class);
- verify(mAudioStreamMediaService).startForeground(anyInt(), notification.capture());
- assertThat(notification.getValue().getSmallIcon()).isNotNull();
- assertThat(notification.getValue().isStyle(Notification.MediaStyle.class)).isTrue();
+ verify(mAudioStreamMediaService, never()).stopSelf();
+ }
+
+ @Test
+ public void assistantCallback_onSourceLost_stopSelf() {
+ mAudioStreamMediaService.onCreate();
+
+ assertThat(mAudioStreamMediaService.mBroadcastAssistantCallback).isNotNull();
+ mAudioStreamMediaService.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 0);
+
+ verify(mAudioStreamMediaService).stopSelf();
+ }
+
+ @Test
+ public void assistantCallback_onSourceRemoved_stopSelf() {
+ mAudioStreamMediaService.onCreate();
+
+ assertThat(mAudioStreamMediaService.mBroadcastAssistantCallback).isNotNull();
+ mAudioStreamMediaService.mBroadcastAssistantCallback.onSourceRemoved(
+ mDevice, /* sourceId= */ 0, /* reason= */ 0);
+
+ verify(mAudioStreamMediaService).stopSelf();
+ }
+
+ @Test
+ public void bluetoothCallback_onBluetoothOff_stopSelf() {
+ mAudioStreamMediaService.onCreate();
+
+ assertThat(mAudioStreamMediaService.mBluetoothCallback).isNotNull();
+ mAudioStreamMediaService.mBluetoothCallback.onBluetoothStateChanged(
+ BluetoothAdapter.STATE_OFF);
+
+ verify(mAudioStreamMediaService).stopSelf();
+ }
+
+ @Test
+ public void bluetoothCallback_onDeviceDisconnect_stopSelf() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ mAudioStreamMediaService.onCreate();
+ assertThat(mAudioStreamMediaService.mBluetoothCallback).isNotNull();
+ mAudioStreamMediaService.onStartCommand(setupIntent(), /* flags= */ 0, /* startId= */ 0);
+
+ mAudioStreamMediaService.mBluetoothCallback.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothAdapter.STATE_DISCONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
+
+ verify(mAudioStreamMediaService).stopSelf();
+ }
+
+ @Test
+ public void bluetoothCallback_onMemberDeviceDisconnect_stopSelf() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+ when(mCachedBluetoothDevice.getDevice()).thenReturn(mock(BluetoothDevice.class));
+ CachedBluetoothDevice member = mock(CachedBluetoothDevice.class);
+ when(mCachedBluetoothDevice.getMemberDevice()).thenReturn(Set.of(member));
+ when(member.getDevice()).thenReturn(mDevice);
+ var devices = new ArrayList<BluetoothDevice>();
+ devices.add(mDevice);
+
+ Intent intent = new Intent();
+ intent.putExtra(BROADCAST_ID, 1);
+ intent.putParcelableArrayListExtra(DEVICES, devices);
+
+ mAudioStreamMediaService.onCreate();
+ assertThat(mAudioStreamMediaService.mBluetoothCallback).isNotNull();
+ mAudioStreamMediaService.onStartCommand(intent, /* flags= */ 0, /* startId= */ 0);
+ mAudioStreamMediaService.mBluetoothCallback.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothAdapter.STATE_DISCONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
+
+ verify(mAudioStreamMediaService).stopSelf();
+ }
+
+ @Test
+ public void mediaSessionCallback_onSeekTo_updateNotification() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+
+ mAudioStreamMediaService.onCreate();
+ mAudioStreamMediaService.onStartCommand(setupIntent(), /* flags= */ 0, /* startId= */ 0);
+ assertThat(mAudioStreamMediaService.mMediaSessionCallback).isNotNull();
+ mAudioStreamMediaService.mMediaSessionCallback.onSeekTo(100);
+
+ verify(mNotificationManager).notify(anyInt(), any());
+ }
+
+ @Test
+ public void mediaSessionCallback_onPause_setVolume() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+
+ mAudioStreamMediaService.onCreate();
+ mAudioStreamMediaService.onStartCommand(setupIntent(), /* flags= */ 0, /* startId= */ 0);
+ assertThat(mAudioStreamMediaService.mMediaSessionCallback).isNotNull();
+ mAudioStreamMediaService.mMediaSessionCallback.onPause();
+
+ verify(mVolumeControlProfile).setDeviceVolume(any(), anyInt(), anyBoolean());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_NOTIFICATION_MUTE_BUTTON_CLICK),
+ eq(1));
+ }
+
+ @Test
+ public void mediaSessionCallback_onPlay_setVolume() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+
+ mAudioStreamMediaService.onCreate();
+ mAudioStreamMediaService.onStartCommand(setupIntent(), /* flags= */ 0, /* startId= */ 0);
+ assertThat(mAudioStreamMediaService.mMediaSessionCallback).isNotNull();
+ mAudioStreamMediaService.mMediaSessionCallback.onPlay();
+
+ verify(mVolumeControlProfile).setDeviceVolume(any(), anyInt(), anyBoolean());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_NOTIFICATION_MUTE_BUTTON_CLICK),
+ eq(0));
+ }
+
+ @Test
+ public void mediaSessionCallback_onCustomAction_leaveBroadcast() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+
+ mAudioStreamMediaService.onCreate();
+ mAudioStreamMediaService.onStartCommand(setupIntent(), /* flags= */ 0, /* startId= */ 0);
+ assertThat(mAudioStreamMediaService.mMediaSessionCallback).isNotNull();
+ mAudioStreamMediaService.mMediaSessionCallback.onCustomAction(
+ LEAVE_BROADCAST_ACTION, Bundle.EMPTY);
+
+ verify(mAudioStreamsHelper).removeSource(anyInt());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_NOTIFICATION_LEAVE_BUTTON_CLICK));
+ }
+
+ @Test
+ public void volumeControlCallback_onDeviceVolumeChanged_updateNotification() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
+
+ mAudioStreamMediaService.onCreate();
+ assertThat(mAudioStreamMediaService.mVolumeControlCallback).isNotNull();
+ mAudioStreamMediaService.onStartCommand(setupIntent(), /* flags= */ 0, /* startId= */ 0);
+ mAudioStreamMediaService.mVolumeControlCallback.onDeviceVolumeChanged(
+ mDevice, /* volume= */ 0);
+
+ verify(mNotificationManager).notify(anyInt(), any());
+ }
+
+ @Test
+ public void onBind_returnNull() {
+ IBinder binder = mAudioStreamMediaService.onBind(new Intent());
+
+ assertThat(binder).isNull();
+ }
+
+ private Intent setupIntent() {
+ when(mCachedBluetoothDevice.getDevice()).thenReturn(mDevice);
+ var devices = new ArrayList<BluetoothDevice>();
+ devices.add(mDevice);
+
+ Intent intent = new Intent();
+ intent.putExtra(BROADCAST_ID, 1);
+ intent.putParcelableArrayListExtra(DEVICES, devices);
+ return intent;
}
}
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
new file mode 100644
index 0000000..adc77a1
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java
@@ -0,0 +1,143 @@
+/*
+ * 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.connecteddevice.audiosharing.audiostreams;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+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.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+
+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;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioStreamStateHandlerTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final int SUMMARY_RES = 1;
+ private static final String SUMMARY = "summary";
+ private final Context mContext = spy(ApplicationProvider.getApplicationContext());
+ @Mock private AudioStreamsProgressCategoryController mController;
+ @Mock private AudioStreamsHelper mHelper;
+ @Mock private AudioStreamPreference mPreference;
+ private AudioStreamStateHandler mHandler;
+
+ @Before
+ public void setUp() {
+ mHandler = spy(new AudioStreamStateHandler());
+ }
+
+ @Test
+ public void testHandleStateChange_noChange_doNothing() {
+ when(mHandler.getStateEnum())
+ .thenReturn(
+ AudioStreamsProgressCategoryController.AudioStreamState
+ .ADD_SOURCE_BAD_CODE);
+ when(mPreference.getAudioStreamState())
+ .thenReturn(
+ AudioStreamsProgressCategoryController.AudioStreamState
+ .ADD_SOURCE_BAD_CODE);
+
+ mHandler.handleStateChange(mPreference, mController, mHelper);
+
+ verify(mPreference, never()).setAudioStreamState(any());
+ verify(mHandler, never()).performAction(any(), any(), any());
+ verify(mPreference, never()).setIsConnected(anyBoolean(), anyString(), any());
+ }
+
+ @Test
+ public void testHandleStateChange_setNewState() {
+ when(mHandler.getStateEnum())
+ .thenReturn(AudioStreamsProgressCategoryController.AudioStreamState.SOURCE_ADDED);
+ when(mPreference.getAudioStreamState())
+ .thenReturn(
+ AudioStreamsProgressCategoryController.AudioStreamState
+ .ADD_SOURCE_BAD_CODE);
+
+ mHandler.handleStateChange(mPreference, mController, mHelper);
+
+ verify(mPreference)
+ .setAudioStreamState(
+ AudioStreamsProgressCategoryController.AudioStreamState.SOURCE_ADDED);
+ verify(mHandler).performAction(any(), any(), any());
+ verify(mPreference).setIsConnected(eq(true), eq(""), eq(null));
+ }
+
+ @Test
+ public void testHandleStateChange_setNewState_newSummary_newListener() {
+ Preference.OnPreferenceClickListener listener =
+ mock(Preference.OnPreferenceClickListener.class);
+ when(mHandler.getStateEnum())
+ .thenReturn(
+ AudioStreamsProgressCategoryController.AudioStreamState
+ .ADD_SOURCE_BAD_CODE);
+ when(mHandler.getSummary()).thenReturn(SUMMARY_RES);
+ when(mHandler.getOnClickListener(any())).thenReturn(listener);
+ when(mPreference.getAudioStreamState())
+ .thenReturn(
+ AudioStreamsProgressCategoryController.AudioStreamState.ADD_SOURCE_FAILED);
+ when(mPreference.getContext()).thenReturn(mContext);
+ doReturn(SUMMARY).when(mContext).getString(anyInt());
+
+ mHandler.handleStateChange(mPreference, mController, mHelper);
+
+ verify(mPreference)
+ .setAudioStreamState(
+ AudioStreamsProgressCategoryController.AudioStreamState
+ .ADD_SOURCE_BAD_CODE);
+ verify(mHandler).performAction(any(), any(), any());
+ verify(mPreference).setIsConnected(eq(false), eq(SUMMARY), eq(listener));
+ }
+
+ @Test
+ public void testGetSummary() {
+ int res = mHandler.getSummary();
+ assertThat(res).isEqualTo(AudioStreamStateHandler.EMPTY_STRING_RES);
+ }
+
+ @Test
+ public void testGetOnClickListener() {
+ Preference.OnPreferenceClickListener listener = mHandler.getOnClickListener(mController);
+ assertThat(listener).isNull();
+ }
+
+ @Test
+ public void testGetStateEnum() {
+ var state = mHandler.getStateEnum();
+ assertThat(state)
+ .isEqualTo(AudioStreamsProgressCategoryController.AudioStreamState.UNKNOWN);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java
index 4403528..d6b99a1 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsActiveDeviceSummaryUpdaterTest.java
@@ -20,6 +20,7 @@
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
@@ -76,25 +77,46 @@
}
@Test
- public void onActiveDeviceChanged_notLeProfile_doNothing() {
- mUpdater.onActiveDeviceChanged(mCachedBluetoothDevice, 0);
+ public void unregister_doNothing() {
+ mUpdater.register(false);
assertThat(mUpdatedSummary).isNull();
}
@Test
- public void onActiveDeviceChanged_leProfile_summaryUpdated() {
+ public void onProfileConnectionStateChanged_notLeAssistProfile_doNothing() {
+ mUpdater.onProfileConnectionStateChanged(mCachedBluetoothDevice, 0, 0);
+
+ assertThat(mUpdatedSummary).isNull();
+ }
+
+ @Test
+ public void onProfileConnectionStateChanged_leAssistantProfile_summaryUpdated() {
ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(
mCachedBluetoothDevice);
when(mCachedBluetoothDevice.getName()).thenReturn(DEVICE_NAME);
- mUpdater.onActiveDeviceChanged(mCachedBluetoothDevice, BluetoothProfile.LE_AUDIO);
+ mUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothAdapter.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
assertThat(mUpdatedSummary).isEqualTo(DEVICE_NAME);
}
@Test
- public void onActiveDeviceChanged_leProfile_noDevice_summaryUpdated() {
- mUpdater.onActiveDeviceChanged(mCachedBluetoothDevice, BluetoothProfile.LE_AUDIO);
+ public void onActiveDeviceChanged_leAssistantProfile_noDevice_summaryUpdated() {
+ mUpdater.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothAdapter.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
+
+ assertThat(mUpdatedSummary)
+ .isEqualTo(mContext.getString(R.string.audio_streams_dialog_no_le_device_title));
+ }
+
+ @Test
+ public void onBluetoothStateOff_summaryUpdated() {
+ mUpdater.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF);
assertThat(mUpdatedSummary)
.isEqualTo(mContext.getString(R.string.audio_streams_dialog_no_le_device_title));
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 e4b6903..0e00309 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
@@ -23,11 +23,13 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
+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.BluetoothProfile;
import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.os.Looper;
@@ -42,6 +44,7 @@
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.settingslib.bluetooth.BluetoothCallback;
import com.android.settingslib.bluetooth.BluetoothEventManager;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
@@ -57,6 +60,7 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -116,7 +120,7 @@
when(mBroadcast.isProfileReady()).thenReturn(true);
when(mAssistant.isProfileReady()).thenReturn(true);
when(mVolumeControl.isProfileReady()).thenReturn(true);
- mController = new AudioStreamsCategoryController(mContext, KEY);
+ mController = spy(new AudioStreamsCategoryController(mContext, KEY));
mPreference = new Preference(mContext);
when(mScreen.findPreference(KEY)).thenReturn(mPreference);
mController.displayPreference(mScreen);
@@ -228,4 +232,21 @@
shadowOf(Looper.getMainLooper()).idle();
assertThat(mPreference.isVisible()).isTrue();
}
+
+ @Test
+ public void onProfileConnectionStateChanged_updateVisibility() {
+ mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_QR_CODE_PRIVATE_BROADCAST_SHARING);
+ ArgumentCaptor<BluetoothCallback> argumentCaptor =
+ ArgumentCaptor.forClass(BluetoothCallback.class);
+ mController.onStart(mLifecycleOwner);
+ verify(mBluetoothEventManager).registerCallback(argumentCaptor.capture());
+
+ BluetoothCallback callback = argumentCaptor.getValue();
+ callback.onProfileConnectionStateChanged(
+ mCachedBluetoothDevice,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT,
+ BluetoothAdapter.STATE_DISCONNECTED);
+
+ verify(mController).updateVisibility();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragmentTest.java
index 9058ab6..dd3d8b7 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDashboardFragmentTest.java
@@ -22,18 +22,25 @@
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.doReturn;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.Activity;
+import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.content.Context;
import android.content.Intent;
+import android.os.Bundle;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
+import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
import org.junit.Before;
@@ -53,12 +60,14 @@
+ "MD:BgNwVGVzdA==;AS:1;PI:A0;NS:1;BS:3;NB:2;SM:BQNUZXN0BARlbmc=;;";
private Context mContext;
+ private FakeFeatureFactory mFeatureFactory;
private AudioStreamsProgressCategoryController mController;
private TestFragment mTestFragment;
@Before
public void setUp() {
mContext = ApplicationProvider.getApplicationContext();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
mTestFragment = spy(new TestFragment());
doReturn(mContext).when(mTestFragment).getContext();
mController = spy(new AudioStreamsProgressCategoryController(mContext, "key"));
@@ -114,6 +123,28 @@
mTestFragment.onActivityResult(
REQUEST_SCAN_BT_BROADCAST_QR_CODE, Activity.RESULT_OK, intent);
verify(mController).setSourceFromQrCode(any(), any());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_QR_CODE_SCAN_SUCCEED),
+ anyInt());
+ }
+
+ @Test
+ public void onAttach_hasArgument() {
+ BluetoothLeBroadcastMetadata data = mock(BluetoothLeBroadcastMetadata.class);
+ Bundle bundle = new Bundle();
+ bundle.putParcelable(KEY_BROADCAST_METADATA, data);
+ mTestFragment.setArguments(bundle);
+
+ mTestFragment.onAttach(mContext);
+
+ verify(mController).setSourceFromQrCode(eq(data), any());
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ any(),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_QR_CODE_SCAN_SUCCEED),
+ anyInt());
}
public static class TestFragment extends AudioStreamsDashboardFragment {
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragmentTest.java
new file mode 100644
index 0000000..efdd389
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsDialogFragmentTest.java
@@ -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.connecteddevice.audiosharing.audiostreams;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowLooper;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowAlertDialog.class,
+ })
+public class AudioStreamsDialogFragmentTest {
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ private AudioStreamsDialogFragment.DialogBuilder mDialogBuilder;
+ private AudioStreamsDialogFragment mFragment;
+
+ @Before
+ public void setUp() {
+ mDialogBuilder = spy(new AudioStreamsDialogFragment.DialogBuilder(mContext));
+ mFragment = new AudioStreamsDialogFragment(mDialogBuilder, SettingsEnums.PAGE_UNKNOWN);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowAlertDialog.reset();
+ }
+
+ @Test
+ public void testGetMetricsCategory() {
+ int dialogId = mFragment.getMetricsCategory();
+
+ assertThat(dialogId).isEqualTo(SettingsEnums.PAGE_UNKNOWN);
+ }
+
+ @Test
+ public void testOnCreateDialog() {
+ mFragment.onCreateDialog(Bundle.EMPTY);
+
+ verify(mDialogBuilder).build();
+ }
+
+ @Test
+ public void testShowDialog_dismissAll() {
+ FragmentController.setupFragment(mFragment);
+ AudioStreamsDialogFragment.show(mFragment, mDialogBuilder, SettingsEnums.PAGE_UNKNOWN);
+ ShadowLooper.idleMainLooper();
+
+ var dialog = ShadowAlertDialog.getLatestAlertDialog();
+ assertThat(dialog).isNotNull();
+ assertThat(dialog.isShowing()).isTrue();
+
+ AudioStreamsDialogFragment.dismissAll(mFragment);
+ assertThat(dialog.isShowing()).isFalse();
+ }
+}
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
new file mode 100644
index 0000000..66ef5fb
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsHelperTest.java
@@ -0,0 +1,239 @@
+/*
+ * 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.connecteddevice.audiosharing.audiostreams;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.testutils.shadow.ShadowThreadUtils;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
+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.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowThreadUtils.class,
+ })
+public class AudioStreamsHelperTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final int GROUP_ID = 1;
+ private static final int BROADCAST_ID_1 = 1;
+ private static final int BROADCAST_ID_2 = 2;
+ private static final String BROADCAST_NAME = "name";
+ private final Context mContext = spy(ApplicationProvider.getApplicationContext());
+ @Mock private LocalBluetoothManager mLocalBluetoothManager;
+ @Mock private LocalBluetoothProfileManager mLocalBluetoothProfileManager;
+ @Mock private LocalBluetoothLeBroadcastAssistant mAssistant;
+ @Mock private CachedBluetoothDeviceManager mDeviceManager;
+ @Mock private BluetoothLeBroadcastMetadata mMetadata;
+ @Mock private CachedBluetoothDevice mCachedDevice;
+ @Mock private BluetoothDevice mDevice;
+ private AudioStreamsHelper mHelper;
+
+ @Before
+ public void setUp() {
+ when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalBluetoothProfileManager);
+ when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(mDeviceManager);
+ when(mLocalBluetoothProfileManager.getLeAudioBroadcastAssistantProfile())
+ .thenReturn(mAssistant);
+ mHelper = spy(new AudioStreamsHelper(mLocalBluetoothManager));
+ }
+
+ @Test
+ public void addSource_noDevice_doNothing() {
+ when(mAssistant.getDevicesMatchingConnectionStates(any()))
+ .thenReturn(Collections.emptyList());
+ mHelper.addSource(mMetadata);
+
+ verify(mAssistant, never()).addSource(any(), any(), anyBoolean());
+ }
+
+ @Test
+ public void addSource_hasDevice() {
+ List<BluetoothDevice> devices = new ArrayList<>();
+ devices.add(mDevice);
+ when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
+ when(mDeviceManager.findDevice(any())).thenReturn(mCachedDevice);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getGroupId()).thenReturn(GROUP_ID);
+
+ mHelper.addSource(mMetadata);
+
+ verify(mAssistant).addSource(eq(mDevice), eq(mMetadata), anyBoolean());
+ }
+
+ @Test
+ public void removeSource_noDevice_doNothing() {
+ when(mAssistant.getDevicesMatchingConnectionStates(any()))
+ .thenReturn(Collections.emptyList());
+ mHelper.removeSource(BROADCAST_ID_1);
+
+ verify(mAssistant, never()).removeSource(any(), anyInt());
+ }
+
+ @Test
+ public void removeSource_noConnectedSource_doNothing() {
+ List<BluetoothDevice> devices = new ArrayList<>();
+ devices.add(mDevice);
+ when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
+ BluetoothLeBroadcastReceiveState source = mock(BluetoothLeBroadcastReceiveState.class);
+ when(source.getBroadcastId()).thenReturn(BROADCAST_ID_2);
+ when(mDeviceManager.findDevice(any())).thenReturn(mCachedDevice);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getGroupId()).thenReturn(GROUP_ID);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(source));
+
+ mHelper.removeSource(BROADCAST_ID_1);
+
+ verify(mAssistant, never()).removeSource(any(), anyInt());
+ }
+
+ @Test
+ public void removeSource_hasConnectedSource() {
+ List<BluetoothDevice> devices = new ArrayList<>();
+ devices.add(mDevice);
+ when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
+ BluetoothLeBroadcastReceiveState source = mock(BluetoothLeBroadcastReceiveState.class);
+ when(source.getBroadcastId()).thenReturn(BROADCAST_ID_2);
+ when(mDeviceManager.findDevice(any())).thenReturn(mCachedDevice);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getGroupId()).thenReturn(GROUP_ID);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(source));
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(source.getBisSyncState()).thenReturn(bisSyncState);
+
+ mHelper.removeSource(BROADCAST_ID_2);
+
+ verify(mAssistant).removeSource(eq(mDevice), anyInt());
+ }
+
+ @Test
+ public void removeSource_memberHasConnectedSource() {
+ List<BluetoothDevice> devices = new ArrayList<>();
+ var memberDevice = mock(BluetoothDevice.class);
+ devices.add(mDevice);
+ devices.add(memberDevice);
+ when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
+ BluetoothLeBroadcastReceiveState source = mock(BluetoothLeBroadcastReceiveState.class);
+ when(source.getBroadcastId()).thenReturn(BROADCAST_ID_2);
+ when(mDeviceManager.findDevice(any())).thenReturn(mCachedDevice);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ var memberCachedDevice = mock(CachedBluetoothDevice.class);
+ when(memberCachedDevice.getDevice()).thenReturn(memberDevice);
+ when(mCachedDevice.getMemberDevice()).thenReturn(ImmutableSet.of(memberCachedDevice));
+ when(mCachedDevice.getGroupId()).thenReturn(GROUP_ID);
+ when(mAssistant.getAllSources(mDevice)).thenReturn(ImmutableList.of());
+ when(mAssistant.getAllSources(memberDevice)).thenReturn(ImmutableList.of(source));
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(source.getBisSyncState()).thenReturn(bisSyncState);
+
+ mHelper.removeSource(BROADCAST_ID_2);
+
+ verify(mAssistant).removeSource(eq(memberDevice), anyInt());
+ }
+
+ @Test
+ public void getAllConnectedSources_noAssistant() {
+ when(mLocalBluetoothProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(null);
+ mHelper = new AudioStreamsHelper(mLocalBluetoothManager);
+
+ assertThat(mHelper.getAllConnectedSources()).isEmpty();
+ }
+
+ @Test
+ public void getAllConnectedSources_returnSource() {
+ List<BluetoothDevice> devices = new ArrayList<>();
+ devices.add(mDevice);
+ when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
+ BluetoothLeBroadcastReceiveState source = mock(BluetoothLeBroadcastReceiveState.class);
+ when(mDeviceManager.findDevice(any())).thenReturn(mCachedDevice);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getGroupId()).thenReturn(GROUP_ID);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(source));
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(source.getBisSyncState()).thenReturn(bisSyncState);
+
+ var list = mHelper.getAllConnectedSources();
+ assertThat(list).isNotEmpty();
+ assertThat(list.get(0)).isEqualTo(source);
+ }
+
+ @Test
+ public void startMediaService_noDevice_doNothing() {
+ mHelper.startMediaService(mContext, BROADCAST_ID_1, BROADCAST_NAME);
+
+ verify(mContext, never()).startService(any());
+ }
+
+ @Test
+ public void startMediaService_hasDevice() {
+ List<BluetoothDevice> devices = new ArrayList<>();
+ devices.add(mDevice);
+ when(mAssistant.getDevicesMatchingConnectionStates(any())).thenReturn(devices);
+ BluetoothLeBroadcastReceiveState source = mock(BluetoothLeBroadcastReceiveState.class);
+ when(mDeviceManager.findDevice(any())).thenReturn(mCachedDevice);
+ when(mCachedDevice.getDevice()).thenReturn(mDevice);
+ when(mCachedDevice.getGroupId()).thenReturn(GROUP_ID);
+ when(mAssistant.getAllSources(any())).thenReturn(ImmutableList.of(source));
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(source.getBisSyncState()).thenReturn(bisSyncState);
+
+ mHelper.startMediaService(mContext, BROADCAST_ID_1, BROADCAST_NAME);
+
+ verify(mContext).startService(any());
+ }
+}
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
new file mode 100644
index 0000000..164c2f0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryCallbackTest.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.connecteddevice.audiosharing.audiostreams;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.bluetooth.BluetoothLeBroadcastReceiveState;
+
+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 java.util.ArrayList;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+public class AudioStreamsProgressCategoryCallbackTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Mock private AudioStreamsProgressCategoryController mController;
+ @Mock private BluetoothDevice mDevice;
+ @Mock private BluetoothLeBroadcastReceiveState mState;
+ @Mock private BluetoothLeBroadcastMetadata mMetadata;
+ private AudioStreamsProgressCategoryCallback mCallback;
+
+ @Before
+ public void setUp() {
+ mCallback = new AudioStreamsProgressCategoryCallback(mController);
+ }
+
+ @Test
+ public void testOnReceiveStateChanged_connected() {
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(mState.getBisSyncState()).thenReturn(bisSyncState);
+ mCallback.onReceiveStateChanged(mDevice, /* sourceId= */ 0, mState);
+
+ verify(mController).handleSourceConnected(any());
+ }
+
+ @Test
+ public void testOnReceiveStateChanged_badCode() {
+ when(mState.getPaSyncState())
+ .thenReturn(BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_SYNCHRONIZED);
+ when(mState.getBigEncryptionState())
+ .thenReturn(BluetoothLeBroadcastReceiveState.BIG_ENCRYPTION_STATE_BAD_CODE);
+ mCallback.onReceiveStateChanged(mDevice, /* sourceId= */ 0, mState);
+
+ verify(mController).handleSourceConnectBadCode(any());
+ }
+
+ @Test
+ public void testOnSearchStartFailed() {
+ mCallback.onSearchStartFailed(/* reason= */ 0);
+
+ verify(mController).showToast(anyString());
+ verify(mController).setScanning(anyBoolean());
+ }
+
+ @Test
+ public void testOnSearchStarted() {
+ mCallback.onSearchStarted(/* reason= */ 0);
+
+ verify(mController).setScanning(anyBoolean());
+ }
+
+ @Test
+ public void testOnSearchStopFailed() {
+ mCallback.onSearchStopFailed(/* reason= */ 0);
+
+ verify(mController).showToast(anyString());
+ }
+
+ @Test
+ public void testOnSearchStopped() {
+ mCallback.onSearchStopped(/* reason= */ 0);
+
+ verify(mController).setScanning(anyBoolean());
+ }
+
+ @Test
+ public void testOnSourceAddFailed() {
+ when(mMetadata.getBroadcastId()).thenReturn(1);
+ mCallback.onSourceAddFailed(mDevice, mMetadata, /* reason= */ 0);
+
+ verify(mController).handleSourceFailedToConnect(1);
+ }
+
+ @Test
+ public void testOnSourceFound() {
+ mCallback.onSourceFound(mMetadata);
+
+ verify(mController).handleSourceFound(mMetadata);
+ }
+
+ @Test
+ public void testOnSourceLost() {
+ mCallback.onSourceLost(/* broadcastId= */ 1);
+
+ verify(mController).handleSourceLost(1);
+ }
+
+ @Test
+ public void testOnSourceRemoveFailed() {
+ mCallback.onSourceRemoveFailed(mDevice, /* sourceId= */ 0, /* reason= */ 0);
+
+ verify(mController).showToast(anyString());
+ }
+
+ @Test
+ public void testOnSourceRemoved() {
+ mCallback.onSourceRemoved(mDevice, /* sourceId= */ 0, /* reason= */ 0);
+
+ verify(mController).handleSourceRemoved();
+ }
+}
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
new file mode 100644
index 0000000..fd1b649
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryControllerTest.java
@@ -0,0 +1,788 @@
+/*
+ * 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.connecteddevice.audiosharing.audiostreams;
+
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState.ADD_SOURCE_BAD_CODE;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState.ADD_SOURCE_FAILED;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState.ADD_SOURCE_WAIT_FOR_RESPONSE;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState.SOURCE_ADDED;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState.SYNCED;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.AudioStreamState.WAIT_FOR_SYNC;
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsProgressCategoryController.UNSET_BROADCAST_ID;
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+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 static org.robolectric.Shadows.shadowOf;
+
+import static java.util.Collections.emptyList;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothLeAudioContentMetadata;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.bluetooth.BluetoothLeBroadcastReceiveState;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+import android.os.Looper;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper;
+import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
+import com.android.settings.testutils.shadow.ShadowThreadUtils;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+import com.google.common.collect.ImmutableList;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowBluetoothUtils.class,
+ ShadowAudioStreamsHelper.class,
+ ShadowThreadUtils.class,
+ ShadowAlertDialog.class,
+ })
+public class AudioStreamsProgressCategoryControllerTest {
+ @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final String VALID_METADATA =
+ "BLUETOOTH:UUID:184F;BN:VGVzdA==;AT:1;AD:00A1A1A1A1A1;BI:1E240;BC:VGVzdENvZGU=;"
+ + "MD:BgNwVGVzdA==;AS:1;PI:A0;NS:1;BS:3;NB:2;SM:BQNUZXN0BARlbmc=;;";
+ private static final String KEY = "audio_streams_nearby_category";
+ private static final int QR_CODE_BROADCAST_ID = 1;
+ private static final int ALREADY_CONNECTED_BROADCAST_ID = 2;
+ private static final int NEWLY_FOUND_BROADCAST_ID = 3;
+ private static final String BROADCAST_NAME_1 = "name_1";
+ private static final String BROADCAST_NAME_2 = "name_2";
+ private static final byte[] BROADCAST_CODE = new byte[] {1};
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private LocalBluetoothManager mLocalBtManager;
+ @Mock private BluetoothEventManager mBluetoothEventManager;
+ @Mock private PreferenceScreen mScreen;
+ @Mock private AudioStreamsHelper mAudioStreamsHelper;
+ @Mock private LocalBluetoothLeBroadcastAssistant mLeBroadcastAssistant;
+ @Mock private BluetoothLeBroadcastMetadata mMetadata;
+ @Mock private CachedBluetoothDevice mDevice;
+ @Mock private AudioStreamsProgressCategoryPreference mPreference;
+ private Lifecycle mLifecycle;
+ private LifecycleOwner mLifecycleOwner;
+ private Fragment mFragment;
+ private TestController mController;
+
+ @Before
+ public void setUp() {
+ ShadowAudioStreamsHelper.setUseMock(mAudioStreamsHelper);
+ when(mAudioStreamsHelper.getLeBroadcastAssistant()).thenReturn(mLeBroadcastAssistant);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(emptyList());
+
+ ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBtManager;
+ when(mLocalBtManager.getEventManager()).thenReturn(mBluetoothEventManager);
+ when(mLeBroadcastAssistant.isSearchInProgress()).thenReturn(false);
+
+ when(mScreen.findPreference(anyString())).thenReturn(mPreference);
+
+ mLifecycleOwner = () -> mLifecycle;
+ mLifecycle = new Lifecycle(mLifecycleOwner);
+
+ mFragment = new Fragment();
+ mController = spy(new TestController(mContext, KEY));
+ }
+
+ @After
+ public void tearDown() {
+ ShadowBluetoothUtils.reset();
+ ShadowAudioStreamsHelper.reset();
+ }
+
+ @Test
+ public void testGetAvailabilityStatus() {
+ int status = mController.getAvailabilityStatus();
+
+ assertThat(status).isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ public void testDisplayPreference() {
+ mController.displayPreference(mScreen);
+
+ verify(mPreference).setVisible(true);
+ }
+
+ @Test
+ public void testSetScanning() {
+ mController.displayPreference(mScreen);
+ mController.setScanning(true);
+
+ verify(mPreference).setProgress(true);
+ }
+
+ @Test
+ public void testShowToast_noError() {
+ mController.showToast(BROADCAST_NAME_1);
+ }
+
+ @Test
+ public void testOnStop_unregister() {
+ mController.onStop(mLifecycleOwner);
+
+ verify(mBluetoothEventManager).unregisterCallback(any());
+ }
+
+ @Test
+ public void testGetFragment_returnFragment() {
+ mController.setFragment(mFragment);
+
+ assertThat(mController.getFragment()).isEqualTo(mFragment);
+ }
+
+ @Test
+ public void testOnStart_initNoDevice_showDialog() {
+ when(mLeBroadcastAssistant.isSearchInProgress()).thenReturn(true);
+
+ FragmentController.setupFragment(mFragment);
+ mController.setFragment(mFragment);
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // Called twice, once in displayPreference, the other in init()
+ verify(mPreference, times(2)).setVisible(anyBoolean());
+ verify(mPreference).removeAudioStreamPreferences();
+ verify(mLeBroadcastAssistant).stopSearchingForSources();
+ verify(mLeBroadcastAssistant).unregisterServiceCallBack(any());
+
+ var dialog = ShadowAlertDialog.getLatestAlertDialog();
+ assertThat(dialog).isNotNull();
+ assertThat(dialog.isShowing()).isTrue();
+
+ TextView title = dialog.findViewById(R.id.dialog_title);
+ assertThat(title).isNotNull();
+ assertThat(title.getText())
+ .isEqualTo(mContext.getString(R.string.audio_streams_dialog_no_le_device_title));
+ TextView subtitle1 = dialog.findViewById(R.id.dialog_subtitle);
+ assertThat(subtitle1).isNotNull();
+ assertThat(subtitle1.getVisibility()).isEqualTo(View.GONE);
+ TextView subtitle2 = dialog.findViewById(R.id.dialog_subtitle_2);
+ assertThat(subtitle2).isNotNull();
+ assertThat(subtitle2.getText())
+ .isEqualTo(mContext.getString(R.string.audio_streams_dialog_no_le_device_subtitle));
+ View leftButton = dialog.findViewById(R.id.left_button);
+ assertThat(leftButton).isNotNull();
+ assertThat(leftButton.getVisibility()).isEqualTo(View.VISIBLE);
+ Button rightButton = dialog.findViewById(R.id.right_button);
+ assertThat(rightButton).isNotNull();
+ assertThat(rightButton.getText())
+ .isEqualTo(mContext.getString(R.string.audio_streams_dialog_no_le_device_button));
+ assertThat(rightButton.hasOnClickListeners()).isTrue();
+
+ dialog.cancel();
+ }
+
+ @Test
+ public void testBluetoothOff_triggerRunnable() {
+ mController.mBluetoothCallback.onBluetoothStateChanged(BluetoothAdapter.STATE_OFF);
+
+ verify(mController.mExecutor).execute(any());
+ }
+
+ @Test
+ public void testDeviceConnectionStateChanged_triggerRunnable() {
+ mController.mBluetoothCallback.onProfileConnectionStateChanged(
+ mDevice,
+ BluetoothAdapter.STATE_DISCONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
+
+ verify(mController.mExecutor).execute(any());
+ }
+
+ @Test
+ public void testOnStart_initHasDevice_noPreference() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mLeBroadcastAssistant).registerServiceCallBack(any(), any());
+ verify(mLeBroadcastAssistant).startSearchingForSources(any());
+
+ var dialog = ShadowAlertDialog.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+
+ verify(mController, never()).moveToState(any(), any());
+ }
+
+ @Test
+ public void testOnStart_initHasDevice_scanningInProgress() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+ when(mLeBroadcastAssistant.isSearchInProgress()).thenReturn(true);
+
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ verify(mLeBroadcastAssistant).registerServiceCallBack(any(), any());
+ verify(mLeBroadcastAssistant).stopSearchingForSources();
+ verify(mLeBroadcastAssistant).startSearchingForSources(any());
+
+ var dialog = ShadowAlertDialog.getLatestAlertDialog();
+ assertThat(dialog).isNull();
+
+ verify(mController, never()).moveToState(any(), any());
+ }
+
+ @Test
+ public void testOnStart_handleSourceFromQrCode() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup a source from qr code
+ mController.setSourceFromQrCode(mMetadata, SourceOriginForLogging.UNKNOWN);
+ when(mMetadata.getBroadcastId()).thenReturn(QR_CODE_BROADCAST_ID);
+
+ // Handle the source from qr code in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // Verify the connected source is created and moved to WAIT_FOR_SYNC
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ verify(mController).moveToState(preference.capture(), state.capture());
+ assertThat(preference.getValue()).isNotNull();
+ assertThat(preference.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(QR_CODE_BROADCAST_ID);
+ assertThat(state.getValue()).isEqualTo(WAIT_FOR_SYNC);
+ }
+
+ @Test
+ public void testOnStart_handleSourceAlreadyConnected() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup a connected source
+ BluetoothLeBroadcastReceiveState connected =
+ createConnectedMock(ALREADY_CONNECTED_BROADCAST_ID);
+ List<BluetoothLeBroadcastReceiveState> list = new ArrayList<>();
+ list.add(connected);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(list);
+
+ // Handle already connected source in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ // Verify the connected source is created and moved to SOURCE_ADDED
+ verify(mController).moveToState(preference.capture(), state.capture());
+ assertThat(preference.getValue()).isNotNull();
+ assertThat(preference.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(state.getValue()).isEqualTo(SOURCE_ADDED);
+ }
+
+ @Test
+ public void testOnStart_sourceFromQrCodeNoId_sourceAlreadyConnected_sameName_updateId() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup source from qr code with unset id and BROADCAST_NAME_1. Creating a real metadata
+ // for properly update its id.
+ var metadata =
+ BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(VALID_METADATA);
+ assertThat(metadata).isNotNull();
+ var metadataWithNoIdAndSameName =
+ new BluetoothLeBroadcastMetadata.Builder(metadata)
+ .setBroadcastId(UNSET_BROADCAST_ID)
+ .setBroadcastName(BROADCAST_NAME_1)
+ .build();
+ mController.setSourceFromQrCode(
+ metadataWithNoIdAndSameName, SourceOriginForLogging.UNKNOWN);
+
+ // Setup a connected source with name BROADCAST_NAME_1 and id
+ BluetoothLeBroadcastReceiveState connected =
+ createConnectedMock(ALREADY_CONNECTED_BROADCAST_ID);
+ var data = mock(BluetoothLeAudioContentMetadata.class);
+ when(connected.getSubgroupMetadata()).thenReturn(ImmutableList.of(data));
+ when(data.getProgramInfo()).thenReturn(BROADCAST_NAME_1);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(ImmutableList.of(connected));
+
+ // Handle both source from qr code and already connected source in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // Verify two preferences created, one moved to state WAIT_FOR_SYNC, one to SOURCE_ADDED.
+ // Both has ALREADY_CONNECTED_BROADCAST_ID as the UNSET_ID is updated to match.
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+ verify(mController, times(2)).moveToState(preference.capture(), state.capture());
+
+ List<AudioStreamPreference> preferences = preference.getAllValues();
+ assertThat(preferences.size()).isEqualTo(2);
+ List<AudioStreamsProgressCategoryController.AudioStreamState> states = state.getAllValues();
+ assertThat(states.size()).isEqualTo(2);
+
+ // The preference contains source from qr code
+ assertThat(preferences.get(0).getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(states.get(0)).isEqualTo(WAIT_FOR_SYNC);
+
+ // The preference contains already connected source
+ assertThat(preferences.get(1).getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(states.get(1)).isEqualTo(SOURCE_ADDED);
+ }
+
+ @Test
+ public void testHandleSourceFound_addNew() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ when(mMetadata.getBroadcastId()).thenReturn(NEWLY_FOUND_BROADCAST_ID);
+ // A new source is found
+ mController.handleSourceFound(mMetadata);
+
+ // Verify a preference is created with state SYNCED.
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ verify(mController).moveToState(preference.capture(), state.capture());
+ assertThat(preference.getValue()).isNotNull();
+ assertThat(preference.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(state.getValue()).isEqualTo(SYNCED);
+ }
+
+ @Test
+ public void testHandleSourceAddRequest_updateMetadataAndState() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ var metadata =
+ BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(VALID_METADATA);
+ assertThat(metadata).isNotNull();
+ var metadataWithNoCode =
+ new BluetoothLeBroadcastMetadata.Builder(metadata)
+ .setBroadcastId(NEWLY_FOUND_BROADCAST_ID)
+ .setBroadcastName(BROADCAST_NAME_1)
+ .build();
+ // A new source is found
+ mController.handleSourceFound(metadataWithNoCode);
+
+ ArgumentCaptor<AudioStreamPreference> preferenceCaptor =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> stateCaptor =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ // moving state to SYNCED
+ verify(mController).moveToState(preferenceCaptor.capture(), stateCaptor.capture());
+ var preference = preferenceCaptor.getValue();
+ var state = stateCaptor.getValue();
+
+ assertThat(preference).isNotNull();
+ assertThat(preference.getAudioStreamBroadcastId()).isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(state).isEqualTo(SYNCED);
+
+ var updatedMetadata =
+ new BluetoothLeBroadcastMetadata.Builder(metadataWithNoCode)
+ .setBroadcastCode(BROADCAST_CODE)
+ .build();
+ mController.handleSourceAddRequest(preference, updatedMetadata);
+ // state updated to ADD_SOURCE_WAIT_FOR_RESPONSE
+ assertThat(preference.getAudioStreamBroadcastId()).isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(preference.getAudioStreamMetadata().getBroadcastCode())
+ .isEqualTo(BROADCAST_CODE);
+ assertThat(preference.getAudioStreamState()).isEqualTo(ADD_SOURCE_WAIT_FOR_RESPONSE);
+ }
+
+ @Test
+ public void testHandleSourceFound_sameIdWithSourceFromQrCode_updateMetadataAndState() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup source from qr code with QR_CODE_BROADCAST_ID, BROADCAST_NAME_1 and BROADCAST_CODE.
+ var metadata =
+ BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(VALID_METADATA);
+ assertThat(metadata).isNotNull();
+ var metadataFromQrCode =
+ new BluetoothLeBroadcastMetadata.Builder(metadata)
+ .setBroadcastId(QR_CODE_BROADCAST_ID)
+ .setBroadcastName(BROADCAST_NAME_1)
+ .setBroadcastCode(BROADCAST_CODE)
+ .build();
+ mController.setSourceFromQrCode(metadataFromQrCode, SourceOriginForLogging.UNKNOWN);
+
+ // Handle the source from qr code in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // A new source is found
+ mController.handleSourceFound(
+ new BluetoothLeBroadcastMetadata.Builder(metadata)
+ .setBroadcastId(QR_CODE_BROADCAST_ID)
+ .setBroadcastName(BROADCAST_NAME_2)
+ .build());
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ verify(mController, times(2)).moveToState(preference.capture(), state.capture());
+ List<AudioStreamPreference> preferences = preference.getAllValues();
+ List<AudioStreamsProgressCategoryController.AudioStreamState> states = state.getAllValues();
+
+ // Verify the qr code source is created with WAIT_FOR_SYNC, broadcast name got updated to
+ // BROADCAST_NAME_2
+ var sourceFromQrCode = preferences.get(0);
+ assertThat(sourceFromQrCode.getAudioStreamBroadcastId()).isEqualTo(QR_CODE_BROADCAST_ID);
+ assertThat(sourceFromQrCode.getAudioStreamMetadata()).isNotNull();
+ assertThat(sourceFromQrCode.getAudioStreamMetadata().getBroadcastName())
+ .isEqualTo(BROADCAST_NAME_2);
+ assertThat(sourceFromQrCode.getAudioStreamMetadata().getBroadcastCode())
+ .isEqualTo(BROADCAST_CODE);
+ assertThat(states.get(0)).isEqualTo(WAIT_FOR_SYNC);
+
+ // Verify the newly found source is created, broadcast code is retrieved from the source
+ // from qr code, and state updated to ADD_SOURCE_WAIT_FOR_RESPONSE
+ var newlyFoundSource = preferences.get(1);
+ assertThat(newlyFoundSource.getAudioStreamBroadcastId()).isEqualTo(QR_CODE_BROADCAST_ID);
+ assertThat(newlyFoundSource.getAudioStreamMetadata()).isNotNull();
+ assertThat(newlyFoundSource.getAudioStreamMetadata().getBroadcastName())
+ .isEqualTo(BROADCAST_NAME_2);
+ assertThat(newlyFoundSource.getAudioStreamMetadata().getBroadcastCode())
+ .isEqualTo(BROADCAST_CODE);
+ assertThat(states.get(1)).isEqualTo(ADD_SOURCE_WAIT_FOR_RESPONSE);
+ }
+
+ @Test
+ public void testHandleSourceFound_sameIdWithOtherState_doNothing() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup source already connected
+ BluetoothLeBroadcastReceiveState connected =
+ createConnectedMock(ALREADY_CONNECTED_BROADCAST_ID);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(ImmutableList.of(connected));
+
+ // Handle source already connected in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // A new source found
+ when(mMetadata.getBroadcastId()).thenReturn(ALREADY_CONNECTED_BROADCAST_ID);
+ mController.handleSourceFound(mMetadata);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // Verify only the connected source has created a preference, and its state remains as
+ // SOURCE_ADDED
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ verify(mController).moveToState(preference.capture(), state.capture());
+ assertThat(preference.getValue()).isNotNull();
+ assertThat(preference.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(preference.getValue().getAudioStreamState()).isEqualTo(SOURCE_ADDED);
+ }
+
+ @Test
+ public void testHandleSourceLost_removed() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup mPreference so it's not null
+ mController.displayPreference(mScreen);
+
+ // A new source found
+ when(mMetadata.getBroadcastId()).thenReturn(NEWLY_FOUND_BROADCAST_ID);
+ mController.handleSourceFound(mMetadata);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // A new source found is lost
+ mController.handleSourceLost(NEWLY_FOUND_BROADCAST_ID);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preferenceToAdd =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamPreference> preferenceToRemove =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ // Verify a new preference is created with state SYNCED.
+ verify(mController).moveToState(preferenceToAdd.capture(), state.capture());
+ assertThat(preferenceToAdd.getValue()).isNotNull();
+ assertThat(preferenceToAdd.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(state.getValue()).isEqualTo(SYNCED);
+
+ // Verify the preference with NEWLY_FOUND_BROADCAST_ID is removed.
+ verify(mPreference).removePreference(preferenceToRemove.capture());
+ assertThat(preferenceToRemove.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ }
+
+ @Test
+ public void testHandleSourceLost_sourceConnected_doNothing() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup mPreference so it's not null
+ mController.displayPreference(mScreen);
+
+ // A new source found
+ when(mMetadata.getBroadcastId()).thenReturn(NEWLY_FOUND_BROADCAST_ID);
+ mController.handleSourceFound(mMetadata);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // A new source found is lost, but the source is still connected
+ BluetoothLeBroadcastReceiveState connected = createConnectedMock(NEWLY_FOUND_BROADCAST_ID);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(ImmutableList.of(connected));
+ mController.handleSourceLost(NEWLY_FOUND_BROADCAST_ID);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preferenceToAdd =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ // Verify a new preference is created with state SYNCED.
+ verify(mController).moveToState(preferenceToAdd.capture(), state.capture());
+ assertThat(preferenceToAdd.getValue()).isNotNull();
+ assertThat(preferenceToAdd.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(state.getValue()).isEqualTo(SYNCED);
+
+ // No preference is removed.
+ verify(mPreference, never()).removePreference(any());
+ }
+
+ @Test
+ public void testHandleSourceRemoved_removed() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup already connected source
+ BluetoothLeBroadcastReceiveState connected =
+ createConnectedMock(ALREADY_CONNECTED_BROADCAST_ID);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(ImmutableList.of(connected));
+
+ // Handle connected source in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // The connect source is no longer connected
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(emptyList());
+ mController.handleSourceRemoved();
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preferenceToAdd =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamPreference> preferenceToRemove =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ // Verify a new preference is created with state SOURCE_ADDED.
+ verify(mController).moveToState(preferenceToAdd.capture(), state.capture());
+ assertThat(preferenceToAdd.getValue()).isNotNull();
+ assertThat(preferenceToAdd.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(state.getValue()).isEqualTo(SOURCE_ADDED);
+
+ // Verify the preference with ALREADY_CONNECTED_BROADCAST_ID is removed.
+ verify(mPreference).removePreference(preferenceToRemove.capture());
+ assertThat(preferenceToRemove.getValue().getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ }
+
+ @Test
+ public void testHandleSourceRemoved_updateState() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup a connected source
+ BluetoothLeBroadcastReceiveState connected =
+ createConnectedMock(ALREADY_CONNECTED_BROADCAST_ID);
+ when(mAudioStreamsHelper.getAllConnectedSources()).thenReturn(ImmutableList.of(connected));
+
+ // Handle connected source in onStart
+ mController.displayPreference(mScreen);
+ mController.onStart(mLifecycleOwner);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // The connected source is identified as having a bad code
+ BluetoothLeBroadcastReceiveState badCode = mock(BluetoothLeBroadcastReceiveState.class);
+ when(badCode.getBroadcastId()).thenReturn(ALREADY_CONNECTED_BROADCAST_ID);
+ when(badCode.getPaSyncState())
+ .thenReturn(BluetoothLeBroadcastReceiveState.PA_SYNC_STATE_SYNCHRONIZED);
+ when(badCode.getBigEncryptionState())
+ .thenReturn(BluetoothLeBroadcastReceiveState.BIG_ENCRYPTION_STATE_BAD_CODE);
+ mController.handleSourceConnectBadCode(badCode);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ verify(mController, times(2)).moveToState(preference.capture(), state.capture());
+ List<AudioStreamPreference> preferences = preference.getAllValues();
+ assertThat(preferences.size()).isEqualTo(2);
+ List<AudioStreamsProgressCategoryController.AudioStreamState> states = state.getAllValues();
+ assertThat(states.size()).isEqualTo(2);
+
+ // Verify the connected source is created state SOURCE_ADDED
+ assertThat(preferences.get(0).getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(states.get(0)).isEqualTo(SOURCE_ADDED);
+
+ // Verify the connected source is updated to state ADD_SOURCE_BAD_CODE
+ assertThat(preferences.get(1).getAudioStreamBroadcastId())
+ .isEqualTo(ALREADY_CONNECTED_BROADCAST_ID);
+ assertThat(states.get(1)).isEqualTo(ADD_SOURCE_BAD_CODE);
+ }
+
+ @Test
+ public void testHandleSourceFailedToConnect_updateState() {
+ // Setup a device
+ ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
+
+ // Setup mPreference so it's not null
+ mController.displayPreference(mScreen);
+
+ // A new source found
+ when(mMetadata.getBroadcastId()).thenReturn(NEWLY_FOUND_BROADCAST_ID);
+ mController.handleSourceFound(mMetadata);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ // The new found source is identified as failed to connect
+ mController.handleSourceFailedToConnect(NEWLY_FOUND_BROADCAST_ID);
+ shadowOf(Looper.getMainLooper()).idle();
+
+ ArgumentCaptor<AudioStreamPreference> preference =
+ ArgumentCaptor.forClass(AudioStreamPreference.class);
+ ArgumentCaptor<AudioStreamsProgressCategoryController.AudioStreamState> state =
+ ArgumentCaptor.forClass(
+ AudioStreamsProgressCategoryController.AudioStreamState.class);
+
+ verify(mController, times(2)).moveToState(preference.capture(), state.capture());
+ List<AudioStreamPreference> preferences = preference.getAllValues();
+ assertThat(preferences.size()).isEqualTo(2);
+ List<AudioStreamsProgressCategoryController.AudioStreamState> states = state.getAllValues();
+ assertThat(states.size()).isEqualTo(2);
+
+ // Verify one preference is created with SYNCED
+ assertThat(preferences.get(0).getAudioStreamBroadcastId())
+ .isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(states.get(0)).isEqualTo(SYNCED);
+
+ // Verify the preference is updated to state ADD_SOURCE_FAILED
+ assertThat(preferences.get(1).getAudioStreamBroadcastId())
+ .isEqualTo(NEWLY_FOUND_BROADCAST_ID);
+ assertThat(states.get(1)).isEqualTo(ADD_SOURCE_FAILED);
+ }
+
+ private static BluetoothLeBroadcastReceiveState createConnectedMock(int id) {
+ var connected = mock(BluetoothLeBroadcastReceiveState.class);
+ List<Long> bisSyncState = new ArrayList<>();
+ bisSyncState.add(1L);
+ when(connected.getBroadcastId()).thenReturn(id);
+ when(connected.getBisSyncState()).thenReturn(bisSyncState);
+ return connected;
+ }
+
+ static class TestController extends AudioStreamsProgressCategoryController {
+ TestController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ mExecutor = spy(mContext.getMainExecutor());
+ }
+
+ @Override
+ void moveToState(AudioStreamPreference preference, AudioStreamState state) {
+ preference.setAudioStreamState(state);
+ // Do nothing else to avoid side effect from AudioStreamStateHandler#performAction
+ }
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreferenceTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreferenceTest.java
index 337d64d..76bd5ec 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsProgressCategoryPreferenceTest.java
@@ -53,6 +53,8 @@
@Test
public void addAudioStreamPreference_singlePreference() {
+ mPreference = spy(new AudioStreamsProgressCategoryPreference(mContext, null));
+ when(mPreference.getPreferenceManager()).thenReturn(mPreferenceManager);
AudioStreamPreference first = new AudioStreamPreference(mContext, null);
mPreference.addAudioStreamPreference(first, (p1, p2) -> 0);
@@ -62,6 +64,8 @@
@Test
public void addAudioStreamPreference_multiPreference_sorted() {
+ mPreference = spy(new AudioStreamsProgressCategoryPreference(mContext, null, 0));
+ when(mPreference.getPreferenceManager()).thenReturn(mPreferenceManager);
Comparator<AudioStreamPreference> c =
Comparator.comparingInt(AudioStreamPreference::getOrder);
AudioStreamPreference first = new AudioStreamPreference(mContext, null);
@@ -78,6 +82,8 @@
@Test
public void removeAudioStreamPreferences_shouldBeEmpty() {
+ mPreference = spy(new AudioStreamsProgressCategoryPreference(mContext, null, 0, 0));
+ when(mPreference.getPreferenceManager()).thenReturn(mPreferenceManager);
Comparator<AudioStreamPreference> c =
Comparator.comparingInt(AudioStreamPreference::getOrder);
AudioStreamPreference first = new AudioStreamPreference(mContext, null);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragmentTest.java
index 7d85b7a..06e4837 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsQrCodeFragmentTest.java
@@ -98,6 +98,22 @@
}
@Test
+ public void onCreateView_noProfile_noQrCode() {
+ when(mBtProfileManager.getLeAudioBroadcastProfile()).thenReturn(null);
+ FragmentController.setupFragment(
+ mFragment, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null);
+ View view = mFragment.getView();
+
+ assertThat(view).isNotNull();
+ ImageView qrCodeView = view.findViewById(R.id.qrcode_view);
+ TextView passwordView = view.requireViewById(R.id.password);
+ assertThat(qrCodeView).isNotNull();
+ assertThat(qrCodeView.getDrawable()).isNull();
+ assertThat(passwordView).isNotNull();
+ assertThat(passwordView.getText().toString()).isEqualTo("");
+ }
+
+ @Test
public void onCreateView_noMetadata_noQrCode() {
List<BluetoothLeBroadcastMetadata> list = new ArrayList<>();
when(mBroadcast.getAllBroadcastMetadata()).thenReturn(list);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeControllerTest.java
index 4990f26..a83cbf0 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamsScanQrCodeControllerTest.java
@@ -16,29 +16,38 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static android.app.settings.SettingsEnums.AUDIO_STREAM_MAIN;
+
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsScanQrCodeController.REQUEST_SCAN_BT_BROADCAST_QR_CODE;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
+import android.content.Intent;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
+import com.android.settings.R;
+import com.android.settings.SettingsActivity;
import com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows.ShadowAudioStreamsHelper;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settingslib.bluetooth.BluetoothEventManager;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.After;
@@ -46,6 +55,7 @@
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -139,17 +149,46 @@
public void onPreferenceClick_hasFragment_launchSubSetting() {
mController.displayPreference(mScreen);
mController.setFragment(mFragment);
+ when(mFragment.getMetricsCategory()).thenReturn(AUDIO_STREAM_MAIN);
var listener = mPreference.getOnPreferenceClickListener();
assertThat(listener).isNotNull();
+
+ // mContext is not an Activity context, calling startActivity() from outside of an Activity
+ // context requires the FLAG_ACTIVITY_NEW_TASK flag, create a mock to avoid this
+ // AndroidRuntimeException.
+ Context activityContext = mock(Context.class);
+ when(mPreference.getContext()).thenReturn(activityContext);
+ when(mPreference.getKey()).thenReturn(AudioStreamsScanQrCodeController.KEY);
+
var clicked = listener.onPreferenceClick(mPreference);
+
+ ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+ ArgumentCaptor<Integer> requestCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ verify(mFragment)
+ .startActivityForResult(intentCaptor.capture(), requestCodeCaptor.capture());
+
+ Intent intent = intentCaptor.getValue();
+ assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(AudioStreamsQrCodeScanFragment.class.getName());
+ assertThat(intent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+ .isEqualTo(R.string.audio_streams_main_page_scan_qr_code_title);
+ assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, 0))
+ .isEqualTo(AUDIO_STREAM_MAIN);
+
+ int requestCode = requestCodeCaptor.getValue();
+ assertThat(requestCode).isEqualTo(REQUEST_SCAN_BT_BROADCAST_QR_CODE);
+
assertThat(clicked).isTrue();
}
@Test
public void updateVisibility_noConnected_invisible() {
mController.displayPreference(mScreen);
- mController.mBluetoothCallback.onActiveDeviceChanged(mDevice, BluetoothProfile.LE_AUDIO);
+ mController.mBluetoothCallback.onProfileConnectionStateChanged(
+ mDevice,
+ BluetoothAdapter.STATE_DISCONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
assertThat(mPreference.isVisible()).isFalse();
}
@@ -158,7 +197,10 @@
public void updateVisibility_hasConnected_visible() {
mController.displayPreference(mScreen);
ShadowAudioStreamsHelper.setCachedBluetoothDeviceInSharingOrLeConnected(mDevice);
- mController.mBluetoothCallback.onActiveDeviceChanged(mDevice, BluetoothProfile.LE_AUDIO);
+ mController.mBluetoothCallback.onProfileConnectionStateChanged(
+ mDevice,
+ BluetoothAdapter.STATE_CONNECTED,
+ BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT);
assertThat(mPreference.isVisible()).isTrue();
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedStateTest.java
index 0f0bafe..59a42a1 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedStateTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SourceAddedStateTest.java
@@ -16,31 +16,76 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static android.app.settings.SettingsEnums.AUDIO_STREAM_MAIN;
+
import static com.android.settings.connecteddevice.audiosharing.audiostreams.SourceAddedState.AUDIO_STREAM_SOURCE_ADDED_STATE_SUMMARY;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.settings.SettingsEnums;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.SettingsActivity;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.shadow.ShadowFragment;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
+@Config(
+ shadows = {
+ ShadowFragment.class,
+ })
public class SourceAddedStateTest {
-
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final int BROADCAST_ID = 1;
+ private static final String BROADCAST_TITLE = "title";
+ private final Context mContext = ApplicationProvider.getApplicationContext();
+ @Mock private AudioStreamPreference mPreference;
+ @Mock private AudioStreamsProgressCategoryController mController;
+ @Mock private AudioStreamsHelper mHelper;
+ @Mock private AudioStreamsRepository mRepository;
+ @Mock private AudioStreamsDashboardFragment mFragment;
+ @Mock private FragmentActivity mActivity;
+ private FakeFeatureFactory mFeatureFactory;
private SourceAddedState mInstance;
@Before
public void setUp() {
- mInstance = SourceAddedState.getInstance();
+ when(mFragment.getActivity()).thenReturn(mActivity);
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ mInstance = new SourceAddedState();
+ when(mPreference.getAudioStreamBroadcastId()).thenReturn(BROADCAST_ID);
+ when(mPreference.getTitle()).thenReturn(BROADCAST_TITLE);
}
@Test
public void testGetInstance() {
+ mInstance = SourceAddedState.getInstance();
assertThat(mInstance).isNotNull();
assertThat(mInstance).isInstanceOf(SourceAddedState.class);
}
@@ -58,4 +103,59 @@
assertThat(stateEnum)
.isEqualTo(AudioStreamsProgressCategoryController.AudioStreamState.SOURCE_ADDED);
}
+
+ @Test
+ public void testPerformAction() {
+ mInstance.setAudioStreamsRepositoryForTesting(mRepository);
+ BluetoothLeBroadcastMetadata mockMetadata = mock(BluetoothLeBroadcastMetadata.class);
+ when(mRepository.getCachedMetadata(anyInt())).thenReturn(mockMetadata);
+ when(mPreference.getContext()).thenReturn(mContext);
+ when(mPreference.getSourceOriginForLogging())
+ .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);
+
+ mInstance.performAction(mPreference, mController, mHelper);
+
+ verify(mRepository).saveMetadata(eq(mContext), eq(mockMetadata));
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_SUCCEED),
+ eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
+ verify(mHelper).startMediaService(eq(mContext), eq(BROADCAST_ID), eq(BROADCAST_TITLE));
+ }
+
+ @Test
+ public void testGetOnClickListener_startSubSettings() {
+ when(mController.getFragment()).thenReturn(mFragment);
+ when(mFragment.getMetricsCategory()).thenReturn(AUDIO_STREAM_MAIN);
+
+ Preference.OnPreferenceClickListener listener = mInstance.getOnClickListener(mController);
+ assertThat(listener).isNotNull();
+
+ // mContext is not an Activity context, calling startActivity() from outside of an Activity
+ // context requires the FLAG_ACTIVITY_NEW_TASK flag, create a mock to avoid this
+ // AndroidRuntimeException.
+ Context activityContext = mock(Context.class);
+ when(mPreference.getContext()).thenReturn(activityContext);
+
+ listener.onPreferenceClick(mPreference);
+
+ ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(activityContext).startActivity(argumentCaptor.capture());
+
+ Intent intent = argumentCaptor.getValue();
+ assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(AudioStreamDetailsFragment.class.getName());
+ assertThat(intent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+ .isEqualTo(R.string.audio_streams_detail_page_title);
+ assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, 0))
+ .isEqualTo(AUDIO_STREAM_MAIN);
+
+ Bundle bundle = intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ assertThat(bundle).isNotNull();
+ assertThat(bundle.getString(AudioStreamDetailsFragment.BROADCAST_NAME_ARG))
+ .isEqualTo(BROADCAST_TITLE);
+ assertThat(bundle.getInt(AudioStreamDetailsFragment.BROADCAST_ID_ARG))
+ .isEqualTo(BROADCAST_ID);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java
index e9eab50..2b19e20 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/SyncedStateTest.java
@@ -20,7 +20,7 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.never;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.shadows.ShadowLooper.shadowMainLooper;
@@ -28,10 +28,16 @@
import android.app.AlertDialog;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.content.Context;
+import android.content.DialogInterface;
+import android.widget.Button;
+import android.widget.TextView;
import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
+import com.android.settings.R;
+import com.android.settingslib.bluetooth.BluetoothLeBroadcastMetadataExt;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -42,7 +48,9 @@
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.ShadowLooper;
@RunWith(RobolectricTestRunner.class)
@Config(
@@ -51,6 +59,10 @@
})
public class SyncedStateTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private static final String ENCRYPTED_METADATA =
+ "BLUETOOTH:UUID:184F;BN:VGVzdA==;AT:1;AD:00A1A1A1A1A1;BI:1E240;BC:VGVzdENvZGU=;"
+ + "MD:BgNwVGVzdA==;AS:1;PI:A0;NS:1;BS:3;NB:2;SM:BQNUZXN0BARlbmc=;;";
+ private static final String BROADCAST_TITLE = "title";
@Mock private AudioStreamsProgressCategoryController mMockController;
@Mock private AudioStreamPreference mMockPreference;
@Mock private BluetoothLeBroadcastMetadata mMockMetadata;
@@ -105,18 +117,47 @@
@Test
public void testGetOnClickListener_isEncrypted_passwordDialogShowing() {
+ when(mMockPreference.getAudioStreamMetadata())
+ .thenReturn(
+ BluetoothLeBroadcastMetadataExt.INSTANCE.convertToBroadcastMetadata(
+ ENCRYPTED_METADATA));
+ when(mMockPreference.getContext()).thenReturn(mMockContext);
+ when(mMockPreference.getTitle()).thenReturn(BROADCAST_TITLE);
+
Preference.OnPreferenceClickListener listener =
mInstance.getOnClickListener(mMockController);
- when(mMockPreference.getAudioStreamMetadata()).thenReturn(mMockMetadata);
- when(mMockPreference.getContext()).thenReturn(mMockContext);
- when(mMockMetadata.isEncrypted()).thenReturn(true);
+ assertThat(listener).isNotNull();
listener.onPreferenceClick(mMockPreference);
shadowMainLooper().idle();
AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+
assertThat(dialog).isNotNull();
assertThat(dialog.isShowing()).isTrue();
- verify(mMockController, never()).handleSourceAddRequest(mMockPreference, mMockMetadata);
+
+ Button neutralButton = dialog.getButton(DialogInterface.BUTTON_NEUTRAL);
+ assertThat(neutralButton).isNotNull();
+ assertThat(neutralButton.getText().toString())
+ .isEqualTo(mMockContext.getString(android.R.string.cancel));
+
+ Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
+ assertThat(positiveButton).isNotNull();
+ assertThat(positiveButton.getText().toString())
+ .isEqualTo(
+ mMockContext.getString(R.string.bluetooth_connect_access_dialog_positive));
+
+ positiveButton.callOnClick();
+ ShadowLooper.idleMainLooper();
+ verify(mMockController).handleSourceAddRequest(any(), any());
+
+ ShadowAlertDialog shadowDialog = Shadow.extract(dialog);
+ TextView title = shadowDialog.getView().findViewById(R.id.broadcast_name_text);
+ assertThat(title).isNotNull();
+ assertThat(title.getText().toString()).isEqualTo(BROADCAST_TITLE);
+ assertThat(shadowDialog.getTitle().toString())
+ .isEqualTo(mMockContext.getString(R.string.find_broadcast_password_dialog_title));
+
+ dialog.cancel();
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncStateTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncStateTest.java
index 3eb07a4..813ed2b 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncStateTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/WaitForSyncStateTest.java
@@ -16,22 +16,39 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams;
+import static android.app.settings.SettingsEnums.DIALOG_AUDIO_STREAM_MAIN_WAIT_FOR_SYNC_TIMEOUT;
+
+import static com.android.settings.connecteddevice.audiosharing.audiostreams.AudioStreamsScanQrCodeController.REQUEST_SCAN_BT_BROADCAST_QR_CODE;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.WaitForSyncState.AUDIO_STREAM_WAIT_FOR_SYNC_STATE_SUMMARY;
import static com.android.settings.connecteddevice.audiosharing.audiostreams.WaitForSyncState.WAIT_FOR_SYNC_TIMEOUT_MILLIS;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothLeBroadcastMetadata;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+import com.android.settings.SettingsActivity;
+import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -43,19 +60,23 @@
@RunWith(RobolectricTestRunner.class)
public class WaitForSyncStateTest {
@Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ private final Context mContext = spy(ApplicationProvider.getApplicationContext());
@Mock private AudioStreamPreference mMockPreference;
@Mock private AudioStreamsProgressCategoryController mMockController;
@Mock private AudioStreamsHelper mMockHelper;
@Mock private BluetoothLeBroadcastMetadata mMockMetadata;
+ private FakeFeatureFactory mFeatureFactory;
private WaitForSyncState mInstance;
@Before
public void setUp() {
- mInstance = WaitForSyncState.getInstance();
+ mFeatureFactory = FakeFeatureFactory.setupForTest();
+ mInstance = new WaitForSyncState();
}
@Test
public void testGetInstance() {
+ mInstance = WaitForSyncState.getInstance();
assertThat(mInstance).isNotNull();
assertThat(mInstance).isInstanceOf(AudioStreamStateHandler.class);
}
@@ -93,12 +114,49 @@
.thenReturn(AudioStreamsProgressCategoryController.AudioStreamState.WAIT_FOR_SYNC);
when(mMockPreference.getAudioStreamBroadcastId()).thenReturn(1);
when(mMockPreference.getAudioStreamMetadata()).thenReturn(mMockMetadata);
+ when(mMockPreference.getContext()).thenReturn(mContext);
when(mMockPreference.getSourceOriginForLogging())
- .thenReturn(SourceOriginForLogging.UNKNOWN);
+ .thenReturn(SourceOriginForLogging.BROADCAST_SEARCH);
+ when(mMockController.getFragment()).thenReturn(mock(AudioStreamsDashboardFragment.class));
mInstance.performAction(mMockPreference, mMockController, mMockHelper);
ShadowLooper.idleMainLooper(WAIT_FOR_SYNC_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
verify(mMockController).handleSourceLost(1);
+ verify(mFeatureFactory.metricsFeatureProvider)
+ .action(
+ eq(mContext),
+ eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_FAILED_WAIT_FOR_SYNC_TIMEOUT),
+ eq(SourceOriginForLogging.BROADCAST_SEARCH.ordinal()));
+ verify(mContext).getString(R.string.audio_streams_dialog_stream_is_not_available);
+ verify(mContext).getString(R.string.audio_streams_is_not_playing);
+ verify(mContext).getString(R.string.audio_streams_dialog_close);
+ verify(mContext).getString(R.string.audio_streams_dialog_retry);
+ }
+
+ @Test
+ public void testLaunchQrCodeScanFragment() {
+ // mContext is not an Activity context, calling startActivity() from outside of an Activity
+ // context requires the FLAG_ACTIVITY_NEW_TASK flag, create a mock to avoid this
+ // AndroidRuntimeException.
+ Context activityContext = mock(Context.class);
+ AudioStreamsDashboardFragment fragment = mock(AudioStreamsDashboardFragment.class);
+ mInstance.launchQrCodeScanFragment(activityContext, fragment);
+
+ ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+ ArgumentCaptor<Integer> requestCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ verify(fragment)
+ .startActivityForResult(intentCaptor.capture(), requestCodeCaptor.capture());
+
+ Intent intent = intentCaptor.getValue();
+ assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(AudioStreamsQrCodeScanFragment.class.getName());
+ assertThat(intent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
+ .isEqualTo(R.string.audio_streams_main_page_scan_qr_code_title);
+ assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, 0))
+ .isEqualTo(DIALOG_AUDIO_STREAM_MAIN_WAIT_FOR_SYNC_TIMEOUT);
+
+ int requestCode = requestCodeCaptor.getValue();
+ assertThat(requestCode).isEqualTo(REQUEST_SCAN_BT_BROADCAST_QR_CODE);
}
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java
index 3a0a6c4..051eda7 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/testshadows/ShadowAudioStreamsHelper.java
@@ -16,6 +16,7 @@
package com.android.settings.connecteddevice.audiosharing.audiostreams.testshadows;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.bluetooth.BluetoothLeBroadcastReceiveState;
import androidx.annotation.Nullable;
@@ -32,7 +33,7 @@
import java.util.List;
import java.util.Optional;
-@Implements(value = AudioStreamsHelper.class, callThroughByDefault = false)
+@Implements(value = AudioStreamsHelper.class, callThroughByDefault = true)
public class ShadowAudioStreamsHelper {
private static AudioStreamsHelper sMockHelper;
@Nullable private static CachedBluetoothDevice sCachedBluetoothDevice;
@@ -69,4 +70,16 @@
public LocalBluetoothLeBroadcastAssistant getLeBroadcastAssistant() {
return sMockHelper.getLeBroadcastAssistant();
}
+
+ /** Removes sources from LE broadcasts associated for all active sinks based on broadcast Id. */
+ @Implementation
+ public void removeSource(int broadcastId) {
+ sMockHelper.removeSource(broadcastId);
+ }
+
+ /** Adds the specified LE broadcast source to all active sinks. */
+ @Implementation
+ public void addSource(BluetoothLeBroadcastMetadata source) {
+ sMockHelper.addSource(source);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
index eea4f52..9427bbe 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
@@ -35,6 +35,8 @@
import android.hardware.usb.UsbManager;
import android.net.TetheringManager;
import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceCategory;
@@ -48,6 +50,7 @@
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -82,6 +85,8 @@
private FragmentActivity mActivity;
@Mock
private TetheringManager mTetheringManager;
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Before
public void setUp() {
@@ -349,6 +354,30 @@
assertThat(mFragment.isUserAuthenticated()).isTrue();
}
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_EXCLUDE_WEBCAM_AUTH_CHALLENGE)
+ public void onRadioButtonClicked_webcamNoAuthNeeded() {
+ mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_UVC));
+ doReturn(UsbManager.FUNCTION_MTP).when(mUsbBackend).getCurrentFunctions();
+ setAuthPassesAutomatically();
+
+ mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference);
+
+ assertThat(mFragment.isUserAuthenticated()).isFalse();
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_EXCLUDE_WEBCAM_AUTH_CHALLENGE)
+ public void onRadioButtonClicked_MidiNoAuthNeeded() {
+ mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_MIDI));
+ doReturn(UsbManager.FUNCTION_MTP).when(mUsbBackend).getCurrentFunctions();
+ setAuthPassesAutomatically();
+
+ mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference);
+
+ assertThat(mFragment.isUserAuthenticated()).isFalse();
+ }
+
private void setAuthPassesAutomatically() {
Shadows.shadowOf(mContext.getSystemService(KeyguardManager.class))
.setIsKeyguardSecure(false);
diff --git a/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java
index 460f6f9..c74512a 100644
--- a/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/DesktopModePreferenceControllerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 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.
@@ -16,10 +16,11 @@
package com.android.settings.development;
-import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS;
+import static android.provider.Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES;
import static com.android.settings.development.DesktopModePreferenceController.SETTING_VALUE_OFF;
import static com.android.settings.development.DesktopModePreferenceController.SETTING_VALUE_ON;
+import static com.android.settings.development.DesktopModePreferenceController.SETTING_VALUE_UNSET;
import static com.google.common.truth.Truth.assertThat;
@@ -30,6 +31,10 @@
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.res.Resources;
+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.fragment.app.FragmentActivity;
@@ -37,24 +42,30 @@
import androidx.fragment.app.FragmentTransaction;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.internal.R;
+import com.android.window.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.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowSystemProperties;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
com.android.settings.testutils.shadow.ShadowFragment.class,
})
+@EnableFlags(Flags.FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
public class DesktopModePreferenceControllerTest {
- private static final String ENG_BUILD_TYPE = "eng";
- private static final String USER_BUILD_TYPE = "user";
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock
private SwitchPreference mPreference;
@@ -69,61 +80,76 @@
@Mock
private FragmentTransaction mTransaction;
+ private Resources mResources;
private Context mContext;
private DesktopModePreferenceController mController;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
+
+ mContext = spy(ApplicationProvider.getApplicationContext());
doReturn(mTransaction).when(mFragmentManager).beginTransaction();
doReturn(mFragmentManager).when(mActivity).getSupportFragmentManager();
doReturn(mActivity).when(mFragment).getActivity();
+
+ mResources = spy(mContext.getResources());
+ when(mContext.getResources()).thenReturn(mResources);
+
mController = new DesktopModePreferenceController(mContext, mFragment);
+
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
mController.displayPreference(mScreen);
+
+ // Set desktop mode available
+ when(mResources.getBoolean(R.bool.config_isDesktopModeSupported))
+ .thenReturn(true);
+ ShadowSystemProperties.override("persist.wm.debug.desktop_mode_enforce_device_restrictions",
+ "false");
}
@Test
- public void isAvailable_engBuild_shouldBeTrue() {
+ public void isAvailable_desktopModeDevOptionNotSupported_returnsFalse() {
mController = spy(mController);
- doReturn(ENG_BUILD_TYPE).when(mController).getBuildType();
+ // Dev option is not supported if Desktop mode is not supported
+ when(mResources.getBoolean(R.bool.config_isDesktopModeSupported)).thenReturn(false);
+ ShadowSystemProperties.override("persist.wm.debug.desktop_mode_enforce_device_restrictions",
+ "true");
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_desktopModeDevOptionSupported_returnsTrue() {
+ mController = spy(mController);
assertThat(mController.isAvailable()).isTrue();
}
@Test
- public void isAvaiable_userBuild_shouldBeTrue() {
- mController = spy(mController);
- doReturn(USER_BUILD_TYPE).when(mController).getBuildType();
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void onPreferenceChange_switchEnabled_shouldEnableDesktopMode() {
+ public void onPreferenceChange_switchEnabled_putsSettingsOverrideOnAndTriggersRestart() {
mController.onPreferenceChange(mPreference, true /* new value */);
final int mode = Settings.Global.getInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, -1 /* default */);
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, -1 /* default */);
assertThat(mode).isEqualTo(SETTING_VALUE_ON);
-
verify(mTransaction).add(any(RebootConfirmationDialogFragment.class), any());
}
@Test
- public void onPreferenceChange_switchDisabled_shouldDisableDesktopMode() {
+ public void onPreferenceChange_switchDisabled_putsSettingsOverrideOffAndTriggersRestart() {
mController.onPreferenceChange(mPreference, false /* new value */);
- final int mode = Settings.Global.getInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, -1 /* default */);
+ int mode = Settings.Global.getInt(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, -1 /* default */);
assertThat(mode).isEqualTo(SETTING_VALUE_OFF);
+ verify(mTransaction).add(any(RebootConfirmationDialogFragment.class), any());
}
@Test
- public void updateState_settingEnabled_preferenceShouldBeChecked() {
+ public void updateState_overrideOn_checksPreference() {
Settings.Global.putInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_ON);
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_ON);
mController.updateState(mPreference);
@@ -131,9 +157,9 @@
}
@Test
- public void updateState_settingDisabled_preferenceShouldNotBeChecked() {
+ public void updateState_overrideOff_unchecksPreference() {
Settings.Global.putInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF);
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_OFF);
mController.updateState(mPreference);
@@ -141,12 +167,92 @@
}
@Test
- public void onDeveloperOptionsSwitchDisabled_shouldDisablePreference() {
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
+ public void updateState_overrideUnset_defaultDevOptionStatusOn_checksPreference() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_UNSET);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(true);
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
+ public void updateState_overrideUnset_defaultDevOptionStatusOff_unchecksPreference() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_UNSET);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(false);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
+ public void updateState_noOverride_defaultDevOptionStatusOn_checksPreference() {
+ // Set no override
+ Settings.Global.putString(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, null);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(true);
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
+ public void updateState_noOverride_defaultDevOptionStatusOff_unchecksPreference() {
+ // Set no override
+ Settings.Global.putString(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, null);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(false);
+ }
+
+ @Test
+ public void updateState_noOverride_noNewSettingsOverride() {
+ // Set no override
+ Settings.Global.putString(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, null);
+
+ mController.updateState(mPreference);
+
+ int mode = Settings.Global.getInt(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, -2 /* default */);
+ assertThat(mode).isEqualTo(-2);
+ }
+
+ @Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
+ public void updateState_overrideUnknown_defaultDevOptionStatusOn_checksPreference() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, -2);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(true);
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
+ public void updateState_overrideUnknown_defaultDevOptionStatusOff_unchecksPreference() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, -2);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(false);
+ }
+
+ @Test
+ public void onDeveloperOptionsSwitchDisabled_putsSettingsOverrideOff() {
mController.onDeveloperOptionsSwitchDisabled();
final int mode = Settings.Global.getInt(mContext.getContentResolver(),
- DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, -1 /* default */);
- assertThat(mode).isEqualTo(SETTING_VALUE_OFF);
- verify(mPreference).setEnabled(false);
+ DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, -2 /* default */);
+ assertThat(mode).isEqualTo(DesktopModePreferenceController.SETTING_VALUE_UNSET);
}
}
diff --git a/tests/robotests/src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceControllerTest.java
new file mode 100644
index 0000000..5931004
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceControllerTest.java
@@ -0,0 +1,152 @@
+/*
+ * 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.development;
+
+import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS;
+
+import static com.android.settings.development.DesktopModeSecondaryDisplayPreferenceController.SETTING_VALUE_OFF;
+import static com.android.settings.development.DesktopModeSecondaryDisplayPreferenceController.SETTING_VALUE_ON;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+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;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {
+ com.android.settings.testutils.shadow.ShadowFragment.class,
+})
+public class DesktopModeSecondaryDisplayPreferenceControllerTest {
+
+ private static final String ENG_BUILD_TYPE = "eng";
+ private static final String USER_BUILD_TYPE = "user";
+
+ @Mock
+ private SwitchPreference mPreference;
+ @Mock
+ private PreferenceScreen mScreen;
+ @Mock
+ private DevelopmentSettingsDashboardFragment mFragment;
+ @Mock
+ private FragmentActivity mActivity;
+ @Mock
+ private FragmentManager mFragmentManager;
+ @Mock
+ private FragmentTransaction mTransaction;
+
+ private Context mContext;
+ private DesktopModeSecondaryDisplayPreferenceController mController;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ doReturn(mTransaction).when(mFragmentManager).beginTransaction();
+ doReturn(mFragmentManager).when(mActivity).getSupportFragmentManager();
+ doReturn(mActivity).when(mFragment).getActivity();
+ mController = new DesktopModeSecondaryDisplayPreferenceController(mContext, mFragment);
+ when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
+ mController.displayPreference(mScreen);
+ }
+
+ @Test
+ public void isAvailable_engBuild_shouldBeTrue() {
+ mController = spy(mController);
+ doReturn(ENG_BUILD_TYPE).when(mController).getBuildType();
+
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void isAvailable_userBuild_shouldBeTrue() {
+ mController = spy(mController);
+ doReturn(USER_BUILD_TYPE).when(mController).getBuildType();
+
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void onPreferenceChange_switchEnabled_enablesDesktopModeOnSecondaryDisplay() {
+ mController.onPreferenceChange(mPreference, true /* new value */);
+
+ final int mode = Settings.Global.getInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, -1 /* default */);
+ assertThat(mode).isEqualTo(SETTING_VALUE_ON);
+
+ verify(mTransaction).add(any(RebootConfirmationDialogFragment.class), any());
+ }
+
+ @Test
+ public void onPreferenceChange_switchDisabled_disablesDesktopModeOnSecondaryDisplay() {
+ mController.onPreferenceChange(mPreference, false /* new value */);
+
+ final int mode = Settings.Global.getInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, -1 /* default */);
+ assertThat(mode).isEqualTo(SETTING_VALUE_OFF);
+ }
+
+ @Test
+ public void updateState_settingEnabled_checksPreference() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_ON);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(true);
+ }
+
+ @Test
+ public void updateState_settingDisabled_unchecksPreference() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setChecked(false);
+ }
+
+ @Test
+ public void onDeveloperOptionsSwitchDisabled_disablesPreference() {
+ mController.onDeveloperOptionsSwitchDisabled();
+
+ final int mode = Settings.Global.getInt(mContext.getContentResolver(),
+ DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, -1 /* default */);
+ assertThat(mode).isEqualTo(SETTING_VALUE_OFF);
+ verify(mPreference).setEnabled(false);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
index 7bafc6d..851dc79 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryInfoTest.java
@@ -48,6 +48,7 @@
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.UsageView;
import com.android.settingslib.fuelgauge.Estimate;
+import com.android.settingslib.utils.PowerUtil;
import org.junit.After;
import org.junit.Before;
@@ -93,7 +94,8 @@
Map.of(
ChargingType.WIRED, BatteryManager.BATTERY_PLUGGED_AC,
ChargingType.WIRELESS, BatteryManager.BATTERY_PLUGGED_WIRELESS,
- ChargingType.DOCKED, BatteryManager.BATTERY_PLUGGED_DOCK);
+ ChargingType.DOCKED, BatteryManager.BATTERY_PLUGGED_DOCK,
+ ChargingType.NONE, 0);
private static final Map<ChargingSpeed, Integer> CHARGING_SPEED_MAP =
Map.of(
ChargingSpeed.FAST, 1501000,
@@ -789,6 +791,126 @@
expectedChargeLabel);
}
+ @Test
+ public void getBatteryInfo_longlife_shouldSetLonglife() {
+ var batteryIntent = createIntentForLongLifeTest(/* hasLongLife= */ true);
+
+ var batteryInfo =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ batteryIntent,
+ mBatteryUsageStats,
+ /* estimate= */ MOCK_ESTIMATE,
+ /* elapsedRealtimeUs= */ 0L,
+ /* shortString= */ false,
+ /* currentTimeMs= */ 0L);
+
+ assertThat(batteryInfo.isLongLife).isTrue();
+ }
+
+ @Test
+ public void getBatteryInfo_noLonglife_shouldNotLonglife() {
+ var batteryIntent = createIntentForLongLifeTest(/* hasLongLife= */ false);
+
+ var batteryInfo =
+ BatteryInfo.getBatteryInfo(
+ mContext,
+ batteryIntent,
+ mBatteryUsageStats,
+ /* estimate= */ MOCK_ESTIMATE,
+ /* elapsedRealtimeUs= */ 0L,
+ /* shortString= */ false,
+ /* currentTimeMs= */ 0L);
+
+ assertThat(batteryInfo.isLongLife).isFalse();
+ }
+
+ @Test
+ public void getBatteryInfo_plugTypeNoneWithLonglifeAndChargeOptimization_chargingString() {
+ prepareTestGetBatteryInfoEnvironment(
+ /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
+ /* chargingStringV2Enabled= */ false);
+ Intent batteryIntent =
+ createIntentForGetBatteryInfoTest(
+ ChargingType.NONE,
+ ChargingSpeed.REGULAR,
+ /* batteryLevel= */ 85,
+ BatteryManager.BATTERY_STATUS_DISCHARGING,
+ /* isLonglife= */ true);
+ var expectedRemainingLabel = "Expected remaining label";
+ var expectedChargeLabel = "85% - " + expectedRemainingLabel;
+ when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext))
+ .thenReturn(true);
+ when(mFeatureFactory.batterySettingsFeatureProvider.getChargingOptimizationRemainingLabel(
+ eq(mContext), anyInt(), anyInt(), anyLong(), anyLong()))
+ .thenReturn(expectedRemainingLabel);
+ when(mFeatureFactory.batterySettingsFeatureProvider.getChargingOptimizationChargeLabel(
+ eq(mContext), anyInt(), anyString(), anyLong(), anyLong()))
+ .thenReturn(expectedChargeLabel);
+ var expectedStatusLabel = "Not charging";
+
+ assertGetBatteryInfo(
+ batteryIntent,
+ /* currentTimeMillis= */ UNUSED_TIME_MS,
+ expectedStatusLabel,
+ expectedRemainingLabel,
+ expectedChargeLabel);
+ }
+
+ @Test
+ public void getBatteryInfo_plugTypeNoneNotChargeOptimizationLonglife_dischargingString() {
+ prepareTestGetBatteryInfoEnvironment(
+ /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
+ /* chargingStringV2Enabled= */ false);
+ Intent batteryIntent =
+ createIntentForGetBatteryInfoTest(
+ ChargingType.NONE,
+ ChargingSpeed.REGULAR,
+ /* batteryLevel= */ 85,
+ BatteryManager.BATTERY_STATUS_DISCHARGING,
+ /* isLonglife= */ true);
+ var expectedRemainingLabel =
+ PowerUtil.getBatteryRemainingShortStringFormatted(
+ mContext, PowerUtil.convertUsToMs(1000L));
+ when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext))
+ .thenReturn(false);
+ var expectedStatusLabel = "Not charging";
+
+ assertGetBatteryInfo(
+ batteryIntent,
+ /* currentTimeMillis= */ UNUSED_TIME_MS,
+ expectedStatusLabel,
+ expectedRemainingLabel,
+ expectedRemainingLabel);
+ }
+
+ @Test
+ public void getBatteryInfo_plugTypeNoneChargeOptimizationNotLonglife_dischargingString() {
+ prepareTestGetBatteryInfoEnvironment(
+ /* remainingTimeMs= */ Duration.ofMinutes(130).toMillis(),
+ /* chargingStringV2Enabled= */ false);
+ Intent batteryIntent =
+ createIntentForGetBatteryInfoTest(
+ ChargingType.NONE,
+ ChargingSpeed.REGULAR,
+ /* batteryLevel= */ 85,
+ BatteryManager.BATTERY_STATUS_DISCHARGING,
+ /* isLonglife= */ false);
+ var expectedRemainingLabel =
+ PowerUtil.getBatteryRemainingShortStringFormatted(
+ mContext, PowerUtil.convertUsToMs(1000L));
+ when(mFeatureFactory.batterySettingsFeatureProvider.isChargingOptimizationMode(mContext))
+ .thenReturn(true);
+ var expectedStatusLabel = "Not charging";
+
+ assertGetBatteryInfo(
+ batteryIntent,
+ /* currentTimeMillis= */ UNUSED_TIME_MS,
+ expectedStatusLabel,
+ expectedRemainingLabel,
+ expectedRemainingLabel);
+ }
+
private enum ChargingSpeed {
FAST,
REGULAR,
@@ -798,19 +920,46 @@
private enum ChargingType {
WIRED,
WIRELESS,
- DOCKED
+ DOCKED,
+ NONE
}
- private Intent createIntentForGetBatteryInfoTest(
+ private static Intent createIntentForLongLifeTest(Boolean hasLongLife) {
+ return new Intent(Intent.ACTION_BATTERY_CHANGED)
+ .putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
+ hasLongLife
+ ? BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE
+ : BatteryManager.CHARGING_POLICY_DEFAULT);
+ }
+
+ private static Intent createIntentForGetBatteryInfoTest(
ChargingType chargingType, ChargingSpeed chargingSpeed, int batteryLevel) {
+ return createIntentForGetBatteryInfoTest(
+ chargingType,
+ chargingSpeed,
+ batteryLevel,
+ BatteryManager.BATTERY_STATUS_CHARGING,
+ /* isLonglife= */ false);
+ }
+
+ private static Intent createIntentForGetBatteryInfoTest(
+ ChargingType chargingType,
+ ChargingSpeed chargingSpeed,
+ int batteryLevel,
+ int chargingStatus,
+ boolean isLonglife) {
return createBatteryIntent(
- CHARGING_TYPE_MAP.get(chargingType),
- batteryLevel,
- BatteryManager.BATTERY_STATUS_CHARGING)
+ CHARGING_TYPE_MAP.get(chargingType), batteryLevel, chargingStatus)
.putExtra(
BatteryManager.EXTRA_MAX_CHARGING_CURRENT,
CHARGING_SPEED_MAP.get(chargingSpeed))
- .putExtra(BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE, 5000000);
+ .putExtra(BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE, 5000000)
+ .putExtra(
+ BatteryManager.EXTRA_CHARGING_STATUS,
+ isLonglife
+ ? BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE
+ : BatteryManager.CHARGING_POLICY_DEFAULT);
}
private void prepareTestGetBatteryInfoEnvironment(
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index 354afd0..962c40f 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -78,6 +78,16 @@
}
@Test
+ public void isRestrictedModeOverwriteEnabled_returnFalse() {
+ assertThat(mPowerFeatureProvider.isRestrictedModeOverwriteEnabled()).isFalse();
+ }
+
+ @Test
+ public void isForceExpireAppOptimizationModeEnabled_returnFalse() {
+ assertThat(mPowerFeatureProvider.isForceExpireAppOptimizationModeEnabled()).isFalse();
+ }
+
+ @Test
public void isAppOptimizationModeLogged_returnFalse() {
assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse();
}
@@ -160,7 +170,7 @@
@Test
public void isBatteryDefend_defenderModeAndExtraDefendAreFalse_returnFalse() {
- mBatteryInfo.isBatteryDefender = false;
+ mBatteryInfo.isLongLife = false;
doReturn(false).when(mPowerFeatureProvider).isExtraDefend();
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse();
@@ -168,7 +178,7 @@
@Test
public void isBatteryDefend_defenderModeIsFalse_returnFalse() {
- mBatteryInfo.isBatteryDefender = false;
+ mBatteryInfo.isLongLife = false;
doReturn(true).when(mPowerFeatureProvider).isExtraDefend();
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse();
@@ -176,7 +186,7 @@
@Test
public void isBatteryDefend_defenderModeAndExtraDefendAreTrue_returnFalse() {
- mBatteryInfo.isBatteryDefender = true;
+ mBatteryInfo.isLongLife = true;
doReturn(true).when(mPowerFeatureProvider).isExtraDefend();
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isFalse();
@@ -184,7 +194,7 @@
@Test
public void isBatteryDefend_extraDefendIsFalse_returnTrue() {
- mBatteryInfo.isBatteryDefender = true;
+ mBatteryInfo.isLongLife = true;
doReturn(false).when(mPowerFeatureProvider).isExtraDefend();
assertThat(mPowerFeatureProvider.isBatteryDefend(mBatteryInfo)).isTrue();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
index ab1ceb5..7643c41 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/BatteryDefenderDetectorTest.java
@@ -18,15 +18,12 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
-import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
import org.junit.Test;
@@ -41,28 +38,23 @@
@Mock private BatteryInfo mBatteryInfo;
private BatteryDefenderDetector mBatteryDefenderDetector;
- private FakeFeatureFactory mFakeFeatureFactory;
-
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
final Context context = ApplicationProvider.getApplicationContext();
mBatteryDefenderDetector = new BatteryDefenderDetector(mBatteryInfo, context);
- mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
}
@Test
public void detect_notBatteryDefend_tipInvisible() {
- when(mFakeFeatureFactory.powerUsageFeatureProvider.isBatteryDefend(mBatteryInfo))
- .thenReturn(false);
+ mBatteryInfo.isBatteryDefender = false;
assertThat(mBatteryDefenderDetector.detect().isVisible()).isFalse();
}
@Test
public void detect_isBatteryDefend_tipNew() {
- when(mFakeFeatureFactory.powerUsageFeatureProvider.isBatteryDefend(mBatteryInfo))
- .thenReturn(true);
+ mBatteryInfo.isBatteryDefender = true;
assertThat(mBatteryDefenderDetector.detect().getState())
.isEqualTo(BatteryTip.StateType.NEW);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
index 4567bc3..0e10a15 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntryTest.java
@@ -494,6 +494,7 @@
final ContentValues values =
getContentValuesWithType(ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
values.put(BatteryHistEntry.KEY_UID, /*invalid uid*/ 10001);
+ values.put(BatteryHistEntry.KEY_USER_ID, /*valid userid*/ USER_ID);
values.put(BatteryHistEntry.KEY_PACKAGE_NAME, fakePackageName);
final BatteryDiffEntry entry = createBatteryDiffEntry(10, new BatteryHistEntry(values));
@@ -503,14 +504,16 @@
doReturn(BatteryUtils.UID_NULL)
.when(mMockPackageManager)
- .getPackageUid(entry.getPackageName(), PackageManager.GET_META_DATA);
+ .getPackageUidAsUser(
+ entry.getPackageName(), PackageManager.GET_META_DATA, USER_ID);
entry.updateRestrictionFlagState();
// Sets false if the app is invalid package name.
assertThat(entry.mValidForRestriction).isFalse();
doReturn(1000)
.when(mMockPackageManager)
- .getPackageUid(entry.getPackageName(), PackageManager.GET_META_DATA);
+ .getPackageUidAsUser(
+ entry.getPackageName(), PackageManager.GET_META_DATA, USER_ID);
entry.updateRestrictionFlagState();
// Sets false if the app PackageInfo cannot be found.
assertThat(entry.mValidForRestriction).isFalse();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
index 450d058..6147778 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryEntryTest.java
@@ -132,7 +132,7 @@
createBatteryEntryForApp(null, APP_DEFAULT_PACKAGE_NAME, HIGH_DRAIN_PACKAGE);
assertThat(entry.getDefaultPackageName()).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
- assertThat(entry.getLabel()).isEqualTo(LABEL_PREFIX + APP_DEFAULT_PACKAGE_NAME);
+ assertThat(entry.getLabel()).isEqualTo(APP_DEFAULT_PACKAGE_NAME);
}
@Test
@@ -152,7 +152,7 @@
BatteryEntry entry = createBatteryEntryForApp(null, null, HIGH_DRAIN_PACKAGE);
- assertThat(entry.getLabel()).isEqualTo(LABEL_PREFIX + HIGH_DRAIN_PACKAGE);
+ assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
}
@Test
@@ -163,7 +163,7 @@
null,
HIGH_DRAIN_PACKAGE);
- assertThat(entry.getLabel()).isEqualTo(LABEL_PREFIX + HIGH_DRAIN_PACKAGE);
+ assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
index b5cb446..a3b35be 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java
@@ -703,4 +703,26 @@
/* taskRootPackageName= */ ""))
.isEqualTo(packageName);
}
+
+ @Test
+ public void decodeBatteryReattribute_returnExpectedResult() {
+ final BatteryReattribute batteryReattribute =
+ BatteryReattribute.newBuilder()
+ .setTimestampStart(100L)
+ .setTimestampEnd(200L)
+ .putReattributeData(1001, 0.2f)
+ .putReattributeData(2001, 0.8f)
+ .build();
+
+ final BatteryReattribute decodeResult = ConvertUtils.decodeBatteryReattribute(
+ ConvertUtils.encodeBatteryReattribute(batteryReattribute));
+
+ assertThat(decodeResult.getTimestampStart()).isEqualTo(100L);
+ assertThat(decodeResult.getTimestampEnd()).isEqualTo(200L);
+ final Map<Integer, Float> reattributeDataMap = decodeResult.getReattributeDataMap();
+ // Verify the reattribute data in the map.
+ assertThat(reattributeDataMap).hasSize(2);
+ assertThat(reattributeDataMap.get(1001)).isEqualTo(0.2f);
+ assertThat(reattributeDataMap.get(2001)).isEqualTo(0.8f);
+ }
}
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 6042801..2f20b42 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java
@@ -112,6 +112,7 @@
mContext,
/* handler= */ null,
mUserIdsSeries,
+ /* isFromPeriodJob= */ false,
/* rawStartTimestamp= */ 0L,
/* lastFullChargeTimestamp= */ 0L,
/* callbackFunction= */ null,
@@ -258,6 +259,7 @@
mContext,
/* handler= */ null,
mUserIdsSeries,
+ /* isFromPeriodJob= */ false,
/* rawStartTimestamp= */ 2L,
/* lastFullChargeTimestamp= */ 1L,
/* callbackFunction= */ null,
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java
new file mode 100644
index 0000000..bf2b191
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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.batteryusage.bugreport;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.fuelgauge.batteryusage.BatteryReattribute;
+import com.android.settings.fuelgauge.batteryusage.db.BatteryReattributeDao;
+import com.android.settings.fuelgauge.batteryusage.db.BatteryReattributeEntity;
+import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase;
+import com.android.settings.testutils.BatteryTestUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.robolectric.RobolectricTestRunner;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+@RunWith(RobolectricTestRunner.class)
+public final class LogUtilsTest {
+
+ private StringWriter mTestStringWriter;
+ private PrintWriter mTestPrintWriter;
+ private Context mContext;
+ private BatteryStateDatabase mDatabase;
+ private BatteryReattributeDao mBatteryReattributeDao;
+
+ @Before
+ public void setUp() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mTestStringWriter = new StringWriter();
+ mTestPrintWriter = new PrintWriter(mTestStringWriter);
+ mDatabase = BatteryTestUtils.setUpBatteryStateDatabase(mContext);
+ mBatteryReattributeDao = mDatabase.batteryReattributeDao();
+ }
+
+ @After
+ public void cleanUp() {
+ mBatteryReattributeDao.clearAll();
+ }
+
+ @Test
+ public void dumpBatteryReattributeDatabaseHist_noData_printExpectedResult() {
+ LogUtils.dumpBatteryReattributeDatabaseHist(mBatteryReattributeDao, mTestPrintWriter);
+
+ assertThat(mTestStringWriter.toString())
+ .contains("BatteryReattribute DatabaseHistory:");
+ }
+
+ @Test
+ public void dumpBatteryReattributeDatabaseHist_printExpectedResult() {
+ final long currentTimeMillis = System.currentTimeMillis();
+ // Insert the first testing data.
+ final BatteryReattribute batteryReattribute1 =
+ BatteryReattribute.newBuilder()
+ .setTimestampStart(currentTimeMillis - 20000)
+ .setTimestampEnd(currentTimeMillis - 10000)
+ .putReattributeData(1001, 0.1f)
+ .putReattributeData(1002, 0.99f)
+ .build();
+ mBatteryReattributeDao.insert(new BatteryReattributeEntity(batteryReattribute1));
+ // Insert the second testing data.
+ final BatteryReattribute batteryReattribute2 =
+ BatteryReattribute.newBuilder()
+ .setTimestampStart(currentTimeMillis - 40000)
+ .setTimestampEnd(currentTimeMillis - 20000)
+ .putReattributeData(1003, 1f)
+ .build();
+ mBatteryReattributeDao.insert(new BatteryReattributeEntity(batteryReattribute2));
+
+ LogUtils.dumpBatteryReattributeDatabaseHist(mBatteryReattributeDao, mTestPrintWriter);
+
+ final String result = mTestStringWriter.toString();
+ assertThat(result).contains("BatteryReattribute DatabaseHistory:");
+ assertThat(result).contains(batteryReattribute1.toString());
+ assertThat(result).contains(batteryReattribute2.toString());
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeDaoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeDaoTest.java
new file mode 100644
index 0000000..8cb0e12
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeDaoTest.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.fuelgauge.batteryusage.db;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.testutils.BatteryTestUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+import java.util.List;
+
+/** Tests for {@link BatteryReattributeDao}. */
+@RunWith(RobolectricTestRunner.class)
+public final class BatteryReattributeDaoTest {
+
+ private Context mContext;
+ private BatteryStateDatabase mDatabase;
+ private BatteryReattributeDao mBatteryReattributeDao;
+
+ @Before
+ public void setUp() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mDatabase = BatteryTestUtils.setUpBatteryStateDatabase(mContext);
+ mBatteryReattributeDao = mDatabase.batteryReattributeDao();
+ insert(100L, 200L, "reattributeData1");
+ insert(300L, 400L, "reattributeData3");
+ insert(200L, 300L, "reattributeData2");
+ insert(400L, 500L, "reattributeData4");
+ // Ensure there was data inserted into the database.
+ assertThat(getAllEntityData()).isNotEmpty();
+ }
+
+ @Test
+ public void getAllAfter_returnExpectedEntityData() {
+ final List<BatteryReattributeEntity> entityDataList =
+ mBatteryReattributeDao.getAllAfter(/* timestampStart= */ 300L);
+
+ assertThat(entityDataList).hasSize(2);
+ assertEntity(entityDataList.get(0), 400L, 500L, "reattributeData4");
+ assertEntity(entityDataList.get(1), 300L, 400L, "reattributeData3");
+ }
+
+ @Test
+ public void clearAll_clearAllData() {
+ mBatteryReattributeDao.clearAll();
+
+ assertThat(getAllEntityData()).isEmpty();
+ }
+
+ @Test
+ public void clearAllBefore_clearAllExpectedData() {
+ mBatteryReattributeDao.clearAllBefore(/* timestampStart= */ 300L);
+
+ final List<BatteryReattributeEntity> entityDataList = getAllEntityData();
+ assertThat(entityDataList).hasSize(1);
+ assertEntity(entityDataList.get(0), 400L, 500L, "reattributeData4");
+ }
+
+ @Test
+ public void clearAllAfter_clearAllExpectedData() {
+ mBatteryReattributeDao.clearAllAfter(/* timestampStart= */ 300L);
+
+ final List<BatteryReattributeEntity> entityDataList = getAllEntityData();
+ assertThat(entityDataList).hasSize(2);
+ assertEntity(entityDataList.get(0), 200L, 300L, "reattributeData2");
+ assertEntity(entityDataList.get(1), 100L, 200L, "reattributeData1");
+ }
+
+ @Test
+ public void insert_samePrimaryKeyEntityData_replaceIntoNewEntityData() {
+ // Verify the original data before update.
+ assertEntity(getAllEntityData().get(0), 400L, 500L, "reattributeData4");
+
+ insert(400L, 600L, "reattribute4Update");
+
+ // Verify the new update entity data.
+ assertEntity(getAllEntityData().get(0), 400L, 600L, "reattribute4Update");
+ }
+
+ private void insert(long timestampStart, long timestampEnd, String reattributeData) {
+ mBatteryReattributeDao.insert(
+ new BatteryReattributeEntity(
+ timestampStart, timestampEnd, reattributeData));
+ }
+
+ private List<BatteryReattributeEntity> getAllEntityData() {
+ return mBatteryReattributeDao.getAllAfter(/* timestampStart= */ 0L);
+ }
+
+ private static void assertEntity(BatteryReattributeEntity entity, long timestampStart,
+ long timestampEnd, String reattributeData) {
+ assertThat(entity.timestampStart).isEqualTo(timestampStart);
+ assertThat(entity.timestampEnd).isEqualTo(timestampEnd);
+ assertThat(entity.reattributeData).isEqualTo(reattributeData);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeEntityTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeEntityTest.java
new file mode 100644
index 0000000..04912aa
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryReattributeEntityTest.java
@@ -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.fuelgauge.batteryusage.db;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.android.settings.fuelgauge.batteryusage.BatteryReattribute;
+import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link BatteryReattributeEntity}. */
+@RunWith(RobolectricTestRunner.class)
+public final class BatteryReattributeEntityTest {
+
+ @Test
+ public void constructor_createExpectedData() {
+ final BatteryReattribute batteryReattribute =
+ BatteryReattribute.newBuilder()
+ .setTimestampStart(100L)
+ .setTimestampEnd(200L)
+ .putReattributeData(1001, 0.2f)
+ .putReattributeData(2001, 0.8f)
+ .build();
+
+ final BatteryReattributeEntity batteryReattributeEntity =
+ new BatteryReattributeEntity(batteryReattribute);
+
+ assertThat(batteryReattributeEntity.timestampStart)
+ .isEqualTo(batteryReattribute.getTimestampStart());
+ assertThat(batteryReattributeEntity.timestampEnd)
+ .isEqualTo(batteryReattribute.getTimestampEnd());
+ // Verify the BatteryReattribute data.
+ final BatteryReattribute decodeResult =
+ ConvertUtils.decodeBatteryReattribute(batteryReattributeEntity.reattributeData);
+ assertThat(decodeResult).isEqualTo(batteryReattribute);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/inputmethod/PointerScaleSeekBarControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/PointerScaleSeekBarControllerTest.java
new file mode 100644
index 0000000..152649f
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/inputmethod/PointerScaleSeekBarControllerTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2022 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 android.view.flags.Flags.enableVectorCursorA11ySettings;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeTrue;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.widget.SeekBar;
+
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.testutils.shadow.ShadowSystemSettings;
+import com.android.settings.widget.LabeledSeekBarPreference;
+
+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;
+
+/** Tests for {@link PointerScaleSeekBarController} */
+@RunWith(RobolectricTestRunner.class)
+@Config(shadows = {
+ ShadowSystemSettings.class,
+})
+public class PointerScaleSeekBarControllerTest {
+
+ private static final String PREFERENCE_KEY = "pointer_scale";
+
+ @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+ @Mock private PreferenceScreen mPreferenceScreen;
+
+ private Context mContext;
+ private LabeledSeekBarPreference mPreference;
+ private PointerScaleSeekBarController mController;
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ mPreference = new LabeledSeekBarPreference(mContext, null);
+ mController = new PointerScaleSeekBarController(mContext, PREFERENCE_KEY);
+ }
+
+ @Test
+ public void getAvailabilityStatus_flagEnabled() {
+ assumeTrue(enableVectorCursorA11ySettings());
+
+ assertEquals(mController.getAvailabilityStatus(), AVAILABLE);
+ }
+
+ @Test
+ public void onProgressChanged_changeListenerUpdatesSetting() {
+ when(mPreferenceScreen.findPreference(anyString())).thenReturn(mPreference);
+ mController.displayPreference(mPreferenceScreen);
+ SeekBar seekBar = mPreference.getSeekbar();
+ int sliderValue = 1;
+
+ mPreference.onProgressChanged(seekBar, sliderValue, false);
+
+ float expectedScale = 1.5f;
+ float currentScale = Settings.System.getFloatForUser(mContext.getContentResolver(),
+ Settings.System.POINTER_SCALE, -1, UserHandle.USER_CURRENT);
+ assertEquals(expectedScale, currentScale, /* delta= */ 0.001f);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index fb29e05..0161178 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -51,6 +51,7 @@
import android.os.PowerManager;
import android.os.UserManager;
import android.provider.Settings;
+import android.telephony.SubscriptionManager;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
@@ -319,7 +320,8 @@
mNetworkProviderSettings.onCreate(Bundle.EMPTY);
verify(mDataUsagePreference).setVisible(true);
- verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/);
+ verify(mDataUsagePreference)
+ .setTemplate(any(), eq(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java
new file mode 100644
index 0000000..8b8c77e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/app/BundleListPreferenceControllerTest.java
@@ -0,0 +1,160 @@
+/*
+ * 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.notification.app;
+
+import static android.app.NotificationChannel.NEWS_ID;
+import static android.app.NotificationChannel.PROMOTIONS_ID;
+import static android.app.NotificationChannel.RECS_ID;
+import static android.app.NotificationChannel.SOCIAL_MEDIA_ID;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.NotificationChannel;
+import android.content.Context;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.service.notification.Flags;
+
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.filters.SmallTest;
+
+import com.android.settings.notification.NotificationBackend;
+import com.android.settingslib.PrimarySwitchPreference;
+
+import com.google.common.collect.ImmutableMap;
+
+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;
+
+@RunWith(RobolectricTestRunner.class)
+@SmallTest
+@EnableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION)
+public class BundleListPreferenceControllerTest {
+ private Context mContext;
+ @Mock
+ private NotificationBackend mBackend;
+ private NotificationBackend.AppRow mAppRow;
+ private BundleListPreferenceController mController;
+ private PreferenceManager mPreferenceManager;
+ private PreferenceScreen mPreferenceScreen;
+ private PreferenceCategory mGroupList;
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mContext = ApplicationProvider.getApplicationContext();
+
+ mAppRow = new NotificationBackend.AppRow();
+ mAppRow.pkg = "pkg";
+ mAppRow.uid = 1111111;
+ NotificationBackend.NotificationsSentState
+ sentA = new NotificationBackend.NotificationsSentState();
+ sentA.avgSentDaily = 2;
+ sentA.avgSentWeekly = 10;
+ NotificationBackend.NotificationsSentState
+ sentB = new NotificationBackend.NotificationsSentState();
+ sentB.avgSentDaily = 0;
+ sentB.avgSentWeekly = 2;
+ mAppRow.sentByChannel = ImmutableMap.of(
+ PROMOTIONS_ID, sentA, NEWS_ID, sentA, SOCIAL_MEDIA_ID, sentB, RECS_ID, sentB);
+ mController = new BundleListPreferenceController(mContext, mBackend);
+ mController.onResume(mAppRow, null, null, null, null, null, null);
+ mPreferenceManager = new PreferenceManager(mContext);
+ 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
+ public void isAvailable_null() {
+ mController.onResume(null, null, null, null, null, null, null);
+ assertThat(mController.isAvailable()).isFalse();
+ mAppRow.banned = true;
+ }
+
+ @Test
+ public void isAvailable_banned() {
+ mAppRow.banned = true;
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_locked() {
+ mAppRow.lockedImportance = true;
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable_system() {
+ mAppRow.systemApp = true;
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ public void isAvailable() {
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void updateState() {
+ mController.updateState(mGroupList);
+ assertThat(mGroupList.getPreferenceCount()).isEqualTo(4);
+ assertThat(mGroupList.findPreference(PROMOTIONS_ID).getTitle()).isEqualTo(PROMOTIONS_ID);
+ assertThat(mGroupList.findPreference(NEWS_ID).getTitle()).isEqualTo(NEWS_ID);
+ assertThat(mGroupList.findPreference(SOCIAL_MEDIA_ID).getTitle())
+ .isEqualTo(SOCIAL_MEDIA_ID);
+ assertThat(mGroupList.findPreference(RECS_ID).getTitle()).isEqualTo(RECS_ID);
+ }
+
+ @Test
+ public void updateState_updateChildren() {
+ mController.updateState(mGroupList);
+ assertThat(mGroupList.getPreferenceCount()).isEqualTo(4);
+
+ when(mBackend.getChannel(mAppRow.pkg, mAppRow.uid, PROMOTIONS_ID)).thenReturn(
+ new NotificationChannel(PROMOTIONS_ID, PROMOTIONS_ID, 2));
+
+ 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/DeletedChannelsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/DeletedChannelsPreferenceControllerTest.java
index 5c9de7c..267b8d7 100644
--- a/tests/robotests/src/com/android/settings/notification/app/DeletedChannelsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/DeletedChannelsPreferenceControllerTest.java
@@ -31,12 +31,17 @@
import android.app.NotificationManager;
import android.content.Context;
import android.os.UserManager;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
+import com.android.server.notification.Flags;
import com.android.settings.notification.NotificationBackend;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -60,6 +65,8 @@
private UserManager mUm;
private DeletedChannelsPreferenceController mController;
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Before
public void setUp() {
@@ -109,6 +116,16 @@
}
@Test
+ @EnableFlags(Flags.FLAG_NOTIFICATION_HIDE_UNUSED_CHANNELS)
+ public void isAvailable_notIfFlagEnabled() {
+ when(mBackend.getDeletedChannelCount(any(), anyInt())).thenReturn(1);
+ mController.onResume(
+ new NotificationBackend.AppRow(), null, null, null, null, null, new ArrayList<>());
+ assertFalse(mController.isAvailable());
+ }
+
+ @Test
+ @DisableFlags(Flags.FLAG_NOTIFICATION_HIDE_UNUSED_CHANNELS)
public void isAvailable_appScreen() {
when(mBackend.getDeletedChannelCount(any(), anyInt())).thenReturn(1);
mController.onResume(
diff --git a/tests/robotests/src/com/android/settings/notification/app/ShowMorePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/ShowMorePreferenceControllerTest.java
new file mode 100644
index 0000000..611c80a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/app/ShowMorePreferenceControllerTest.java
@@ -0,0 +1,113 @@
+/*
+ * 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.app;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertFalse;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.app.NotificationChannelGroup;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.UserManager;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.preference.Preference;
+
+import com.android.server.notification.Flags;
+import com.android.settings.notification.NotificationBackend;
+
+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.shadows.ShadowApplication;
+
+@RunWith(RobolectricTestRunner.class)
+@EnableFlags(Flags.FLAG_NOTIFICATION_HIDE_UNUSED_CHANNELS)
+public class ShowMorePreferenceControllerTest {
+
+ private Context mContext;
+ @Mock
+ private NotificationBackend mBackend;
+ @Mock
+ private NotificationManager mNm;
+ @Mock
+ private UserManager mUm;
+ @Mock
+ private NotificationSettings.DependentFieldListener mDependentFieldListener;
+
+ private ShowMorePreferenceController mController;
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ ShadowApplication shadowApplication = ShadowApplication.getInstance();
+ shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm);
+ shadowApplication.setSystemService(Context.USER_SERVICE, mUm);
+ mContext = RuntimeEnvironment.application;
+ mController = new ShowMorePreferenceController(mContext, mDependentFieldListener, mBackend);
+ }
+
+ @Test
+ public void noCrashIfNoOnResume() {
+ mController.isAvailable();
+ mController.updateState(mock(Preference.class));
+ }
+
+ @Test
+ public void isAvailable_notIfAppBlocked() {
+ NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
+ appRow.banned = true;
+ appRow.showAllChannels = false;
+ mController.onResume(appRow, null, null, null, null, null, null);
+ assertFalse(mController.isAvailable());
+ }
+
+ @Test
+ public void isAvailable_notIfShowingAll() {
+ NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
+ mController.onResume(appRow, null, mock(NotificationChannelGroup.class), null, null, null,
+ null);
+ assertFalse(mController.isAvailable());
+ }
+
+ @Test
+ public void updateState() {
+ NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
+ appRow.banned = false;
+ appRow.showAllChannels = false;
+ mController.onResume(appRow, null, null, null, null, null, null);
+
+ Preference pref = new Preference(mContext);
+ mController.updateState(pref);
+
+ pref.performClick();
+
+ verify(mDependentFieldListener).onFieldValueChanged();
+ assertThat(appRow.showAllChannels).isTrue();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ConfigurationActivityHelperTest.java b/tests/robotests/src/com/android/settings/notification/modes/ConfigurationActivityHelperTest.java
new file mode 100644
index 0000000..1c72e87
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/ConfigurationActivityHelperTest.java
@@ -0,0 +1,183 @@
+/*
+ * 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.modes;
+
+import static android.app.NotificationManager.EXTRA_AUTOMATIC_RULE_ID;
+import static android.service.notification.ConditionProviderService.EXTRA_RULE_ID;
+
+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.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.service.notification.ConditionProviderService;
+
+import com.android.settingslib.notification.modes.ZenMode;
+
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+
+@RunWith(RobolectricTestRunner.class)
+public class ConfigurationActivityHelperTest {
+
+ private Context mContext;
+ private ConfigurationActivityHelper mHelper;
+
+ @Mock private PackageManager mPm;
+ @Mock private Function<ComponentName, ComponentInfo> mApprovedServiceFinder;
+
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.getApplication();
+ mHelper = new ConfigurationActivityHelper(mPm);
+
+ when(mPm.queryIntentActivities(any(), anyInt())).thenReturn(List.of(new ResolveInfo()));
+ }
+
+ @Test
+ public void getConfigurationActivityIntentForMode_configActivity() throws Exception {
+ ZenMode mode = new TestModeBuilder()
+ .setId("id")
+ .setPackage(mContext.getPackageName())
+ .setConfigurationActivity(new ComponentName(mContext.getPackageName(), "test"))
+ .build();
+ when(mPm.getPackageUid(mContext.getPackageName(), 0)).thenReturn(1);
+
+ Intent res = mHelper.getConfigurationActivityIntentForMode(mode, mApprovedServiceFinder);
+
+ assertThat(res).isNotNull();
+ assertThat(res.getStringExtra(EXTRA_RULE_ID)).isEqualTo("id");
+ assertThat(res.getStringExtra(EXTRA_AUTOMATIC_RULE_ID)).isEqualTo("id");
+ assertThat(res.getComponent()).isEqualTo(
+ new ComponentName(mContext.getPackageName(), "test"));
+ }
+
+ @Test
+ public void getConfigurationActivityIntentForMode_configActivityNotResolvable_returnsNull()
+ throws Exception {
+ ZenMode mode = new TestModeBuilder()
+ .setId("id")
+ .setPackage(mContext.getPackageName())
+ .setConfigurationActivity(new ComponentName(mContext.getPackageName(), "test"))
+ .build();
+ when(mPm.getPackageUid(mContext.getPackageName(), 0)).thenReturn(1);
+ when(mPm.queryIntentActivities(any(), anyInt())).thenReturn(new ArrayList<>());
+
+ Intent res = mHelper.getConfigurationActivityIntentForMode(mode, mApprovedServiceFinder);
+
+ assertThat(res).isNull();
+ }
+
+ @Test
+ public void getConfigurationActivityIntentForMode_configActivityAndWrongPackage_returnsNull()
+ throws Exception {
+ ZenMode mode = new TestModeBuilder()
+ .setPackage(mContext.getPackageName())
+ .setConfigurationActivity(new ComponentName("another", "test"))
+ .build();
+ when(mPm.getPackageUid(mContext.getPackageName(), 0)).thenReturn(1);
+
+ Intent res = mHelper.getConfigurationActivityIntentForMode(mode, mApprovedServiceFinder);
+
+ assertThat(res).isNull();
+ }
+
+ @Test
+ public void getConfigurationActivityIntentForMode_configActivityAndUnspecifiedOwner()
+ throws Exception {
+ ZenMode mode = new TestModeBuilder()
+ .setId("id")
+ .setPackage(null)
+ .setConfigurationActivity(new ComponentName("another", "test"))
+ .build();
+ when(mPm.getPackageUid(mContext.getPackageName(), 0)).thenReturn(1);
+
+ Intent res = mHelper.getConfigurationActivityIntentForMode(mode, mApprovedServiceFinder);
+
+ assertThat(res).isNotNull();
+ assertThat(res.getStringExtra(EXTRA_RULE_ID)).isEqualTo("id");
+ assertThat(res.getStringExtra(EXTRA_AUTOMATIC_RULE_ID)).isEqualTo("id");
+ assertThat(res.getComponent()).isEqualTo(new ComponentName("another", "test"));
+ }
+
+ @Test
+ public void getConfigurationActivityIntentForMode_cps() throws Exception {
+ ZenMode mode = new TestModeBuilder()
+ .setId("id")
+ .setPackage(mContext.getPackageName())
+ .setOwner(new ComponentName(mContext.getPackageName(), "service"))
+ .build();
+ ComponentInfo ci = new ComponentInfo();
+ ci.packageName = mContext.getPackageName();
+ ci.metaData = new Bundle();
+ ci.metaData.putString(ConditionProviderService.META_DATA_CONFIGURATION_ACTIVITY,
+ ComponentName.flattenToShortString(
+ new ComponentName(mContext.getPackageName(), "activity")));
+ when(mApprovedServiceFinder.apply(new ComponentName(mContext.getPackageName(), "service")))
+ .thenReturn(ci);
+ when(mPm.getPackageUid(mContext.getPackageName(), 0)).thenReturn(1);
+
+ Intent res = mHelper.getConfigurationActivityIntentForMode(mode, mApprovedServiceFinder);
+
+ assertThat(res).isNotNull();
+ assertThat(res.getStringExtra(EXTRA_RULE_ID)).isEqualTo("id");
+ assertThat(res.getStringExtra(EXTRA_AUTOMATIC_RULE_ID)).isEqualTo("id");
+ assertThat(res.getComponent()).isEqualTo(
+ new ComponentName(mContext.getPackageName(), "activity"));
+ }
+
+ @Test
+ public void getConfigurationActivityIntentForMode_cpsAndWrongPackage_returnsNull()
+ throws Exception {
+ ZenMode mode = new TestModeBuilder()
+ .setPackage("other")
+ .setOwner(new ComponentName(mContext.getPackageName(), "service"))
+ .build();
+ ComponentInfo ci = new ComponentInfo();
+ ci.packageName = mContext.getPackageName();
+ ci.metaData = new Bundle();
+ ci.metaData.putString(ConditionProviderService.META_DATA_CONFIGURATION_ACTIVITY,
+ ComponentName.flattenToShortString(
+ new ComponentName(mContext.getPackageName(), "activity")));
+ when(mApprovedServiceFinder.apply(new ComponentName(mContext.getPackageName(), "service")))
+ .thenReturn(ci);
+ when(mPm.getPackageUid(mContext.getPackageName(), 0)).thenReturn(1);
+
+ Intent res = mHelper.getConfigurationActivityIntentForMode(mode, mApprovedServiceFinder);
+
+ assertThat(res).isNull();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/IconLoaderTest.java b/tests/robotests/src/com/android/settings/notification/modes/IconLoaderTest.java
deleted file mode 100644
index 7d4a367..0000000
--- a/tests/robotests/src/com/android/settings/notification/modes/IconLoaderTest.java
+++ /dev/null
@@ -1,91 +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.notification.modes;
-
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.AutomaticZenRule;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.service.notification.ZenPolicy;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class IconLoaderTest {
-
- private Context mContext;
- private IconLoader mLoader;
-
- @Before
- public void setUp() {
- mContext = RuntimeEnvironment.application;
- mLoader = new IconLoader(MoreExecutors.newDirectExecutorService());
- }
-
- @Test
- public void getIcon_systemOwnedRuleWithIcon_loads() throws Exception {
- AutomaticZenRule systemRule = newRuleBuilder()
- .setPackage("android")
- .setIconResId(android.R.drawable.ic_media_play)
- .build();
-
- ListenableFuture<Drawable> loadFuture = mLoader.getIcon(mContext, systemRule);
- assertThat(loadFuture.isDone()).isTrue();
- assertThat(loadFuture.get()).isNotNull();
- }
-
- @Test
- public void getIcon_ruleWithoutSpecificIcon_loadsFallback() throws Exception {
- AutomaticZenRule rule = newRuleBuilder()
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setPackage("com.blah")
- .build();
-
- ListenableFuture<Drawable> loadFuture = mLoader.getIcon(mContext, rule);
- assertThat(loadFuture.isDone()).isTrue();
- assertThat(loadFuture.get()).isNotNull();
- }
-
- @Test
- public void getIcon_ruleWithAppIconWithLoadFailure_loadsFallback() throws Exception {
- AutomaticZenRule rule = newRuleBuilder()
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setPackage("com.blah")
- .setIconResId(-123456)
- .build();
-
- ListenableFuture<Drawable> loadFuture = mLoader.getIcon(mContext, rule);
- assertThat(loadFuture.get()).isNotNull();
- }
-
- private static AutomaticZenRule.Builder newRuleBuilder() {
- return new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().build());
- }
-}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/InterruptionFilterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/InterruptionFilterPreferenceControllerTest.java
new file mode 100644
index 0000000..ff25322
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/InterruptionFilterPreferenceControllerTest.java
@@ -0,0 +1,130 @@
+/*
+ * 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.modes;
+
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
+import static android.service.notification.ZenPolicy.STATE_DISALLOW;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+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.ZenPolicy;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+@EnableFlags(Flags.FLAG_MODES_UI)
+public final class InterruptionFilterPreferenceControllerTest {
+
+ private InterruptionFilterPreferenceController mController;
+
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private Context mContext;
+ @Mock private ZenModesBackend mBackend;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = RuntimeEnvironment.application;
+ mController = new InterruptionFilterPreferenceController(mContext, "something", mBackend);
+ }
+
+ @Test
+ public void testUpdateState_all() {
+ TwoStatePreference preference = mock(TwoStatePreference.class);
+ ZenMode zenMode = new TestModeBuilder()
+ .setInterruptionFilter(INTERRUPTION_FILTER_ALL)
+ .build();
+ mController.updateZenMode(preference, zenMode);
+
+ verify(preference).setChecked(false);
+ }
+
+ @Test
+ public void testOnPreferenceChange_fromAll() {
+ TwoStatePreference preference = mock(TwoStatePreference.class);
+ ZenMode zenMode = new TestModeBuilder()
+ .setInterruptionFilter(INTERRUPTION_FILTER_ALL)
+ .build();
+
+ mController.updateZenMode(preference, zenMode);
+
+ mController.onPreferenceChange(preference, true);
+
+ ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
+ verify(mBackend).updateMode(captor.capture());
+ assertThat(captor.getValue().getPolicy().getPriorityCategoryAlarms())
+ .isEqualTo(STATE_DISALLOW);
+ assertThat(captor.getValue().getRule().getInterruptionFilter())
+ .isEqualTo(INTERRUPTION_FILTER_PRIORITY);
+ }
+
+ @Test
+ public void testUpdateState_priority() {
+ TwoStatePreference preference = mock(TwoStatePreference.class);
+ ZenMode zenMode = new TestModeBuilder()
+ .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
+ .build();
+ mController.updateZenMode(preference, zenMode);
+
+ verify(preference).setChecked(true);
+ }
+
+ @Test
+ public void testOnPreferenceChange_fromPriority() {
+ TwoStatePreference preference = mock(TwoStatePreference.class);
+ ZenMode zenMode = new TestModeBuilder()
+ .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ .setZenPolicy(new ZenPolicy.Builder().allowAlarms(false).build())
+ .build();
+
+ mController.updateZenMode(preference, zenMode);
+
+ mController.onPreferenceChange(preference, false);
+
+ ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
+ verify(mBackend).updateMode(captor.capture());
+ assertThat(captor.getValue().getPolicy().getPriorityCategoryAlarms())
+ .isEqualTo(STATE_DISALLOW);
+ assertThat(captor.getValue().getRule().getInterruptionFilter())
+ .isEqualTo(INTERRUPTION_FILTER_ALL);
+ }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ManualDurationHelperTest.java b/tests/robotests/src/com/android/settings/notification/modes/ManualDurationHelperTest.java
new file mode 100644
index 0000000..18ee2cf
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/ManualDurationHelperTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.modes;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class ManualDurationHelperTest {
+ private Context mContext;
+ private ContentResolver mContentResolver;
+
+ private ManualDurationHelper mHelper;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mContentResolver = RuntimeEnvironment.application.getContentResolver();
+
+ mHelper = new ManualDurationHelper(mContext);
+ }
+
+ @Test
+ public void getDurationSummary_durationForever() {
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION,
+ Settings.Secure.ZEN_DURATION_FOREVER);
+ assertThat(mHelper.getSummary()).isEqualTo(
+ mContext.getString(R.string.zen_mode_duration_summary_forever));
+ }
+
+ @Test
+ public void getDurationSummary_durationPrompt() {
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION,
+ Settings.Secure.ZEN_DURATION_PROMPT);
+ assertThat(mHelper.getSummary()).isEqualTo(
+ mContext.getString(R.string.zen_mode_duration_summary_always_prompt));
+ }
+
+ @Test
+ public void getDurationSummary_durationCustom() {
+ // minutes
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION, 45);
+ assertThat(mHelper.getSummary()).isEqualTo("45 minutes");
+
+ // hours
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION, 300);
+ assertThat(mHelper.getSummary()).isEqualTo("5 hours");
+ }
+
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ManualDurationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ManualDurationPreferenceControllerTest.java
new file mode 100644
index 0000000..0a600c0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/ManualDurationPreferenceControllerTest.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.modes;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AutomaticZenRule;
+import android.app.Flags;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
+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;
+
+@RunWith(RobolectricTestRunner.class)
+@EnableFlags(Flags.FLAG_MODES_UI)
+public class ManualDurationPreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+ private Context mContext;
+ private ContentResolver mContentResolver;
+
+ @Mock
+ private ZenModesBackend mBackend;
+
+ @Mock
+ private Fragment mParent;
+
+ private ManualDurationPreferenceController mPrefController;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = RuntimeEnvironment.application;
+ mContentResolver = RuntimeEnvironment.application.getContentResolver();
+ mPrefController = new ManualDurationPreferenceController(mContext, "key", mParent,
+ mBackend);
+ }
+
+ @Test
+ public void testIsAvailable_onlyForManualDnd() {
+ assertThat(mPrefController.isAvailable(TestModeBuilder.EXAMPLE)).isFalse();
+
+ ZenMode manualDnd = ZenMode.manualDndMode(
+ new AutomaticZenRule.Builder("id", Uri.EMPTY).build(), false);
+ assertThat(mPrefController.isAvailable(manualDnd)).isTrue();
+ }
+
+ @Test
+ public void testUpdateState_durationSummary() {
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION,
+ 45 /* minutes */);
+
+ Preference pref = new Preference(mContext);
+ mPrefController.updateState(pref, TestModeBuilder.EXAMPLE);
+
+ assertThat(pref.getSummary().toString()).contains("45");
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/TestModeBuilder.java b/tests/robotests/src/com/android/settings/notification/modes/TestModeBuilder.java
new file mode 100644
index 0000000..fdb5701
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/TestModeBuilder.java
@@ -0,0 +1,168 @@
+/*
+ * 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.modes;
+
+import android.app.AutomaticZenRule;
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.net.Uri;
+import android.service.notification.Condition;
+import android.service.notification.ZenDeviceEffects;
+import android.service.notification.ZenModeConfig;
+import android.service.notification.ZenPolicy;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+
+import com.android.settingslib.notification.modes.ZenMode;
+
+import java.util.Random;
+
+class TestModeBuilder {
+
+ private String mId;
+ private AutomaticZenRule mRule;
+ private ZenModeConfig.ZenRule mConfigZenRule;
+
+ public static final ZenMode EXAMPLE = new TestModeBuilder().build();
+
+ TestModeBuilder() {
+ // Reasonable defaults
+ int id = new Random().nextInt(1000);
+ mId = "rule_" + id;
+ mRule = new AutomaticZenRule.Builder("Test Rule #" + id, Uri.parse("rule://" + id))
+ .setPackage("some_package")
+ .setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY)
+ .setZenPolicy(new ZenPolicy.Builder().disallowAllSounds().build())
+ .build();
+ mConfigZenRule = new ZenModeConfig.ZenRule();
+ mConfigZenRule.enabled = true;
+ mConfigZenRule.pkg = "some_package";
+ }
+
+ TestModeBuilder setId(String id) {
+ mId = id;
+ return this;
+ }
+
+ TestModeBuilder setAzr(AutomaticZenRule rule) {
+ mRule = rule;
+ mConfigZenRule.pkg = rule.getPackageName();
+ mConfigZenRule.conditionId = rule.getConditionId();
+ mConfigZenRule.enabled = rule.isEnabled();
+ return this;
+ }
+
+ TestModeBuilder setConfigZenRule(ZenModeConfig.ZenRule configZenRule) {
+ mConfigZenRule = configZenRule;
+ return this;
+ }
+
+ TestModeBuilder setName(String name) {
+ mRule.setName(name);
+ mConfigZenRule.name = name;
+ return this;
+ }
+
+ TestModeBuilder setPackage(String pkg) {
+ mRule.setPackageName(pkg);
+ mConfigZenRule.pkg = pkg;
+ return this;
+ }
+
+ TestModeBuilder setOwner(ComponentName owner) {
+ mRule.setOwner(owner);
+ mConfigZenRule.component = owner;
+ return this;
+ }
+
+ TestModeBuilder setConfigurationActivity(ComponentName configActivity) {
+ mRule.setConfigurationActivity(configActivity);
+ mConfigZenRule.configurationActivity = configActivity;
+ return this;
+ }
+
+ TestModeBuilder setConditionId(Uri conditionId) {
+ mRule.setConditionId(conditionId);
+ mConfigZenRule.conditionId = conditionId;
+ return this;
+ }
+
+ TestModeBuilder setType(@AutomaticZenRule.Type int type) {
+ mRule.setType(type);
+ mConfigZenRule.type = type;
+ return this;
+ }
+
+ TestModeBuilder setInterruptionFilter(
+ @NotificationManager.InterruptionFilter int interruptionFilter) {
+ mRule.setInterruptionFilter(interruptionFilter);
+ mConfigZenRule.zenMode = NotificationManager.zenModeFromInterruptionFilter(
+ interruptionFilter, NotificationManager.INTERRUPTION_FILTER_PRIORITY);
+ return this;
+ }
+
+ TestModeBuilder setZenPolicy(@Nullable ZenPolicy policy) {
+ mRule.setZenPolicy(policy);
+ mConfigZenRule.zenPolicy = policy;
+ return this;
+ }
+
+ TestModeBuilder setDeviceEffects(@Nullable ZenDeviceEffects deviceEffects) {
+ mRule.setDeviceEffects(deviceEffects);
+ mConfigZenRule.zenDeviceEffects = deviceEffects;
+ return this;
+ }
+
+ TestModeBuilder setEnabled(boolean enabled) {
+ mRule.setEnabled(enabled);
+ mConfigZenRule.enabled = enabled;
+ return this;
+ }
+
+ TestModeBuilder setManualInvocationAllowed(boolean allowed) {
+ mRule.setManualInvocationAllowed(allowed);
+ mConfigZenRule.allowManualInvocation = allowed;
+ return this;
+ }
+
+ TestModeBuilder setTriggerDescription(@Nullable String triggerDescription) {
+ mRule.setTriggerDescription(triggerDescription);
+ mConfigZenRule.triggerDescription = triggerDescription;
+ return this;
+ }
+
+ TestModeBuilder setIconResId(@DrawableRes int iconResId) {
+ mRule.setIconResId(iconResId);
+ return this;
+ }
+
+ TestModeBuilder setActive(boolean active) {
+ if (active) {
+ mConfigZenRule.enabled = true;
+ mConfigZenRule.condition = new Condition(mRule.getConditionId(), "...",
+ Condition.STATE_TRUE);
+ } else {
+ mConfigZenRule.condition = null;
+ }
+ return this;
+ }
+
+ ZenMode build() {
+ return new ZenMode(mId, mRule, mConfigZenRule);
+ }
+}
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 c8b1185..83f8de0 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java
@@ -17,23 +17,21 @@
package com.android.settings.notification.modes;
import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-
-import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
-import android.net.Uri;
import android.os.Bundle;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -43,9 +41,10 @@
import androidx.preference.Preference;
import com.android.settings.SettingsActivity;
-import com.android.settings.notification.NotificationBackend;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
@@ -57,7 +56,6 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
@@ -73,7 +71,7 @@
private ZenModesBackend mZenModesBackend;
@Mock
- private NotificationBackend mNotificationBackend;
+ private ZenHelperBackend mHelperBackend;
@Mock
private ApplicationsState mApplicationsState;
@@ -90,8 +88,7 @@
when(mApplicationsState.newSession(any(), any())).thenReturn(mSession);
mController = new ZenModeAppsLinkPreferenceController(
mContext, "controller_key", mock(Fragment.class), mApplicationsState,
- mZenModesBackend);
- ReflectionHelpers.setField(mController, "mNotificationBackend", mNotificationBackend);
+ mZenModesBackend, mHelperBackend);
}
private ApplicationsState.AppEntry createAppEntry(String packageName, String label) {
@@ -104,14 +101,13 @@
}
private ZenMode createPriorityChannelsZenMode() {
- return new ZenMode("id", new AutomaticZenRule.Builder("Bedtime",
- Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
+ return new TestModeBuilder()
+ .setId("id")
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
.setZenPolicy(new ZenPolicy.Builder()
.allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
.build())
- .build(), true);
+ .build();
}
@Test
@@ -140,7 +136,7 @@
Bundle bundle = launcherIntent.getBundleExtra(
SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
assertThat(bundle).isNotNull();
- assertThat(bundle.getString(MODE_ID)).isEqualTo("id");
+ assertThat(bundle.getString(EXTRA_AUTOMATIC_ZEN_RULE_ID)).isEqualTo("id");
}
@Test
@@ -149,7 +145,7 @@
ApplicationsState.AppEntry entryConv = createAppEntry("test_conv", "test_convLabel");
List<ApplicationsState.AppEntry> appEntries = List.of(entry, entryConv);
- when(mNotificationBackend.getPackagesBypassingDnd(mContext.getUserId(),
+ when(mHelperBackend.getPackagesBypassingDnd(mContext.getUserId(),
false)).thenReturn(List.of("test"));
assertThat(mController.getAppsBypassingDnd(appEntries)).containsExactly("testLabel");
@@ -167,7 +163,7 @@
new ArrayList<ApplicationsState.AppEntry>();
appEntries.add(createAppEntry("test", "pkgLabel"));
- when(mNotificationBackend.getPackagesBypassingDnd(
+ when(mHelperBackend.getPackagesBypassingDnd(
mContext.getUserId(), false))
.thenReturn(List.of("test"));
@@ -183,13 +179,30 @@
@Test
public void testOnPackageListChangedTriggersRebuild() {
- mController.mAppSessionCallbacks.onPackageListChanged();
+ SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class);
+ // Create a zen mode that allows priority channels to breakthrough.
+ ZenMode zenMode = createPriorityChannelsZenMode();
+ mController.updateState(preference, zenMode);
verify(mSession).rebuild(any(), any(), eq(false));
+
+ mController.mAppSessionCallbacks.onPackageListChanged();
+ verify(mSession, times(2)).rebuild(any(), any(), eq(false));
}
@Test
public void testOnLoadEntriesCompletedTriggersRebuild() {
- mController.mAppSessionCallbacks.onLoadEntriesCompleted();
+ SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class);
+ // Create a zen mode that allows priority channels to breakthrough.
+ ZenMode zenMode = createPriorityChannelsZenMode();
+ mController.updateState(preference, zenMode);
verify(mSession).rebuild(any(), any(), eq(false));
+
+ mController.mAppSessionCallbacks.onLoadEntriesCompleted();
+ verify(mSession, times(2)).rebuild(any(), any(), eq(false));
+ }
+
+ @Test
+ public void testNoCrashIfAppsReadyBeforeRuleAvailable() {
+ mController.mAppSessionCallbacks.onLoadEntriesCompleted();
}
}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsPreferenceControllerTest.java
index 750453d..c96dbb6 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsPreferenceControllerTest.java
@@ -16,11 +16,8 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_NONE;
import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-import static com.android.settings.notification.modes.ZenModeAppsPreferenceController.KEY_ALL;
import static com.android.settings.notification.modes.ZenModeAppsPreferenceController.KEY_NONE;
import static com.android.settings.notification.modes.ZenModeAppsPreferenceController.KEY_PRIORITY;
@@ -29,10 +26,8 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenPolicy;
@@ -42,6 +37,8 @@
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
@@ -62,11 +59,9 @@
@Mock
private ZenModesBackend mBackend;
private ZenModeAppsPreferenceController mPriorityController;
- private ZenModeAppsPreferenceController mAllController;
private ZenModeAppsPreferenceController mNoneController;
private SelectorWithWidgetPreference mPriorityPref;
- private SelectorWithWidgetPreference mAllPref;
private SelectorWithWidgetPreference mNonePref;
private PreferenceCategory mPrefCategory;
private PreferenceScreen mPreferenceScreen;
@@ -81,10 +76,8 @@
mPriorityController = new ZenModeAppsPreferenceController(mContext, KEY_PRIORITY, mBackend);
mNoneController = new ZenModeAppsPreferenceController(mContext, KEY_NONE, mBackend);
- mAllController = new ZenModeAppsPreferenceController(mContext, KEY_ALL, mBackend);
mPriorityPref = makePreference(KEY_PRIORITY, mPriorityController);
- mAllPref = makePreference(KEY_ALL, mAllController);
mNonePref = makePreference(KEY_NONE, mNoneController);
mPrefCategory = new PreferenceCategory(mContext);
@@ -95,10 +88,8 @@
mPreferenceScreen.addPreference(mPrefCategory);
mPrefCategory.addPreference(mPriorityPref);
- mPrefCategory.addPreference(mAllPref);
mPrefCategory.addPreference(mNonePref);
- mAllController.displayPreference(mPreferenceScreen);
mPriorityController.displayPreference(mPreferenceScreen);
mNoneController.displayPreference(mPreferenceScreen);
}
@@ -112,45 +103,14 @@
}
@Test
- public void testUpdateState_All() {
- TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .build())
- .build(), true);
- mAllController.updateZenMode(preference, zenMode);
-
- verify(preference).setChecked(true);
- }
-
- @Test
- public void testUpdateState_All_Unchecked() {
- TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
- .build())
- .build(), true);
- mAllController.updateZenMode(preference, zenMode);
-
- verify(preference).setChecked(false);
- }
-
- @Test
public void testUpdateState_None() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
+ .build())
+ .build();
+
mNoneController.updateZenMode(preference, zenMode);
verify(preference).setChecked(true);
@@ -159,13 +119,12 @@
@Test
public void testUpdateState_None_Unchecked() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
+ .build())
+ .build();
+
mNoneController.updateZenMode(preference, zenMode);
verify(preference).setChecked(false);
@@ -174,13 +133,12 @@
@Test
public void testUpdateState_Priority() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
+ .build())
+ .build();
+
mPriorityController.updateZenMode(preference, zenMode);
verify(preference).setChecked(true);
@@ -189,99 +147,32 @@
@Test
public void testUpdateState_Priority_Unchecked() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
+ .build())
+ .build();
+
mPriorityController.updateZenMode(preference, zenMode);
verify(preference).setChecked(false);
}
@Test
- public void testOnPreferenceChange_All() {
- TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_NONE)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .build())
- .build(), true);
-
- mAllController.updateZenMode(preference, zenMode);
- mAllController.onPreferenceChange(preference, true);
- ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
- verify(mBackend).updateMode(captor.capture());
-
- assertThat(captor.getValue().getPolicy().getAllowedChannels())
- .isEqualTo(ZenMode.CHANNEL_POLICY_ALL);
- }
-
- @Test
- public void testPreferenceClick_passesCorrectCheckedState_All() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
- .build())
- .build(), true);
-
-
- mAllController.updateZenMode(mAllPref, zenMode);
- mNoneController.updateZenMode(mNonePref, zenMode);
- mPriorityController.updateZenMode(mPriorityPref, zenMode);
-
- // MPME is checked; ALL and PRIORITY are unchecked.
- assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_ALL))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
- .isChecked());
-
- mPrefCategory.findPreference(KEY_ALL).performClick();
-
- ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
- verify(mBackend).updateMode(captor.capture());
- // Checks the policy value for ALL is set.
- // The important part is that the interruption filter is propagated to the backend.
- assertThat(captor.getValue().getRule().getInterruptionFilter())
- .isEqualTo(INTERRUPTION_FILTER_ALL);
- // ALL is now checked; others are unchecked.
- assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_ALL))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
- .isChecked());
- }
-
- @Test
public void testPreferenceClick_passesCorrectCheckedState_None() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
+ .build())
+ .build();
- mAllController.updateZenMode(mAllPref, zenMode);
mNoneController.updateZenMode(mNonePref, zenMode);
mPriorityController.updateZenMode(mPriorityPref, zenMode);
- assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_ALL))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
- .isChecked());
+ assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
+ .isChecked()).isFalse();
+ assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
+ .isChecked()).isTrue();
// Click on NONE
mPrefCategory.findPreference(KEY_NONE).performClick();
@@ -293,35 +184,31 @@
// See AbstractZenModePreferenceController.
assertThat(captor.getValue().getRule().getInterruptionFilter())
.isEqualTo(INTERRUPTION_FILTER_PRIORITY);
- // NONE is now checked; others are unchecked.
+
+ // After screen is refreshed, NONE is now checked; others are unchecked.
+ mNoneController.updateZenMode(mNonePref, captor.getValue());
+ mPriorityController.updateZenMode(mPriorityPref, captor.getValue());
assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_ALL))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
- .isChecked());
+ .isChecked()).isTrue();
+ assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
+ .isChecked()).isFalse();
}
@Test
public void testPreferenceClick_passesCorrectCheckedState_Priority() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
+ .build())
+ .build();
- mAllController.updateZenMode(mAllPref, zenMode);
mNoneController.updateZenMode(mNonePref, zenMode);
mPriorityController.updateZenMode(mPriorityPref, zenMode);
assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_ALL))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
- .isChecked());
+ .isChecked()).isTrue();
+ assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
+ .isChecked()).isFalse();
// Click on PRIORITY
mPrefCategory.findPreference(KEY_PRIORITY).performClick();
@@ -331,13 +218,13 @@
// Checks the policy value for PRIORITY is propagated to the backend.
assertThat(captor.getValue().getRule().getInterruptionFilter())
.isEqualTo(INTERRUPTION_FILTER_PRIORITY);
- // PRIORITY is now checked; others are unchecked.
- assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_ALL))
- .isChecked());
- assertThat(!((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
- .isChecked());
- }
+ // After screen is refreshed, PRIORITY is now checked; others are unchecked.
+ mNoneController.updateZenMode(mNonePref, captor.getValue());
+ mPriorityController.updateZenMode(mPriorityPref, captor.getValue());
+ assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_PRIORITY))
+ .isChecked()).isTrue();
+ assertThat(((SelectorWithWidgetPreference) mPrefCategory.findPreference(KEY_NONE))
+ .isChecked()).isFalse();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeButtonPreferenceControllerTest.java
index bda3843..5869c6b 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeButtonPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeButtonPreferenceControllerTest.java
@@ -16,8 +16,6 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -27,13 +25,18 @@
import android.app.AutomaticZenRule;
import android.app.Flags;
+import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+import android.provider.Settings;
import android.widget.Button;
+import androidx.fragment.app.Fragment;
+
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.LayoutPreference;
import org.junit.Before;
@@ -45,6 +48,8 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
+import java.time.Duration;
+
@EnableFlags(Flags.FLAG_MODES_UI)
@RunWith(RobolectricTestRunner.class)
public final class ZenModeButtonPreferenceControllerTest {
@@ -54,60 +59,56 @@
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
-
private Context mContext;
+ private ContentResolver mContentResolver;
+
@Mock
private ZenModesBackend mBackend;
+ @Mock
+ private Fragment mParent;
+
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
+ mContentResolver = RuntimeEnvironment.application.getContentResolver();
mController = new ZenModeButtonPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mParent, mBackend);
}
@Test
public void isAvailable_notIfAppOptsOut() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
+ ZenMode zenMode = new TestModeBuilder()
.setManualInvocationAllowed(false)
- .setEnabled(true)
- .build(), false);
+ .build();
mController.setZenMode(zenMode);
assertThat(mController.isAvailable()).isFalse();
}
@Test
public void isAvailable_notIfModeDisabled() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .setManualInvocationAllowed(true)
- .setEnabled(false)
- .build(), false);
+ ZenMode zenMode = new TestModeBuilder()
+ .setManualInvocationAllowed(true)
+ .setEnabled(false)
+ .build();
+
mController.setZenMode(zenMode);
+
assertThat(mController.isAvailable()).isFalse();
}
@Test
public void isAvailable_appOptedIn_modeEnabled() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .setManualInvocationAllowed(true)
- .setEnabled(true)
- .build(), false);
+ ZenMode zenMode = new TestModeBuilder()
+ .setManualInvocationAllowed(true)
+ .setEnabled(true)
+ .build();
+
mController.setZenMode(zenMode);
+
assertThat(mController.isAvailable()).isTrue();
}
@@ -116,15 +117,13 @@
Button button = new Button(mContext);
LayoutPreference pref = mock(LayoutPreference.class);
when(pref.findViewById(anyInt())).thenReturn(button);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .setManualInvocationAllowed(true)
- .setEnabled(true)
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setManualInvocationAllowed(true)
+ .setActive(true)
+ .build();
+
mController.updateZenMode(pref, zenMode);
+
assertThat(button.getText().toString()).contains("off");
assertThat(button.hasOnClickListeners()).isTrue();
}
@@ -134,15 +133,13 @@
Button button = new Button(mContext);
LayoutPreference pref = mock(LayoutPreference.class);
when(pref.findViewById(anyInt())).thenReturn(button);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .setManualInvocationAllowed(true)
- .setEnabled(true)
- .build(), false);
+ ZenMode zenMode = new TestModeBuilder()
+ .setManualInvocationAllowed(true)
+ .setActive(false)
+ .build();
+
mController.updateZenMode(pref, zenMode);
+
assertThat(button.getText().toString()).contains("on");
assertThat(button.hasOnClickListeners()).isTrue();
}
@@ -152,14 +149,11 @@
Button button = new Button(mContext);
LayoutPreference pref = mock(LayoutPreference.class);
when(pref.findViewById(anyInt())).thenReturn(button);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .setManualInvocationAllowed(true)
- .setEnabled(true)
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setManualInvocationAllowed(true)
+ .setActive(true)
+ .build();
+
mController.updateZenMode(pref, zenMode);
button.callOnClick();
@@ -171,17 +165,44 @@
Button button = new Button(mContext);
LayoutPreference pref = mock(LayoutPreference.class);
when(pref.findViewById(anyInt())).thenReturn(button);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .setManualInvocationAllowed(true)
- .setEnabled(true)
- .build(), false);
+ ZenMode zenMode = new TestModeBuilder()
+ .setManualInvocationAllowed(true)
+ .setActive(false)
+ .build();
+
mController.updateZenMode(pref, zenMode);
button.callOnClick();
verify(mBackend).activateMode(zenMode, null);
}
+
+ @Test
+ public void updateStateThenClick_withDuration() {
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION,
+ 45 /* minutes */);
+ Button button = new Button(mContext);
+ LayoutPreference pref = mock(LayoutPreference.class);
+ when(pref.findViewById(anyInt())).thenReturn(button);
+ ZenMode zenMode = ZenMode.manualDndMode(
+ new AutomaticZenRule.Builder("manual", Uri.EMPTY).build(), false);
+
+ mController.updateZenMode(pref, zenMode);
+ button.callOnClick();
+ verify(mBackend).activateMode(zenMode, Duration.ofMinutes(45));
+ }
+
+ @Test
+ public void updateStateThenClick_durationForever() {
+ Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_DURATION,
+ Settings.Secure.ZEN_DURATION_FOREVER);
+ Button button = new Button(mContext);
+ LayoutPreference pref = mock(LayoutPreference.class);
+ when(pref.findViewById(anyInt())).thenReturn(button);
+ ZenMode zenMode = ZenMode.manualDndMode(
+ new AutomaticZenRule.Builder("manual", Uri.EMPTY).build(), false);
+
+ mController.updateZenMode(pref, zenMode);
+ button.callOnClick();
+ verify(mBackend).activateMode(zenMode, null);
+ }
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceControllerTest.java
index 04d625a..e50d294 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceControllerTest.java
@@ -16,20 +16,17 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.Preference;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -38,8 +35,6 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
public final class ZenModeCallsLinkPreferenceControllerTest {
@@ -49,10 +44,8 @@
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
-
private Context mContext;
- @Mock
- private ZenModesBackend mBackend;
+ @Mock private ZenHelperBackend mHelperBackend;
@Before
public void setup() {
@@ -61,20 +54,14 @@
mContext = RuntimeEnvironment.application;
mController = new ZenModeCallsLinkPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mHelperBackend);
}
@Test
@EnableFlags(Flags.FLAG_MODES_UI)
public void testHasSummary() {
Preference pref = mock(Preference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), true);
- mController.updateZenMode(pref, zenMode);
+ mController.updateZenMode(pref, TestModeBuilder.EXAMPLE);
verify(pref).setSummary(any());
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceControllerTest.java
index 1a62b75..a735cd9 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayEffectPreferenceControllerTest.java
@@ -16,22 +16,22 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-import static android.service.notification.ZenPolicy.STATE_ALLOW;
-import static android.service.notification.ZenPolicy.STATE_UNSET;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenDeviceEffects;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.TwoStatePreference;
+
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -62,15 +62,11 @@
@Test
public void testUpdateState_grayscale() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldDisplayGrayscale(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldDisplayGrayscale(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(
@@ -84,15 +80,11 @@
@Test
public void testOnPreferenceChange_grayscale() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(false).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldDisplayGrayscale(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldDisplayGrayscale(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(mContext, "effect_greyscale", mBackend);
@@ -103,22 +95,18 @@
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
verify(mBackend).updateMode(captor.capture());
- assertThat(captor.getValue().getRule().getDeviceEffects().shouldDisplayGrayscale())
+ assertThat(captor.getValue().getDeviceEffects().shouldDisplayGrayscale())
.isFalse();
}
@Test
public void testUpdateState_aod() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowMedia(true).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldSuppressAmbientDisplay(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldSuppressAmbientDisplay(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(mContext, "effect_aod", mBackend);
@@ -131,15 +119,11 @@
@Test
public void testOnPreferenceChange_aod() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowMedia(false).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldSuppressAmbientDisplay(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldSuppressAmbientDisplay(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(mContext, "effect_aod", mBackend);
@@ -150,22 +134,18 @@
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
verify(mBackend).updateMode(captor.capture());
- assertThat(captor.getValue().getRule().getDeviceEffects().shouldSuppressAmbientDisplay())
+ assertThat(captor.getValue().getDeviceEffects().shouldSuppressAmbientDisplay())
.isFalse();
}
@Test
public void testUpdateState_wallpaper() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowSystem(true).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldDimWallpaper(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldDimWallpaper(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(
@@ -179,15 +159,11 @@
@Test
public void testOnPreferenceChange_wallpaper() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowSystem(false).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldDimWallpaper(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldDimWallpaper(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(
@@ -199,21 +175,17 @@
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
verify(mBackend).updateMode(captor.capture());
- assertThat(captor.getValue().getRule().getDeviceEffects().shouldDimWallpaper()).isFalse();
+ assertThat(captor.getValue().getDeviceEffects().shouldDimWallpaper()).isFalse();
}
@Test
public void testUpdateState_darkTheme() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowReminders(true).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldUseNightMode(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldUseNightMode(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(mContext, "effect_dark_theme",
@@ -227,15 +199,11 @@
@Test
public void testOnPreferenceChange_darkTheme() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowReminders(false).build())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldUseNightMode(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setDeviceEffects(new ZenDeviceEffects.Builder()
+ .setShouldUseNightMode(true)
+ .build())
+ .build();
ZenModeDisplayEffectPreferenceController controller =
new ZenModeDisplayEffectPreferenceController(mContext, "effect_dark_theme",
@@ -247,6 +215,6 @@
ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
verify(mBackend).updateMode(captor.capture());
- assertThat(captor.getValue().getRule().getDeviceEffects().shouldUseNightMode()).isFalse();
+ assertThat(captor.getValue().getDeviceEffects().shouldUseNightMode()).isFalse();
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceControllerTest.java
index 9d33b0b..3ccfb9f 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceControllerTest.java
@@ -16,19 +16,19 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.Preference;
+
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -47,8 +47,8 @@
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private Context mContext;
- @Mock
- private ZenModesBackend mBackend;
+ @Mock private ZenModesBackend mBackend;
+ @Mock private ZenHelperBackend mHelperBackend;
@Before
public void setup() {
@@ -57,20 +57,14 @@
mContext = RuntimeEnvironment.application;
mController = new ZenModeDisplayLinkPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mBackend, mHelperBackend);
}
@Test
@EnableFlags(Flags.FLAG_MODES_UI)
public void testHasSummary() {
Preference pref = mock(Preference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), true);
- mController.updateZenMode(pref, zenMode);
+ mController.updateZenMode(pref, TestModeBuilder.EXAMPLE);
verify(pref).setSummary(any());
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceControllerTest.java
index c1c4d61..03c75fb 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeExitAtAlarmPreferenceControllerTest.java
@@ -21,13 +21,15 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.content.Context;
import android.service.notification.ZenModeConfig;
import androidx.preference.TwoStatePreference;
import androidx.test.core.app.ApplicationProvider;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -65,10 +67,9 @@
scheduleInfo.endHour = 2;
scheduleInfo.exitAtAlarm = false;
- ZenMode mode = new ZenMode("id",
- new AutomaticZenRule.Builder("name",
- ZenModeConfig.toScheduleConditionId(scheduleInfo)).build(),
- true); // is active
+ ZenMode mode = new TestModeBuilder()
+ .setConditionId(ZenModeConfig.toScheduleConditionId(scheduleInfo))
+ .build();
// need to call updateZenMode for the first call
mPrefController.updateZenMode(preference, mode);
@@ -94,10 +95,9 @@
scheduleInfo.endHour = 2;
scheduleInfo.exitAtAlarm = true;
- ZenMode mode = new ZenMode("id",
- new AutomaticZenRule.Builder("name",
- ZenModeConfig.toScheduleConditionId(scheduleInfo)).build(),
- true); // is active
+ ZenMode mode = new TestModeBuilder()
+ .setConditionId(ZenModeConfig.toScheduleConditionId(scheduleInfo))
+ .build();
mPrefController.updateZenMode(preference, mode);
// turn off exit at alarm
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceControllerTest.java
index ba9a6b8..4d30ce9 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceControllerTest.java
@@ -19,20 +19,20 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.AutomaticZenRule;
import android.content.Context;
-import android.net.Uri;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
-import com.android.settings.dashboard.DashboardFragment;
+import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;
import com.google.common.collect.ImmutableList;
@@ -40,38 +40,34 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class ZenModeIconPickerListPreferenceControllerTest {
- private static final ZenMode ZEN_MODE = new ZenMode(
- "mode_id",
- new AutomaticZenRule.Builder("mode name", Uri.parse("mode")).build(),
- /* isActive= */ false);
-
- private ZenModesBackend mBackend;
+ private Context mContext;
private ZenModeIconPickerListPreferenceController mController;
- private PreferenceScreen mPreferenceScreen;
+ @Mock private PreferenceScreen mPreferenceScreen;
+ private LayoutPreference mLayoutPreference;
private RecyclerView mRecyclerView;
+ @Mock private ZenModeIconPickerListPreferenceController.IconPickerListener mListener;
@Before
public void setUp() {
- Context context = RuntimeEnvironment.getApplication();
- mBackend = mock(ZenModesBackend.class);
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.getApplication();
- DashboardFragment fragment = mock(DashboardFragment.class);
mController = new ZenModeIconPickerListPreferenceController(
- RuntimeEnvironment.getApplication(), "icon_list", fragment,
- new TestIconOptionsProvider(), mBackend);
+ RuntimeEnvironment.getApplication(), "icon_list", mListener,
+ new TestIconOptionsProvider());
- mRecyclerView = new RecyclerView(context);
+ mRecyclerView = new RecyclerView(mContext);
mRecyclerView.setId(R.id.icon_list);
- LayoutPreference layoutPreference = new LayoutPreference(context, mRecyclerView);
- mPreferenceScreen = mock(PreferenceScreen.class);
- when(mPreferenceScreen.findPreference(eq("icon_list"))).thenReturn(layoutPreference);
+ mLayoutPreference = new LayoutPreference(mContext, mRecyclerView);
+ when(mPreferenceScreen.findPreference(eq("icon_list"))).thenReturn(mLayoutPreference);
}
@Test
@@ -83,14 +79,32 @@
}
@Test
- public void selectIcon_updatesMode() {
- mController.setZenMode(ZEN_MODE);
+ public void updateState_highlightsCurrentIcon() {
+ ZenMode mode = new TestModeBuilder().setIconResId(R.drawable.ic_hearing).build();
+ mController.displayPreference(mPreferenceScreen);
- mController.onIconSelected(R.drawable.ic_android);
+ mController.updateZenMode(mLayoutPreference, mode);
- ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
- verify(mBackend).updateMode(captor.capture());
- assertThat(captor.getValue().getRule().getIconResId()).isEqualTo(R.drawable.ic_android);
+ assertThat(getItemViewAt(0).isSelected()).isFalse();
+ assertThat(getItemViewAt(1).isSelected()).isFalse();
+ assertThat(getItemViewAt(2).isSelected()).isTrue();
+ }
+
+ @Test
+ public void performClick_onIconItem_notifiesListener() {
+ mController.displayPreference(mPreferenceScreen);
+
+ getItemViewAt(1).performClick();
+
+ verify(mListener).onIconSelected(R.drawable.ic_info);
+ }
+
+ private View getItemViewAt(int position) {
+ ViewGroup fakeParent = new FrameLayout(mContext);
+ RecyclerView.ViewHolder viewHolder = mRecyclerView.getAdapter().onCreateViewHolder(
+ fakeParent, 0);
+ mRecyclerView.getAdapter().bindViewHolder(viewHolder, position);
+ return viewHolder.itemView;
}
private static class TestIconOptionsProvider implements IconOptionsProvider {
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceControllerTest.java
index cfeefb4..dda58ae 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceControllerTest.java
@@ -16,20 +16,17 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.Preference;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -48,8 +45,7 @@
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private Context mContext;
- @Mock
- private ZenModesBackend mBackend;
+ @Mock private ZenHelperBackend mHelperBackend;
@Before
public void setup() {
@@ -58,20 +54,14 @@
mContext = RuntimeEnvironment.application;
mController = new ZenModeMessagesLinkPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mHelperBackend);
}
@Test
@EnableFlags(Flags.FLAG_MODES_UI)
public void testHasSummary() {
Preference pref = mock(Preference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), true);
- mController.updateZenMode(pref, zenMode);
+ mController.updateZenMode(pref, TestModeBuilder.EXAMPLE);
verify(pref).setSummary(any());
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceControllerTest.java
index 646c7aa..bfa99a0 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceControllerTest.java
@@ -16,19 +16,17 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.Preference;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -47,8 +45,7 @@
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private Context mContext;
- @Mock
- private ZenModesBackend mBackend;
+ @Mock private ZenHelperBackend mHelperBackend;
@Before
public void setup() {
@@ -57,20 +54,14 @@
mContext = RuntimeEnvironment.application;
mController = new ZenModeNotifVisLinkPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mHelperBackend);
}
@Test
@EnableFlags(Flags.FLAG_MODES_UI)
public void testHasSummary() {
Preference pref = mock(Preference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), true);
- mController.updateZenMode(pref, zenMode);
+ mController.updateZenMode(pref, TestModeBuilder.EXAMPLE);
verify(pref).setSummary(any());
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceControllerTest.java
index 54edaf4..b23d946 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeNotifVisPreferenceControllerTest.java
@@ -16,7 +16,6 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.service.notification.ZenPolicy.STATE_ALLOW;
import static android.service.notification.ZenPolicy.STATE_DISALLOW;
import static android.service.notification.ZenPolicy.VISUAL_EFFECT_LIGHTS;
@@ -32,17 +31,18 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
import android.content.res.Resources;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenPolicy;
import androidx.preference.TwoStatePreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -96,15 +96,12 @@
@Test
public void updateState_notChecked() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAlarms(true)
- .showAllVisualEffects()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAlarms(true)
+ .showAllVisualEffects()
+ .build())
+ .build();
mController.updateZenMode(preference, zenMode);
@@ -115,15 +112,12 @@
@Test
public void updateState_checked() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAlarms(true)
- .showVisualEffect(VISUAL_EFFECT_PEEK, false)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAlarms(true)
+ .showVisualEffect(VISUAL_EFFECT_PEEK, false)
+ .build())
+ .build();
mController.updateZenMode(preference, zenMode);
@@ -138,16 +132,13 @@
"zen_effect_status", VISUAL_EFFECT_STATUS_BAR,
new int[]{VISUAL_EFFECT_NOTIFICATION_LIST}, mBackend);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAlarms(true)
- .showVisualEffect(VISUAL_EFFECT_NOTIFICATION_LIST, false)
- .showVisualEffect(VISUAL_EFFECT_STATUS_BAR, true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAlarms(true)
+ .showVisualEffect(VISUAL_EFFECT_NOTIFICATION_LIST, false)
+ .showVisualEffect(VISUAL_EFFECT_STATUS_BAR, true)
+ .build())
+ .build();
mController.updateZenMode(preference, zenMode);
@@ -168,15 +159,12 @@
"zen_effect_status", VISUAL_EFFECT_STATUS_BAR,
new int[]{VISUAL_EFFECT_NOTIFICATION_LIST}, mBackend);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAlarms(true)
- .showAllVisualEffects()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAlarms(true)
+ .showAllVisualEffects()
+ .build())
+ .build();
mController.updateZenMode(preference, zenMode);
@@ -188,15 +176,12 @@
@Test
public void onPreferenceChanged_checkedFalse() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAlarms(true)
- .hideAllVisualEffects()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAlarms(true)
+ .hideAllVisualEffects()
+ .build())
+ .build();
mController.updateZenMode(preference, zenMode);
@@ -213,15 +198,12 @@
@Test
public void onPreferenceChanged_checkedTrue() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAlarms(true)
- .showAllVisualEffects()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAlarms(true)
+ .showAllVisualEffects()
+ .build())
+ .build();
mController.updateZenMode(preference, zenMode);
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceControllerTest.java
index 26da6ab..39ba9e8 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceControllerTest.java
@@ -16,19 +16,17 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.Preference;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -48,8 +46,7 @@
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private Context mContext;
- @Mock
- private ZenModesBackend mBackend;
+ @Mock private ZenHelperBackend mHelperBackend;
@Before
public void setup() {
@@ -58,20 +55,14 @@
mContext = RuntimeEnvironment.application;
mController = new ZenModeOtherLinkPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mHelperBackend);
}
@Test
@EnableFlags(Flags.FLAG_MODES_UI)
public void testHasSummary() {
Preference pref = mock(Preference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), true);
- mController.updateZenMode(pref, zenMode);
+ mController.updateZenMode(pref, TestModeBuilder.EXAMPLE);
verify(pref).setSummary(any());
}
}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherPreferenceControllerTest.java
index 6dd918a..c69a8a0 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeOtherPreferenceControllerTest.java
@@ -16,21 +16,25 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.service.notification.ZenPolicy.STATE_ALLOW;
import static android.service.notification.ZenPolicy.STATE_UNSET;
+
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenPolicy;
+
import androidx.preference.TwoStatePreference;
+
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -61,12 +65,9 @@
@Test
public void testUpdateState_alarms() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_alarm", mBackend);
@@ -79,12 +80,9 @@
@Test
public void testOnPreferenceChange_alarms() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(false).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowAlarms(false).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_alarm", mBackend);
@@ -104,12 +102,9 @@
@Test
public void testUpdateState_media() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowMedia(true).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowMedia(true).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_media", mBackend);
@@ -122,12 +117,9 @@
@Test
public void testOnPreferenceChange_media() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowMedia(false).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowMedia(false).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_media", mBackend);
@@ -147,12 +139,9 @@
@Test
public void testUpdateState_system() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowSystem(true).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowSystem(true).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_system", mBackend);
@@ -165,12 +154,9 @@
@Test
public void testOnPreferenceChange_system() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowSystem(false).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowSystem(false).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_system", mBackend);
@@ -190,12 +176,9 @@
@Test
public void testUpdateState_reminders() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowReminders(true).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowReminders(true).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_reminders",
@@ -209,12 +192,9 @@
@Test
public void testOnPreferenceChange_reminders() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowReminders(false).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowReminders(false).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_reminders",
@@ -235,12 +215,9 @@
@Test
public void testUpdateState_events() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowEvents(true).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowEvents(true).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_events", mBackend);
@@ -253,12 +230,9 @@
@Test
public void testOnPreferenceChange_events() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowEvents(false).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowEvents(false).build())
+ .build();
ZenModeOtherPreferenceController controller =
new ZenModeOtherPreferenceController(mContext, "modes_category_events", mBackend);
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceControllerTest.java
index 81e6464..9d9dd98 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceControllerTest.java
@@ -16,20 +16,17 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
-import android.service.notification.ZenPolicy;
+
import androidx.preference.Preference;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -49,7 +46,7 @@
private Context mContext;
@Mock
- private ZenModesBackend mBackend;
+ private ZenHelperBackend mHelperBackend;
@Before
public void setup() {
@@ -58,20 +55,14 @@
mContext = RuntimeEnvironment.application;
mController = new ZenModePeopleLinkPreferenceController(
- mContext, "something", mBackend);
+ mContext, "something", mHelperBackend);
}
@Test
@EnableFlags(Flags.FLAG_MODES_UI)
public void testHasSummary() {
Preference pref = mock(Preference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), true);
- mController.updateZenMode(pref, zenMode);
+ mController.updateZenMode(pref, TestModeBuilder.EXAMPLE);
verify(pref).setSummary(any());
}
}
\ No newline at end of file
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 c915974..04df27e 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModePrioritySendersPreferenceControllerTest.java
@@ -16,7 +16,6 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_ANYONE;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_NONE;
@@ -40,11 +39,9 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
import android.database.Cursor;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenPolicy;
@@ -54,6 +51,8 @@
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;
import org.junit.Before;
@@ -77,8 +76,8 @@
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
private Context mContext;
- @Mock
- private ZenModesBackend mBackend;
+ @Mock private ZenModesBackend mBackend;
+ @Mock private ZenHelperBackend mHelperBackend;
private PreferenceCategory mMessagesPrefCategory, mCallsPrefCategory;
@@ -90,10 +89,11 @@
mContext = RuntimeEnvironment.application;
- mMessagesController = new ZenModePrioritySendersPreferenceController(
- mContext, "messages", true, mBackend);
- mCallsController = new ZenModePrioritySendersPreferenceController(
- mContext, "calls", false, mBackend);
+ mMessagesController = new ZenModePrioritySendersPreferenceController(mContext, "messages",
+ true, mBackend, mHelperBackend);
+ mCallsController = new ZenModePrioritySendersPreferenceController(mContext, "calls", false,
+ mBackend, mHelperBackend);
+
mMessagesPrefCategory = new PreferenceCategory(mContext);
mMessagesPrefCategory.setKey(mMessagesController.getPreferenceKey());
mCallsPrefCategory = new PreferenceCategory(mContext);
@@ -106,7 +106,7 @@
Cursor cursor = mock(Cursor.class);
when(cursor.getCount()).thenReturn(1);
- when(mBackend.queryAllContactsData()).thenReturn(cursor);
+ when(mHelperBackend.queryAllContactsData()).thenReturn(cursor);
}
// Makes a preference with the provided key and whether it's a checkbox with
@@ -438,20 +438,17 @@
@Test
public void testPreferenceClick_passesCorrectCheckedState_startingUnchecked_messages() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .disallowAllSounds()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .disallowAllSounds()
+ .build())
+ .build();
mMessagesController.displayPreference(mPreferenceScreen);
mMessagesController.updateZenMode(mMessagesPrefCategory, zenMode);
assertThat(((SelectorWithWidgetPreference) mMessagesPrefCategory.findPreference(KEY_NONE))
- .isChecked());
+ .isChecked()).isTrue();
mMessagesPrefCategory.findPreference(KEY_STARRED).performClick();
@@ -463,14 +460,11 @@
@Test
public void testPreferenceClick_passesCorrectCheckedState_startingChecked_messages() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowAllSounds()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowAllSounds()
+ .build())
+ .build();
mMessagesController.displayPreference(mPreferenceScreen);
mMessagesController.updateZenMode(mMessagesPrefCategory, zenMode);
@@ -489,14 +483,11 @@
@Test
public void testPreferenceClick_passesCorrectCheckedState_startingUnchecked_calls() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .disallowAllSounds()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .disallowAllSounds()
+ .build())
+ .build();
mCallsController.displayPreference(mPreferenceScreen);
mCallsController.updateZenMode(mCallsPrefCategory, zenMode);
@@ -514,14 +505,11 @@
@Test
public void testPreferenceClick_passesCorrectCheckedState_startingChecked_calls() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .disallowAllSounds()
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .disallowAllSounds()
+ .build())
+ .build();
mCallsController.displayPreference(mPreferenceScreen);
mCallsController.updateZenMode(mCallsPrefCategory, zenMode);
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceControllerTest.java
index 7bbb042..c1b99e5 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeRepeatCallersPreferenceControllerTest.java
@@ -16,24 +16,27 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_ANYONE;
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_STARRED;
-import static android.service.notification.ZenPolicy.STATE_ALLOW;
import static android.service.notification.ZenPolicy.STATE_DISALLOW;
import static android.service.notification.ZenPolicy.STATE_UNSET;
+
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.service.notification.ZenPolicy;
+
import androidx.preference.TwoStatePreference;
+
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -64,14 +67,11 @@
@Test
public void testUpdateState_allCalls() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowCalls(PEOPLE_TYPE_ANYONE)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowCalls(PEOPLE_TYPE_ANYONE)
+ .build())
+ .build();
ZenModeRepeatCallersPreferenceController controller =
new ZenModeRepeatCallersPreferenceController(mContext, "repeat", mBackend, 1);
@@ -85,15 +85,12 @@
@Test
public void testUpdateState_someCalls() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowCalls(PEOPLE_TYPE_STARRED)
- .allowRepeatCallers(true)
- .build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder()
+ .allowCalls(PEOPLE_TYPE_STARRED)
+ .allowRepeatCallers(true)
+ .build())
+ .build();
ZenModeRepeatCallersPreferenceController controller =
new ZenModeRepeatCallersPreferenceController(mContext, "repeat", mBackend, 1);
@@ -107,12 +104,9 @@
@Test
public void testOnPreferenceChange() {
TwoStatePreference preference = mock(TwoStatePreference.class);
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowRepeatCallers(true).build())
- .build(), true);
+ ZenMode zenMode = new TestModeBuilder()
+ .setZenPolicy(new ZenPolicy.Builder().allowRepeatCallers(true).build())
+ .build();
ZenModeRepeatCallersPreferenceController controller =
new ZenModeRepeatCallersPreferenceController(mContext, "repeat", mBackend, 1);
@@ -130,4 +124,4 @@
assertThat(captor.getValue().getPolicy().getPriorityCallSenders())
.isEqualTo(STATE_UNSET);
}
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceControllerTest.java
index 6b24fa2..cc6a497 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetCalendarPreferenceControllerTest.java
@@ -28,18 +28,20 @@
import static org.mockito.Mockito.when;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
+import android.service.notification.SystemZenRules;
import android.service.notification.ZenModeConfig;
import androidx.preference.DropDownPreference;
import androidx.preference.PreferenceCategory;
import androidx.test.core.app.ApplicationProvider;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -84,9 +86,9 @@
@Test
@EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
public void updateEventMode_updatesConditionAndTriggerDescription() {
- ZenMode mode = new ZenMode("id",
- new AutomaticZenRule.Builder("name", Uri.parse("condition")).build(),
- true); // is active
+ ZenMode mode = new TestModeBuilder()
+ .setPackage(SystemZenRules.PACKAGE_ANDROID)
+ .build();
// Explicitly update preference controller with mode info first, which will also call
// updateState()
@@ -99,6 +101,7 @@
// apply event mode updater to existing mode
ZenMode out = mPrefController.updateEventMode(eventInfo).apply(mode);
+ assertThat(out.getRule().getOwner()).isEqualTo(ZenModeConfig.getEventConditionProvider());
assertThat(out.getRule().getConditionId()).isEqualTo(
ZenModeConfig.toEventConditionId(eventInfo));
assertThat(out.getRule().getTriggerDescription()).isEqualTo("My events");
@@ -111,10 +114,9 @@
eventInfo.calName = "Definitely A Calendar";
eventInfo.reply = REPLY_YES;
- ZenMode mode = new ZenMode("id",
- new AutomaticZenRule.Builder("name",
- ZenModeConfig.toEventConditionId(eventInfo)).build(),
- true); // is active
+ ZenMode mode = new TestModeBuilder()
+ .setConditionId(ZenModeConfig.toEventConditionId(eventInfo))
+ .build();
mPrefController.updateZenMode(mPrefCategory, mode);
// We should see mCalendar, mReply have their values set
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceControllerTest.java
index 7cf327c..7dbc802 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetSchedulePreferenceControllerTest.java
@@ -23,12 +23,11 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.AutomaticZenRule;
import android.app.Flags;
import android.content.Context;
-import android.net.Uri;
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.view.ViewGroup;
import android.widget.ToggleButton;
@@ -37,6 +36,8 @@
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import org.junit.Before;
import org.junit.Rule;
@@ -80,9 +81,9 @@
@Test
@EnableFlags({Flags.FLAG_MODES_API, Flags.FLAG_MODES_UI})
public void updateScheduleRule_updatesConditionAndTriggerDescription() {
- ZenMode mode = new ZenMode("id",
- new AutomaticZenRule.Builder("name", Uri.parse("condition")).build(),
- true); // is active
+ ZenMode mode = new TestModeBuilder()
+ .setPackage(SystemZenRules.PACKAGE_ANDROID)
+ .build();
ZenModeConfig.ScheduleInfo scheduleInfo = new ZenModeConfig.ScheduleInfo();
scheduleInfo.days = new int[] { Calendar.MONDAY };
@@ -93,6 +94,8 @@
assertThat(out.getRule().getConditionId())
.isEqualTo(ZenModeConfig.toScheduleConditionId(scheduleInfo));
assertThat(out.getRule().getTriggerDescription()).isNotEmpty();
+ assertThat(out.getRule().getOwner()).isEqualTo(
+ ZenModeConfig.getScheduleConditionProvider());
}
@Test
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceControllerTest.java
index 91de4ea..ffd239b 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceControllerTest.java
@@ -16,6 +16,7 @@
package com.android.settings.notification.modes;
+import static android.app.AutomaticZenRule.TYPE_OTHER;
import static android.app.AutomaticZenRule.TYPE_SCHEDULE_CALENDAR;
import static android.app.AutomaticZenRule.TYPE_SCHEDULE_TIME;
import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
@@ -25,6 +26,8 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -32,18 +35,22 @@
import android.app.Flags;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.net.Uri;
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.service.notification.ZenPolicy;
import androidx.preference.PreferenceCategory;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.PrimarySwitchPreference;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import org.junit.Before;
import org.junit.Rule;
@@ -57,6 +64,7 @@
import java.util.Calendar;
@RunWith(RobolectricTestRunner.class)
+@EnableFlags(Flags.FLAG_MODES_UI)
public class ZenModeSetTriggerLinkPreferenceControllerTest {
@Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT);
@@ -65,10 +73,18 @@
private ZenModesBackend mBackend;
private Context mContext;
+ private PrimarySwitchPreference mPreference;
+
+ @Mock
+ private PackageManager mPm;
+ @Mock
+ private ConfigurationActivityHelper mConfigurationActivityHelper;
+
@Mock
private PreferenceCategory mPrefCategory;
@Mock
- private PrimarySwitchPreference mPreference;
+ private DashboardFragment mFragment;
+
private ZenModeSetTriggerLinkPreferenceController mPrefController;
@Before
@@ -77,63 +93,47 @@
mContext = ApplicationProvider.getApplicationContext();
mPrefController = new ZenModeSetTriggerLinkPreferenceController(mContext,
- "zen_automatic_trigger_category", mBackend);
+ "zen_automatic_trigger_category", mFragment, mBackend,
+ mConfigurationActivityHelper,
+ mock(ZenServiceListing.class));
+ mPreference = new PrimarySwitchPreference(mContext);
+
when(mPrefCategory.findPreference(AUTOMATIC_TRIGGER_PREF_KEY)).thenReturn(mPreference);
}
@Test
- @EnableFlags(Flags.FLAG_MODES_UI)
public void testIsAvailable() {
// should not be available for manual DND
ZenMode manualMode = ZenMode.manualDndMode(new AutomaticZenRule.Builder("Do Not Disturb",
- Uri.parse("manual"))
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .build(), true);
+ Uri.parse("manual"))
+ .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ .build(), true);
mPrefController.updateZenMode(mPrefCategory, manualMode);
assertThat(mPrefController.isAvailable()).isFalse();
// should be available for other modes
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
- .setEnabled(false)
- .build(), false);
- mPrefController.updateZenMode(mPrefCategory, zenMode);
+ mPrefController.updateZenMode(mPrefCategory, TestModeBuilder.EXAMPLE);
assertThat(mPrefController.isAvailable()).isTrue();
}
@Test
public void testUpdateState() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
- .setEnabled(false)
- .build(), false);
+ ZenMode zenMode = new TestModeBuilder().setEnabled(false).build();
// Update preference controller with a zen mode that is not enabled
mPrefController.updateZenMode(mPrefCategory, zenMode);
- verify(mPreference).setChecked(false);
+ assertThat(mPreference.getCheckedState()).isFalse();
// Now with the rule enabled
zenMode.getRule().setEnabled(true);
mPrefController.updateZenMode(mPrefCategory, zenMode);
- verify(mPreference).setChecked(true);
+ assertThat(mPreference.getCheckedState()).isTrue();
}
@Test
public void testOnPreferenceChange() {
- ZenMode zenMode = new ZenMode("id",
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
- .setEnabled(false)
- .build(), false);
+ ZenMode zenMode = new TestModeBuilder().setEnabled(false).build();
// start with disabled rule
mPrefController.updateZenMode(mPrefCategory, zenMode);
@@ -152,47 +152,135 @@
ZenModeConfig.EventInfo eventInfo = new ZenModeConfig.EventInfo();
eventInfo.calendarId = 1L;
eventInfo.calName = "My events";
- ZenMode mode = new ZenMode("id", new AutomaticZenRule.Builder("name",
- ZenModeConfig.toEventConditionId(eventInfo))
+ ZenMode mode = new TestModeBuilder()
+ .setPackage(SystemZenRules.PACKAGE_ANDROID)
+ .setConditionId(ZenModeConfig.toEventConditionId(eventInfo))
.setType(TYPE_SCHEDULE_CALENDAR)
.setTriggerDescription("My events")
- .build(),
- true); // is active
+ .build();
mPrefController.updateZenMode(mPrefCategory, mode);
- verify(mPreference).setTitle(R.string.zen_mode_set_calendar_link);
- verify(mPreference).setSummary(mode.getRule().getTriggerDescription());
+ assertThat(mPreference.getTitle()).isNotNull();
+ assertThat(mPreference.getTitle().toString()).isEqualTo(
+ mContext.getString(R.string.zen_mode_set_calendar_link));
+ assertThat(mPreference.getSummary()).isNotNull();
+ assertThat(mPreference.getSummary().toString()).isEqualTo(
+ mode.getRule().getTriggerDescription());
+ assertThat(mPreference.getIcon()).isNull();
- ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
- verify(mPreference).setIntent(captor.capture());
// Destination as written into the intent by SubSettingLauncher
- assertThat(
- captor.getValue().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
- ZenModeSetCalendarFragment.class.getName());
+ assertThat(mPreference.getIntent().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(ZenModeSetCalendarFragment.class.getName());
}
@Test
public void testRuleLink_schedule() {
ZenModeConfig.ScheduleInfo scheduleInfo = new ZenModeConfig.ScheduleInfo();
- scheduleInfo.days = new int[] { Calendar.MONDAY, Calendar.TUESDAY, Calendar.THURSDAY };
+ scheduleInfo.days = new int[]{Calendar.MONDAY, Calendar.TUESDAY, Calendar.THURSDAY};
scheduleInfo.startHour = 1;
scheduleInfo.endHour = 15;
- ZenMode mode = new ZenMode("id", new AutomaticZenRule.Builder("name",
- ZenModeConfig.toScheduleConditionId(scheduleInfo))
+ ZenMode mode = new TestModeBuilder()
+ .setConditionId(ZenModeConfig.toScheduleConditionId(scheduleInfo))
+ .setPackage(SystemZenRules.PACKAGE_ANDROID)
.setType(TYPE_SCHEDULE_TIME)
.setTriggerDescription("some schedule")
- .build(),
- true); // is active
+ .build();
mPrefController.updateZenMode(mPrefCategory, mode);
- verify(mPreference).setTitle(R.string.zen_mode_set_schedule_link);
- verify(mPreference).setSummary(mode.getRule().getTriggerDescription());
+ assertThat(mPreference.getTitle()).isNotNull();
+ assertThat(mPreference.getTitle().toString()).isEqualTo(
+ mContext.getString(R.string.zen_mode_set_schedule_link));
+ assertThat(mPreference.getSummary()).isNotNull();
+ assertThat(mPreference.getSummary().toString()).isEqualTo(
+ mode.getRule().getTriggerDescription());
+ assertThat(mPreference.getIcon()).isNull();
- ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
- verify(mPreference).setIntent(captor.capture());
// Destination as written into the intent by SubSettingLauncher
- assertThat(
- captor.getValue().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
- ZenModeSetScheduleFragment.class.getName());
+ assertThat(mPreference.getIntent().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(ZenModeSetScheduleFragment.class.getName());
+ }
+
+ @Test
+ public void testRuleLink_manual() {
+ ZenMode mode = new TestModeBuilder()
+ .setConditionId(ZenModeConfig.toCustomManualConditionId())
+ .setPackage(SystemZenRules.PACKAGE_ANDROID)
+ .setType(TYPE_OTHER)
+ .setTriggerDescription("Will not be shown")
+ .build();
+ mPrefController.updateZenMode(mPrefCategory, mode);
+
+ assertThat(mPreference.getTitle()).isNotNull();
+ assertThat(mPreference.getTitle().toString()).isEqualTo(
+ mContext.getString(R.string.zen_mode_select_schedule));
+ assertThat(mPreference.getIcon()).isNotNull();
+ assertThat(mPreference.getSummary()).isNotNull();
+ assertThat(mPreference.getSummary().toString()).isEqualTo("");
+
+ // Set up a click listener to open the dialog.
+ assertThat(mPreference.getOnPreferenceClickListener()).isNotNull();
+ }
+
+ @Test
+ public void testRuleLink_appWithConfigActivity_linksToConfigActivity() {
+ ZenMode mode = new TestModeBuilder()
+ .setPackage("some.package")
+ .setTriggerDescription("When The Music's Over")
+ .build();
+ Intent configurationIntent = new Intent("configure the mode");
+ when(mConfigurationActivityHelper.getConfigurationActivityIntentForMode(any(), any()))
+ .thenReturn(configurationIntent);
+
+ mPrefController.updateZenMode(mPrefCategory, mode);
+
+ assertThat(mPreference.getTitle()).isNotNull();
+ assertThat(mPreference.getTitle().toString()).isEqualTo(
+ mContext.getString(R.string.zen_mode_configuration_link_title));
+ assertThat(mPreference.getSummary()).isNotNull();
+ assertThat(mPreference.getSummary().toString()).isEqualTo("When The Music's Over");
+ assertThat(mPreference.getIntent()).isEqualTo(configurationIntent);
+ }
+
+ @Test
+ public void testRuleLink_appWithoutConfigActivity_hidden() {
+ ZenMode mode = new TestModeBuilder()
+ .setPackage("some.package")
+ .setTriggerDescription("Will not be shown :(")
+ .build();
+ when(mConfigurationActivityHelper.getConfigurationActivityIntentForMode(any(), any()))
+ .thenReturn(null);
+
+ mPrefController.updateZenMode(mPrefCategory, mode);
+
+ assertThat(mPrefCategory.isVisible()).isFalse();
+ }
+
+ @Test
+ public void onScheduleChosen_updatesMode() {
+ ZenMode originalMode = new TestModeBuilder()
+ .setConditionId(ZenModeConfig.toCustomManualConditionId())
+ .setPackage(SystemZenRules.PACKAGE_ANDROID)
+ .setType(TYPE_OTHER)
+ .setTriggerDescription("")
+ .build();
+ mPrefController.updateZenMode(mPrefCategory, originalMode);
+
+ ZenModeConfig.ScheduleInfo scheduleInfo = new ZenModeConfig.ScheduleInfo();
+ scheduleInfo.days = new int[] { Calendar.MONDAY };
+ scheduleInfo.startHour = 12;
+ scheduleInfo.endHour = 15;
+ Uri scheduleUri = ZenModeConfig.toScheduleConditionId(scheduleInfo);
+
+ mPrefController.mOnScheduleOptionListener.onScheduleSelected(scheduleUri);
+
+ // verify the backend got asked to update the mode to be schedule-based.
+ ArgumentCaptor<ZenMode> captor = ArgumentCaptor.forClass(ZenMode.class);
+ verify(mBackend).updateMode(captor.capture());
+ ZenMode updatedMode = captor.getValue();
+ assertThat(updatedMode.getType()).isEqualTo(TYPE_SCHEDULE_TIME);
+ assertThat(updatedMode.getRule().getConditionId()).isEqualTo(scheduleUri);
+ assertThat(updatedMode.getRule().getTriggerDescription()).isNotEmpty();
+ assertThat(updatedMode.getRule().getOwner()).isEqualTo(
+ ZenModeConfig.getScheduleConditionProvider());
}
}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeTest.java
deleted file mode 100644
index 0528621..0000000
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeTest.java
+++ /dev/null
@@ -1,194 +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.notification.modes;
-
-import static android.app.NotificationManager.INTERRUPTION_FILTER_ALARMS;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_NONE;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.AutomaticZenRule;
-import android.net.Uri;
-import android.service.notification.ZenPolicy;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class ZenModeTest {
-
- private static final ZenPolicy ZEN_POLICY = new ZenPolicy.Builder().allowAllSounds().build();
-
- private static final AutomaticZenRule ZEN_RULE =
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(ZEN_POLICY)
- .build();
-
- @Test
- public void testBasicMethods() {
- ZenMode zenMode = new ZenMode("id", ZEN_RULE, true);
-
- assertThat(zenMode.getId()).isEqualTo("id");
- assertThat(zenMode.getRule()).isEqualTo(ZEN_RULE);
- assertThat(zenMode.isManualDnd()).isFalse();
- assertThat(zenMode.canBeDeleted()).isTrue();
- assertThat(zenMode.isActive()).isTrue();
-
- ZenMode manualMode = ZenMode.manualDndMode(ZEN_RULE, false);
- assertThat(manualMode.getId()).isEqualTo(ZenMode.MANUAL_DND_MODE_ID);
- assertThat(manualMode.isManualDnd()).isTrue();
- assertThat(manualMode.canBeDeleted()).isFalse();
- assertThat(manualMode.isActive()).isFalse();
- }
-
- @Test
- public void getPolicy_interruptionFilterPriority_returnsZenPolicy() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(ZEN_POLICY)
- .build(), false);
-
- assertThat(zenMode.getPolicy()).isEqualTo(ZEN_POLICY);
- }
-
- @Test
- public void getPolicy_interruptionFilterAll_returnsPolicyAllowingAll() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_ALL)
- .setZenPolicy(ZEN_POLICY) // should be ignored
- .build(), false);
-
- assertThat(zenMode.getPolicy()).isEqualTo(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .allowAllSounds().showAllVisualEffects().build());
- }
-
- @Test
- public void getPolicy_interruptionFilterAlarms_returnsPolicyAllowingAlarms() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
- .setZenPolicy(ZEN_POLICY) // should be ignored
- .build(), false);
-
- assertThat(zenMode.getPolicy()).isEqualTo(
- new ZenPolicy.Builder()
- .disallowAllSounds()
- .allowAlarms(true)
- .allowMedia(true)
- .allowPriorityChannels(false)
- .build());
- }
-
- @Test
- public void getPolicy_interruptionFilterNone_returnsPolicyAllowingNothing() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_NONE)
- .setZenPolicy(ZEN_POLICY) // should be ignored
- .build(), false);
-
- assertThat(zenMode.getPolicy()).isEqualTo(
- new ZenPolicy.Builder()
- .disallowAllSounds()
- .hideAllVisualEffects()
- .allowPriorityChannels(false)
- .build());
- }
-
- @Test
- public void setPolicy_setsInterruptionFilterPriority() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
- .build(), false);
-
- zenMode.setPolicy(ZEN_POLICY);
-
- assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
- INTERRUPTION_FILTER_PRIORITY);
- assertThat(zenMode.getPolicy()).isEqualTo(ZEN_POLICY);
- assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(ZEN_POLICY);
- }
-
- @Test
- public void setPolicy_withAllChannelsAllowed_setsInterruptionFilterAll() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
- .setZenPolicy(ZEN_POLICY)
- .build(), false);
-
- zenMode.setPolicy(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL).build());
-
- assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(INTERRUPTION_FILTER_ALL);
- assertThat(zenMode.getPolicy()).isEqualTo(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .allowAllSounds().showAllVisualEffects().build());
- }
-
- @Test
- public void setPolicy_priorityToAllChannelsAndBack_restoresOldPolicy() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(ZEN_POLICY)
- .build(), false);
-
- zenMode.setPolicy(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL).build());
- assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(INTERRUPTION_FILTER_ALL);
- assertThat(zenMode.getPolicy()).isEqualTo(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .allowAllSounds().showAllVisualEffects().build());
-
- zenMode.setPolicy(
- new ZenPolicy.Builder().allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY).build());
-
- assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
- INTERRUPTION_FILTER_PRIORITY);
- assertThat(zenMode.getPolicy()).isEqualTo(ZEN_POLICY);
- assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(ZEN_POLICY);
- }
-
- @Test
- public void setPolicy_alarmsOnlyToAllChannelsAndBack_restoresPolicySimilarToAlarmsOnly() {
- ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
- .build(), false);
-
- zenMode.setPolicy(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL).build());
- assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(INTERRUPTION_FILTER_ALL);
- assertThat(zenMode.getPolicy()).isEqualTo(
- new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .allowAllSounds().showAllVisualEffects().build());
-
- zenMode.setPolicy(
- new ZenPolicy.Builder().allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY).build());
-
- // We don't go back to ALARMS, but the policy must be the one the user was seeing before.
- ZenPolicy alarmsOnlyLikePolicy = new ZenPolicy.Builder().disallowAllSounds()
- .allowAlarms(true).allowMedia(true).allowPriorityChannels(false)
- .build();
- assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
- INTERRUPTION_FILTER_PRIORITY);
- assertThat(zenMode.getPolicy()).isEqualTo(alarmsOnlyLikePolicy);
- assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(alarmsOnlyLikePolicy);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesBackendTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesBackendTest.java
deleted file mode 100644
index 9483683..0000000
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModesBackendTest.java
+++ /dev/null
@@ -1,363 +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.notification.modes;
-
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
-import static android.provider.Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
-import static android.provider.Settings.Global.ZEN_MODE_OFF;
-import static android.service.notification.Condition.SOURCE_UNKNOWN;
-import static android.service.notification.Condition.STATE_FALSE;
-import static android.service.notification.Condition.STATE_TRUE;
-import static android.service.notification.ZenPolicy.STATE_ALLOW;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.junit.Assert.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.AutomaticZenRule;
-import android.app.Flags;
-import android.app.NotificationManager;
-import android.app.NotificationManager.Policy;
-import android.content.Context;
-import android.net.Uri;
-import android.platform.test.annotations.EnableFlags;
-import android.platform.test.flag.junit.SetFlagsRule;
-import android.provider.Settings;
-import android.service.notification.Condition;
-import android.service.notification.ZenAdapters;
-import android.service.notification.ZenDeviceEffects;
-import android.service.notification.ZenModeConfig;
-import android.service.notification.ZenPolicy;
-
-import com.android.settings.R;
-
-import com.google.common.collect.ImmutableMap;
-
-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.shadows.ShadowApplication;
-
-import java.time.Duration;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-@EnableFlags(Flags.FLAG_MODES_UI)
-public class ZenModesBackendTest {
-
- private static final String ZEN_RULE_ID = "rule";
- private static final AutomaticZenRule ZEN_RULE =
- new AutomaticZenRule.Builder("Driving", Uri.parse("drive"))
- .setType(AutomaticZenRule.TYPE_DRIVING)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build();
-
- private static final AutomaticZenRule MANUAL_DND_RULE =
- new AutomaticZenRule.Builder("Do Not Disturb", Uri.EMPTY)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build();
-
- @Mock
- private NotificationManager mNm;
-
- private Context mContext;
- private ZenModesBackend mBackend;
-
- @Rule
- public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(
- SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT);
-
- // Helper methods to add active/inactive rule state to a config. Returns a copy.
- private ZenModeConfig configWithManualRule(ZenModeConfig base, boolean active) {
- ZenModeConfig out = base.copy();
-
- if (active) {
- out.manualRule.zenMode = ZEN_MODE_IMPORTANT_INTERRUPTIONS;
- out.manualRule.condition =
- new Condition(out.manualRule.conditionId, "", STATE_TRUE, SOURCE_UNKNOWN);
- } else {
- out.manualRule.zenMode = ZEN_MODE_OFF;
- out.manualRule.condition =
- new Condition(out.manualRule.conditionId, "", STATE_FALSE, SOURCE_UNKNOWN);
- }
- return out;
- }
-
- private ZenModeConfig configWithRule(ZenModeConfig base, String ruleId, AutomaticZenRule rule,
- boolean active) {
- ZenModeConfig out = base.copy();
-
- // Note that there are many other fields of zenRule, but here we only set the ones
- // relevant to determining whether or not it is active.
- ZenModeConfig.ZenRule zenRule = new ZenModeConfig.ZenRule();
- zenRule.pkg = "package";
- zenRule.enabled = active;
- zenRule.snoozing = false;
- zenRule.condition = new Condition(rule.getConditionId(), "",
- active ? Condition.STATE_TRUE : Condition.STATE_FALSE,
- Condition.SOURCE_USER_ACTION);
- out.automaticRules.put(ruleId, zenRule);
-
- return out;
- }
-
- @Before
- public void setup() {
- MockitoAnnotations.initMocks(this);
- ShadowApplication shadowApplication = ShadowApplication.getInstance();
- shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm);
-
- mContext = RuntimeEnvironment.application;
- mBackend = new ZenModesBackend(mContext);
-
- // Default catch-all case with no data. This isn't realistic, but tests below that rely
- // on the config to get data on rules active will create those individually.
- when(mNm.getZenModeConfig()).thenReturn(new ZenModeConfig());
- }
-
- @Test
- public void getModes_containsManualDndAndZenRules() {
- AutomaticZenRule rule2 = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().disallowAllSounds().build())
- .build();
- Policy dndPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS,
- Policy.PRIORITY_SENDERS_CONTACTS, Policy.PRIORITY_SENDERS_CONTACTS);
- when(mNm.getAutomaticZenRules()).thenReturn(
- ImmutableMap.of("rule1", ZEN_RULE, "rule2", rule2));
- ZenModeConfig config = new ZenModeConfig();
- config.applyNotificationPolicy(dndPolicy);
- assertThat(config.manualRule.zenPolicy.getPriorityCategoryAlarms()).isEqualTo(STATE_ALLOW);
- when(mNm.getZenModeConfig()).thenReturn(config);
-
- List<ZenMode> modes = mBackend.getModes();
-
- // all modes exist, but none of them are currently active
- assertThat(modes).containsExactly(
- ZenMode.manualDndMode(
- new AutomaticZenRule.Builder(
- mContext.getString(R.string.zen_mode_settings_title), Uri.EMPTY)
- .setType(AutomaticZenRule.TYPE_OTHER)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(ZenAdapters.notificationPolicyToZenPolicy(dndPolicy))
- .setManualInvocationAllowed(true)
- .build(),
- false),
- new ZenMode("rule2", rule2, false),
- new ZenMode("rule1", ZEN_RULE, false))
- .inOrder();
- }
-
- @Test
- public void getMode_manualDnd_returnsMode() {
- Policy dndPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS,
- Policy.PRIORITY_SENDERS_CONTACTS, Policy.PRIORITY_SENDERS_CONTACTS);
- ZenModeConfig config = new ZenModeConfig();
- config.applyNotificationPolicy(dndPolicy);
- when(mNm.getZenModeConfig()).thenReturn(config);
-
- ZenMode mode = mBackend.getMode(ZenMode.MANUAL_DND_MODE_ID);
-
- assertThat(mode).isEqualTo(
- ZenMode.manualDndMode(
- new AutomaticZenRule.Builder(
- mContext.getString(R.string.zen_mode_settings_title), Uri.EMPTY)
- .setType(AutomaticZenRule.TYPE_OTHER)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(ZenAdapters.notificationPolicyToZenPolicy(dndPolicy))
- .setManualInvocationAllowed(true)
- .build(), false));
- }
-
- @Test
- public void getMode_zenRule_returnsMode() {
- when(mNm.getAutomaticZenRule(eq(ZEN_RULE_ID))).thenReturn(ZEN_RULE);
-
- ZenMode mode = mBackend.getMode(ZEN_RULE_ID);
-
- assertThat(mode).isEqualTo(new ZenMode(ZEN_RULE_ID, ZEN_RULE, false));
- }
-
- @Test
- public void getMode_missingRule_returnsNull() {
- when(mNm.getAutomaticZenRule(any())).thenReturn(null);
-
- ZenMode mode = mBackend.getMode(ZEN_RULE_ID);
-
- assertThat(mode).isNull();
- verify(mNm).getAutomaticZenRule(eq(ZEN_RULE_ID));
- }
-
- @Test
- public void getMode_manualDnd_returnsCorrectActiveState() {
- // Set up a base config with an active rule to make sure we're looking at the correct info
- ZenModeConfig configWithActiveRule = configWithRule(new ZenModeConfig(), ZEN_RULE_ID,
- ZEN_RULE, true);
-
- // Equivalent to disallowAllSounds()
- Policy dndPolicy = new Policy(0, 0, 0);
- configWithActiveRule.applyNotificationPolicy(dndPolicy);
- when(mNm.getZenModeConfig()).thenReturn(configWithActiveRule);
-
- ZenMode mode = mBackend.getMode(ZenMode.MANUAL_DND_MODE_ID);
-
- // By default, manual rule is inactive
- assertThat(mode.isActive()).isFalse();
-
- // Now the returned config will represent the manual rule being active
- when(mNm.getZenModeConfig()).thenReturn(configWithManualRule(configWithActiveRule, true));
- ZenMode activeMode = mBackend.getMode(ZenMode.MANUAL_DND_MODE_ID);
- assertThat(activeMode.isActive()).isTrue();
- }
-
- @Test
- public void getMode_zenRule_returnsCorrectActiveState() {
- // Set up a base config that has an active manual rule and "rule2", to make sure we're
- // looking at the correct rule's info.
- ZenModeConfig configWithActiveRules = configWithRule(
- configWithManualRule(new ZenModeConfig(), true), // active manual rule
- "rule2", ZEN_RULE, true); // active rule 2
-
- when(mNm.getAutomaticZenRule(eq(ZEN_RULE_ID))).thenReturn(ZEN_RULE);
- when(mNm.getZenModeConfig()).thenReturn(
- configWithRule(configWithActiveRules, ZEN_RULE_ID, ZEN_RULE, false));
-
- // Round 1: the current config should indicate that the rule is not active
- ZenMode mode = mBackend.getMode(ZEN_RULE_ID);
- assertThat(mode.isActive()).isFalse();
-
- when(mNm.getZenModeConfig()).thenReturn(
- configWithRule(configWithActiveRules, ZEN_RULE_ID, ZEN_RULE, true));
- ZenMode activeMode = mBackend.getMode(ZEN_RULE_ID);
- assertThat(activeMode.isActive()).isTrue();
- }
-
- @Test
- public void updateMode_manualDnd_setsDeviceEffects() throws Exception {
- ZenMode manualDnd = ZenMode.manualDndMode(
- new AutomaticZenRule.Builder("DND", Uri.EMPTY)
- .setZenPolicy(new ZenPolicy())
- .setDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldDimWallpaper(true)
- .build())
- .build(), false);
-
- mBackend.updateMode(manualDnd);
-
- verify(mNm).setManualZenRuleDeviceEffects(new ZenDeviceEffects.Builder()
- .setShouldDimWallpaper(true)
- .build());
- }
-
- @Test
- public void updateMode_manualDnd_setsNotificationPolicy() {
- ZenMode manualDnd = ZenMode.manualDndMode(
- new AutomaticZenRule.Builder("DND", Uri.EMPTY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(), false);
-
- mBackend.updateMode(manualDnd);
-
- verify(mNm).setNotificationPolicy(eq(new ZenModeConfig().toNotificationPolicy(
- new ZenPolicy.Builder().allowAllSounds().build())), eq(true));
- }
-
- @Test
- public void updateMode_zenRule_updatesRule() {
- ZenMode ruleMode = new ZenMode("rule", ZEN_RULE, false);
-
- mBackend.updateMode(ruleMode);
-
- verify(mNm).updateAutomaticZenRule(eq("rule"), eq(ZEN_RULE), eq(true));
- }
-
- @Test
- public void activateMode_manualDnd_setsZenModeImportant() {
- mBackend.activateMode(ZenMode.manualDndMode(MANUAL_DND_RULE, false), null);
-
- verify(mNm).setZenMode(eq(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS), eq(null),
- any(), eq(true));
- }
-
- @Test
- public void activateMode_manualDndWithDuration_setsZenModeImportantWithCondition() {
- mBackend.activateMode(ZenMode.manualDndMode(MANUAL_DND_RULE, false),
- Duration.ofMinutes(30));
-
- verify(mNm).setZenMode(eq(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS),
- eq(ZenModeConfig.toTimeCondition(mContext, 30, 0, true).id),
- any(),
- eq(true));
- }
-
- @Test
- public void activateMode_zenRule_setsRuleStateActive() {
- mBackend.activateMode(new ZenMode(ZEN_RULE_ID, ZEN_RULE, false), null);
-
- verify(mNm).setAutomaticZenRuleState(eq(ZEN_RULE_ID),
- eq(new Condition(ZEN_RULE.getConditionId(), "", Condition.STATE_TRUE,
- Condition.SOURCE_USER_ACTION)));
- }
-
- @Test
- public void activateMode_zenRuleWithDuration_fails() {
- assertThrows(IllegalArgumentException.class,
- () -> mBackend.activateMode(new ZenMode(ZEN_RULE_ID, ZEN_RULE, false),
- Duration.ofMinutes(30)));
- }
-
- @Test
- public void deactivateMode_manualDnd_setsZenModeOff() {
- mBackend.deactivateMode(ZenMode.manualDndMode(MANUAL_DND_RULE, true));
-
- verify(mNm).setZenMode(eq(ZEN_MODE_OFF), eq(null), any(), eq(true));
- }
-
- @Test
- public void deactivateMode_zenRule_setsRuleStateInactive() {
- mBackend.deactivateMode(new ZenMode(ZEN_RULE_ID, ZEN_RULE, false));
-
- verify(mNm).setAutomaticZenRuleState(eq(ZEN_RULE_ID),
- eq(new Condition(ZEN_RULE.getConditionId(), "", Condition.STATE_FALSE,
- Condition.SOURCE_USER_ACTION)));
- }
-
- @Test
- public void removeMode_zenRule_deletesRule() {
- mBackend.removeMode(new ZenMode(ZEN_RULE_ID, ZEN_RULE, false));
-
- verify(mNm).removeAutomaticZenRule(ZEN_RULE_ID, true);
- }
-
- @Test
- public void removeMode_manualDnd_fails() {
- assertThrows(IllegalArgumentException.class,
- () -> mBackend.removeMode(ZenMode.manualDndMode(MANUAL_DND_RULE, false)));
- }
-}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceControllerTest.java
new file mode 100644
index 0000000..fe530c1
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListAddModePreferenceControllerTest.java
@@ -0,0 +1,225 @@
+/*
+ * 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.modes;
+
+import static android.app.NotificationManager.META_DATA_AUTOMATIC_RULE_TYPE;
+import static android.app.NotificationManager.META_DATA_RULE_INSTANCE_LIMIT;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+
+import com.android.settings.notification.modes.ZenModesListAddModePreferenceController.ModeType;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.util.concurrent.MoreExecutors;
+
+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.MockitoAnnotations;
+import org.mockito.stubbing.Answer;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.List;
+import java.util.function.Function;
+
+@RunWith(RobolectricTestRunner.class)
+public class ZenModesListAddModePreferenceControllerTest {
+
+ private Context mContext;
+ private ZenModesListAddModePreferenceController mController;
+
+ @Mock private ZenModesListAddModePreferenceController.OnAddModeListener mListener;
+ @Mock private ZenServiceListing mZenServiceListing;
+ @Mock private ConfigurationActivityHelper mConfigurationActivityHelper;
+ @Mock private NotificationManager mNm;
+ @Mock private PackageManager mPm;
+
+ @Captor private ArgumentCaptor<List<ModeType>> mListenerCaptor;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.getApplication();
+ Function<ApplicationInfo, Drawable> appIconRetriever = appInfo -> new ColorDrawable();
+
+ mController = new ZenModesListAddModePreferenceController(mContext, mListener,
+ mZenServiceListing, mConfigurationActivityHelper, mNm, mPm, appIconRetriever,
+ MoreExecutors.newDirectExecutorService(), MoreExecutors.directExecutor());
+
+ when(mConfigurationActivityHelper.getConfigurationActivityFromApprovedComponent(any()))
+ .thenAnswer((Answer<ComponentName>) invocationOnMock -> {
+ // By default, assume the ComponentInfo is also the configurationActivity.
+ ComponentInfo ci = invocationOnMock.getArgument(0);
+ return ci != null ? ci.getComponentName() : null;
+ });
+ }
+
+ @Test
+ public void onClickAddMode_noAppProviders_onlyOptionIsCustom() {
+ when(mZenServiceListing.loadApprovedComponents()).thenReturn(ImmutableSet.of());
+
+ mController.onClickAddMode();
+
+ verify(mListener).onAvailableModeTypesForAdd(mListenerCaptor.capture());
+ List<ModeType> options = mListenerCaptor.getValue();
+ assertThat(options).hasSize(1);
+ assertThat(options.get(0).name()).isEqualTo("Custom");
+ assertThat(options.get(0).summary()).isNull();
+ assertThat(options.get(0).icon()).isNotNull();
+ assertThat(options.get(0).creationActivityIntent()).isNull();
+ }
+
+ @Test
+ public void onClickAddMode_someAppProviders_includedInOptions() {
+ ImmutableSet<ComponentInfo> approvedComponents = ImmutableSet.of(
+ newComponentInfoWithValidMetadata("pkg1"),
+ newComponentInfoWithValidMetadata("pkg2"));
+ when(mZenServiceListing.loadApprovedComponents()).thenReturn(approvedComponents);
+
+ mController.onClickAddMode();
+
+ verify(mListener).onAvailableModeTypesForAdd(mListenerCaptor.capture());
+ List<ModeType> options = mListenerCaptor.getValue();
+ assertThat(options).hasSize(3);
+
+ assertThat(options.get(1).name()).isEqualTo("Rule by pkg1");
+ assertThat(options.get(1).summary()).isEqualTo("A package called pkg1");
+ assertThat(options.get(1).icon()).isNotNull();
+ assertThat(options.get(1).creationActivityIntent()).isNotNull();
+ assertThat(options.get(1).creationActivityIntent().getComponent()).isEqualTo(
+ new ComponentName("pkg1", "pkg1.activity"));
+
+ assertThat(options.get(0).name()).isEqualTo("Custom");
+ assertThat(options.get(2).name()).isEqualTo("Rule by pkg2");
+ }
+
+ @Test
+ public void onClickAddMode_someAppProviders_optionsAreSorted() {
+ ImmutableSet<ComponentInfo> approvedComponents = ImmutableSet.of(
+ newComponentInfoWithValidMetadata("pkg_Z"),
+ newComponentInfoWithValidMetadata("pkg_A"),
+ newComponentInfoWithValidMetadata("pkg_F"),
+ newComponentInfoWithValidMetadata("pkg_C"));
+ when(mZenServiceListing.loadApprovedComponents()).thenReturn(approvedComponents);
+
+ mController.onClickAddMode();
+
+ verify(mListener).onAvailableModeTypesForAdd(mListenerCaptor.capture());
+ List<ModeType> options = mListenerCaptor.getValue();
+ assertThat(options).hasSize(5);
+ assertThat(options.stream().map(o -> o.name()).toList())
+ .containsExactly("Custom", "Rule by pkg_A", "Rule by pkg_C", "Rule by pkg_F",
+ "Rule by pkg_Z")
+ .inOrder();
+ }
+
+ @Test
+ public void onClickAddMode_appProviderWithMissingMetadata_notAnOption() {
+ ComponentInfo componentWithoutRuleType = newComponentInfoWithValidMetadata("pkg1");
+ componentWithoutRuleType.metaData.remove(META_DATA_AUTOMATIC_RULE_TYPE);
+ ImmutableSet<ComponentInfo> approvedComponents = ImmutableSet.of(
+ componentWithoutRuleType, newComponentInfoWithValidMetadata("pkg2"));
+ when(mZenServiceListing.loadApprovedComponents()).thenReturn(approvedComponents);
+
+ mController.onClickAddMode();
+
+ verify(mListener).onAvailableModeTypesForAdd(mListenerCaptor.capture());
+ List<ModeType> options = mListenerCaptor.getValue();
+ assertThat(options).hasSize(2);
+ assertThat(options.get(0).name()).isEqualTo("Custom");
+ assertThat(options.get(1).name()).isEqualTo("Rule by pkg2");
+ }
+
+ @Test
+ public void onClickAddMode_appProviderWithRuleLimitExceeded_notAnOption() {
+ ComponentInfo componentWithLimitThreeRules = newComponentInfoWithValidMetadata("pkg1");
+ componentWithLimitThreeRules.metaData.putInt(META_DATA_RULE_INSTANCE_LIMIT, 3);
+ ImmutableSet<ComponentInfo> approvedComponents = ImmutableSet.of(
+ componentWithLimitThreeRules, newComponentInfoWithValidMetadata("pkg2"));
+ when(mZenServiceListing.loadApprovedComponents()).thenReturn(approvedComponents);
+ when(mNm.getRuleInstanceCount(any())).thenReturn(3); // Already 3 created rules.
+
+ mController.onClickAddMode();
+
+ verify(mListener).onAvailableModeTypesForAdd(mListenerCaptor.capture());
+ List<ModeType> options = mListenerCaptor.getValue();
+ assertThat(options).hasSize(2);
+ assertThat(options.get(0).name()).isEqualTo("Custom");
+ assertThat(options.get(1).name()).isEqualTo("Rule by pkg2");
+ verify(mNm).getRuleInstanceCount(eq(componentWithLimitThreeRules.getComponentName()));
+ }
+
+ @Test
+ public void onClickAddMode_appProviderWithoutConfigurationActivity_notAnOption() {
+ ComponentInfo componentWithoutConfigActivity = newComponentInfoWithValidMetadata("pkg2");
+ ImmutableSet<ComponentInfo> approvedComponents = ImmutableSet.of(
+ newComponentInfoWithValidMetadata("pkg1"), componentWithoutConfigActivity);
+ when(mZenServiceListing.loadApprovedComponents()).thenReturn(approvedComponents);
+ when(mConfigurationActivityHelper.getConfigurationActivityFromApprovedComponent(any()))
+ .thenAnswer((Answer<ComponentName>) invocationOnMock -> {
+ ComponentInfo ci = invocationOnMock.getArgument(0);
+ if (ci == componentWithoutConfigActivity) {
+ return null;
+ } else {
+ return ci.getComponentName();
+ }
+ });
+
+ mController.onClickAddMode();
+
+ verify(mListener).onAvailableModeTypesForAdd(mListenerCaptor.capture());
+ List<ModeType> options = mListenerCaptor.getValue();
+ assertThat(options).hasSize(2);
+ assertThat(options.get(0).name()).isEqualTo("Custom");
+ assertThat(options.get(1).name()).isEqualTo("Rule by pkg1");
+ }
+
+ private ComponentInfo newComponentInfoWithValidMetadata(String pkg) {
+ ComponentInfo ci = new ActivityInfo();
+
+ ci.applicationInfo = mock(ApplicationInfo.class);
+ when(ci.applicationInfo.loadLabel(any())).thenReturn("A package called " + pkg);
+ when(ci.applicationInfo.loadUnbadgedIcon(any())).thenReturn(new ColorDrawable());
+ ci.packageName = pkg;
+ ci.name = pkg + ".activity";
+ ci.metaData = new Bundle();
+ ci.metaData.putString(META_DATA_AUTOMATIC_RULE_TYPE, "Rule by " + pkg);
+
+ return ci;
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListFragmentTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListFragmentTest.java
new file mode 100644
index 0000000..661f8ba
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListFragmentTest.java
@@ -0,0 +1,149 @@
+/*
+ * 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.modes;
+
+import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
+
+import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
+import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
+import static com.android.settings.notification.modes.ZenModesListFragment.REQUEST_NEW_MODE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.testing.EmptyFragmentActivity;
+import androidx.test.ext.junit.rules.ActivityScenarioRule;
+
+import com.android.settings.notification.modes.ZenModesListAddModePreferenceController.ModeType;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
+
+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.shadows.ShadowActivity.IntentForResult;
+
+@RunWith(RobolectricTestRunner.class)
+public class ZenModesListFragmentTest {
+
+ private static final ModeType APP_PROVIDED_MODE_TYPE = new ModeType("Mode", new ColorDrawable(),
+ "Details", new Intent().setComponent(new ComponentName("pkg", "configActivity")));
+
+ private static final ImmutableList<ZenMode> EXISTING_MODES = ImmutableList.of(
+ new TestModeBuilder().setId("A").build(),
+ new TestModeBuilder().setId("B").build(),
+ new TestModeBuilder().setId("C").build());
+
+ @Rule
+ public ActivityScenarioRule<EmptyFragmentActivity> mActivityScenario =
+ new ActivityScenarioRule<>(EmptyFragmentActivity.class);
+
+ private FragmentActivity mActivity;
+ private ZenModesListFragment mFragment;
+ @Mock private ZenModesBackend mBackend;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mFragment = new ZenModesListFragment();
+ mActivityScenario.getScenario().onActivity(activity -> {
+ activity.getSupportFragmentManager().beginTransaction()
+ .add(mFragment, "tag").commitNow();
+ mActivity = activity;
+ });
+
+ mFragment.setBackend(mBackend); // after onAttach()
+ }
+
+ @Test
+ public void onChosenModeTypeForAdd_appProvidedMode_startsCreationActivity() {
+ when(mBackend.getModes()).thenReturn(EXISTING_MODES);
+
+ mFragment.onChosenModeTypeForAdd(APP_PROVIDED_MODE_TYPE);
+
+ IntentForResult intent = shadowOf(mActivity).getNextStartedActivityForResult();
+ assertThat(intent).isNotNull();
+ assertThat(intent.intent).isEqualTo(APP_PROVIDED_MODE_TYPE.creationActivityIntent());
+ }
+
+ @Test
+ public void onActivityResult_modeWasCreated_opensIt() {
+ when(mBackend.getModes()).thenReturn(EXISTING_MODES);
+ mFragment.onChosenModeTypeForAdd(APP_PROVIDED_MODE_TYPE);
+
+ // App creates the new mode.
+ ZenMode createdMode = new TestModeBuilder().setId("new_id").setPackage("pkg").build();
+ when(mBackend.getModes()).thenReturn(new ImmutableList.Builder<ZenMode>()
+ .addAll(EXISTING_MODES)
+ .add(createdMode)
+ .build());
+ mFragment.onActivityResult(REQUEST_NEW_MODE, 0, new Intent());
+
+ Intent openModePageIntent = shadowOf(mActivity).getNextStartedActivity();
+ assertThat(openModePageIntent.getStringExtra(EXTRA_SHOW_FRAGMENT))
+ .isEqualTo(ZenModeFragment.class.getName());
+ Bundle fragmentArgs = openModePageIntent.getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);
+ assertThat(fragmentArgs).isNotNull();
+ assertThat(fragmentArgs.getString(EXTRA_AUTOMATIC_ZEN_RULE_ID)).isEqualTo("new_id");
+ }
+
+ @Test
+ public void onActivityResult_secondTime_doesNothing() {
+ when(mBackend.getModes()).thenReturn(EXISTING_MODES);
+ mFragment.onChosenModeTypeForAdd(APP_PROVIDED_MODE_TYPE);
+ // App creates a new mode, we redirect to its page when coming back.
+ ZenMode createdMode = new TestModeBuilder().setId("new_id").setPackage("pkg").build();
+ when(mBackend.getModes()).thenReturn(new ImmutableList.Builder<ZenMode>()
+ .addAll(EXISTING_MODES)
+ .add(createdMode)
+ .build());
+ mFragment.onActivityResult(REQUEST_NEW_MODE, 0, new Intent());
+ shadowOf(mActivity).clearNextStartedActivities();
+
+ mFragment.onActivityResult(REQUEST_NEW_MODE, 0, new Intent());
+
+ Intent nextIntent = shadowOf(mActivity).getNextStartedActivity();
+ assertThat(nextIntent).isNull();
+ }
+
+ @Test
+ public void onActivityResult_modeWasNotCreated_doesNothing() {
+ when(mBackend.getModes()).thenReturn(EXISTING_MODES);
+ mFragment.onChosenModeTypeForAdd(APP_PROVIDED_MODE_TYPE);
+ shadowOf(mActivity).clearNextStartedActivities();
+
+ // Returning to settings without creating a new mode.
+ mFragment.onActivityResult(REQUEST_NEW_MODE, 0, new Intent());
+
+ Intent nextIntent = shadowOf(mActivity).getNextStartedActivity();
+ assertThat(nextIntent).isNull();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java
new file mode 100644
index 0000000..aaf7059
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java
@@ -0,0 +1,126 @@
+/*
+ * 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.modes;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.service.notification.ZenModeConfig;
+
+import com.android.settingslib.notification.modes.ZenMode;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowLooper;
+
+@RunWith(RobolectricTestRunner.class)
+public class ZenModesListItemPreferenceTest {
+
+ private Context mContext;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ }
+
+ @Test
+ public void constructor_setsMode() {
+ ZenModesListItemPreference preference = new ZenModesListItemPreference(mContext,
+ TestModeBuilder.EXAMPLE);
+
+ assertThat(preference.getKey()).isEqualTo(TestModeBuilder.EXAMPLE.getId());
+ assertThat(preference.getZenMode()).isEqualTo(TestModeBuilder.EXAMPLE);
+ }
+
+ @Test
+ public void setZenMode_modeEnabled() {
+ ZenMode mode = new TestModeBuilder()
+ .setName("Enabled mode")
+ .setTriggerDescription("When the thrush knocks")
+ .setEnabled(true)
+ .build();
+
+ ZenModesListItemPreference preference = new ZenModesListItemPreference(mContext, mode);
+ ShadowLooper.idleMainLooper(); // To load icon.
+
+ assertThat(preference.getTitle()).isEqualTo("Enabled mode");
+ assertThat(preference.getSummary()).isEqualTo("When the thrush knocks");
+ assertThat(preference.getIcon()).isNotNull();
+ }
+
+ @Test
+ public void setZenMode_modeActive() {
+ ZenMode mode = new TestModeBuilder()
+ .setName("Active mode")
+ .setTriggerDescription("When Birnam forest comes to Dunsinane")
+ .setEnabled(true)
+ .setActive(true)
+ .build();
+
+ ZenModesListItemPreference preference = new ZenModesListItemPreference(mContext, mode);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(preference.getTitle()).isEqualTo("Active mode");
+ assertThat(preference.getSummary()).isEqualTo("ON • When Birnam forest comes to Dunsinane");
+ assertThat(preference.getIcon()).isNotNull();
+ }
+
+ @Test
+ public void setZenMode_modeDisabledByApp() {
+ ZenModeConfig.ZenRule configRule = new ZenModeConfig.ZenRule();
+ configRule.enabled = false;
+ configRule.disabledOrigin = ZenModeConfig.UPDATE_ORIGIN_APP;
+ ZenMode mode = new TestModeBuilder()
+ .setName("Mode disabled by app")
+ .setTriggerDescription("When the cat's away")
+ .setEnabled(false)
+ .setConfigZenRule(configRule)
+ .build();
+
+ ZenModesListItemPreference preference = new ZenModesListItemPreference(mContext, mode);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(preference.getTitle()).isEqualTo("Mode disabled by app");
+ assertThat(preference.getSummary()).isEqualTo("Not set");
+ assertThat(preference.getIcon()).isNotNull();
+ }
+
+ @Test
+ public void setZenMode_modeDisabledByUser() {
+ ZenModeConfig.ZenRule configRule = new ZenModeConfig.ZenRule();
+ configRule.enabled = false;
+ configRule.disabledOrigin = ZenModeConfig.UPDATE_ORIGIN_USER;
+ ZenMode mode = new TestModeBuilder()
+ .setName("Mode disabled by user")
+ .setTriggerDescription("When the Levee Breaks")
+ .setEnabled(false)
+ .setConfigZenRule(configRule)
+ .build();
+
+ ZenModesListItemPreference preference = new ZenModesListItemPreference(mContext, mode);
+ ShadowLooper.idleMainLooper();
+
+ assertThat(preference.getTitle()).isEqualTo("Mode disabled by user");
+ assertThat(preference.getSummary()).isEqualTo("Disabled");
+ assertThat(preference.getIcon()).isNotNull();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListPreferenceControllerTest.java
index 9a4de60..c0f96be 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListPreferenceControllerTest.java
@@ -37,6 +37,8 @@
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
+import com.android.settingslib.notification.modes.ZenMode;
+import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.search.SearchIndexableRaw;
import com.google.common.collect.ImmutableList;
@@ -58,14 +60,15 @@
public class ZenModesListPreferenceControllerTest {
private static final String TEST_MODE_ID = "test_mode";
private static final String TEST_MODE_NAME = "Test Mode";
- private static final ZenMode TEST_MODE = new ZenMode(
- TEST_MODE_ID,
- new AutomaticZenRule.Builder(TEST_MODE_NAME, Uri.parse("test_uri"))
+
+ private static final ZenMode TEST_MODE = new TestModeBuilder()
+ .setId(TEST_MODE_ID)
+ .setAzr(new AutomaticZenRule.Builder(TEST_MODE_NAME, Uri.parse("test_uri"))
.setType(AutomaticZenRule.TYPE_BEDTIME)
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
.setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(),
- false);
+ .build())
+ .build();
private static final ZenMode TEST_MANUAL_MODE = ZenMode.manualDndMode(
new AutomaticZenRule.Builder("Do Not Disturb", Uri.EMPTY)
@@ -96,7 +99,7 @@
PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
preferenceScreen.addPreference(mPreference);
- mPrefController = new ZenModesListPreferenceController(mContext, null, mBackend);
+ mPrefController = new ZenModesListPreferenceController(mContext, mBackend);
}
@Test
@@ -110,14 +113,9 @@
assertThat(mPreference.getPreferenceCount()).isEqualTo(5);
List<ZenModesListItemPreference> itemPreferences = getModeListItems(mPreference);
- assertThat(itemPreferences.stream().map(pref -> pref.mZenMode).toList())
+ assertThat(itemPreferences.stream().map(ZenModesListItemPreference::getZenMode).toList())
.containsExactlyElementsIn(modes)
.inOrder();
-
- for (int i = 0; i < modes.size(); i++) {
- assertThat(((ZenModesListItemPreference) (mPreference.getPreference(i))).mZenMode)
- .isEqualTo(modes.get(i));
- }
}
@Test
@@ -138,7 +136,7 @@
mPrefController.updateState(mPreference);
List<ZenModesListItemPreference> newPreferences = getModeListItems(mPreference);
- assertThat(newPreferences.stream().map(pref -> pref.mZenMode).toList())
+ assertThat(newPreferences.stream().map(ZenModesListItemPreference::getZenMode).toList())
.containsExactlyElementsIn(updatedModes)
.inOrder();
@@ -194,7 +192,7 @@
assertThat(newData).hasSize(1);
SearchIndexableRaw newItem = newData.get(0);
- assertThat(newItem.key).isEqualTo(ZenMode.MANUAL_DND_MODE_ID);
+ assertThat(newItem.key).isEqualTo(TEST_MANUAL_MODE.getId());
assertThat(newItem.title).isEqualTo("Do Not Disturb"); // set above
}
@@ -209,7 +207,7 @@
// Should keep the order presented by getModes()
SearchIndexableRaw item0 = data.get(0);
- assertThat(item0.key).isEqualTo(ZenMode.MANUAL_DND_MODE_ID);
+ assertThat(item0.key).isEqualTo(TEST_MANUAL_MODE.getId());
assertThat(item0.title).isEqualTo("Do Not Disturb"); // set above
SearchIndexableRaw item1 = data.get(1);
@@ -218,13 +216,7 @@
}
private static ZenMode newMode(String id) {
- return new ZenMode(
- id,
- new AutomaticZenRule.Builder("Mode " + id, Uri.parse("test_uri"))
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder().allowAllSounds().build())
- .build(),
- false);
+ return new TestModeBuilder().setId(id).setName("Mode " + id).build();
}
/**
diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesSummaryHelperTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesSummaryHelperTest.java
index ef8290a..62b5ee0 100644
--- a/tests/robotests/src/com/android/settings/notification/modes/ZenModesSummaryHelperTest.java
+++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesSummaryHelperTest.java
@@ -16,7 +16,6 @@
package com.android.settings.notification.modes;
-import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_ANYONE;
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_ANYONE;
import static android.service.notification.ZenPolicy.PEOPLE_TYPE_CONTACTS;
@@ -25,12 +24,12 @@
import static com.google.common.truth.Truth.assertThat;
-import android.app.AutomaticZenRule;
import android.content.Context;
-import android.net.Uri;
import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenPolicy;
+import com.android.settingslib.notification.modes.ZenMode;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -40,11 +39,10 @@
import java.util.LinkedHashSet;
import java.util.Set;
-
@RunWith(RobolectricTestRunner.class)
public class ZenModesSummaryHelperTest {
private Context mContext;
- private ZenModesBackend mBackend;
+ private ZenHelperBackend mBackend;
private ZenModeSummaryHelper mSummaryHelper;
@@ -52,56 +50,44 @@
public void setup() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mBackend = new ZenModesBackend(mContext);
+ mBackend = new ZenHelperBackend(mContext);
mSummaryHelper = new ZenModeSummaryHelper(mContext, mBackend);
}
@Test
public void getPeopleSummary_noOne() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().disallowAllSounds().build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getPeopleSummary(zenMode)).isEqualTo("No one can interrupt");
}
@Test
public void getPeopleSummary_some() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().allowCalls(PEOPLE_TYPE_CONTACTS).build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getPeopleSummary(zenMode)).isEqualTo("Some people can interrupt");
}
@Test
public void getPeopleSummary_all() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().allowCalls(PEOPLE_TYPE_ANYONE).
allowConversations(CONVERSATION_SENDERS_ANYONE)
.allowMessages(PEOPLE_TYPE_ANYONE).build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getPeopleSummary(zenMode)).isEqualTo("All people can interrupt");
}
@Test
public void getOtherSoundCategoriesSummary_single() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getOtherSoundCategoriesSummary(zenMode)).isEqualTo(
"Alarms can interrupt");
@@ -109,12 +95,9 @@
@Test
public void getOtherSoundCategoriesSummary_duo() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().allowAlarms(true).allowMedia(true).build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getOtherSoundCategoriesSummary(zenMode)).isEqualTo(
"Alarms and media can interrupt");
@@ -122,16 +105,13 @@
@Test
public void getOtherSoundCategoriesSummary_trio() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowAlarms(true)
.allowMedia(true)
.allowSystem(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getOtherSoundCategoriesSummary(zenMode)).isEqualTo(
"Alarms, media, and touch sounds can interrupt");
@@ -139,9 +119,7 @@
@Test
public void getOtherSoundCategoriesSummary_quad() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowAlarms(true)
.allowMedia(true)
@@ -149,7 +127,6 @@
.allowReminders(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getOtherSoundCategoriesSummary(zenMode)).isEqualTo(
"Alarms, media, and 2 more can interrupt");
@@ -157,9 +134,7 @@
@Test
public void getOtherSoundCategoriesSummary_all() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowAlarms(true)
.allowMedia(true)
@@ -168,7 +143,6 @@
.allowEvents(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getOtherSoundCategoriesSummary(zenMode)).isEqualTo(
"Alarms, media, and 3 more can interrupt");
@@ -176,61 +150,52 @@
@Test
public void getBlockedEffectsSummary_none() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects()
.allowAlarms(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
+
assertThat(mSummaryHelper.getBlockedEffectsSummary(zenMode))
.isEqualTo("Notifications shown");
}
@Test
public void getBlockedEffectsSummary_some() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowAlarms(true)
.showAllVisualEffects()
.showVisualEffect(VISUAL_EFFECT_AMBIENT, false)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
+
assertThat(mSummaryHelper.getBlockedEffectsSummary(zenMode))
.isEqualTo("Notifications partially hidden");
}
@Test
public void getBlockedEffectsSummary_all() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowAlarms(true)
.hideAllVisualEffects()
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
+
assertThat(mSummaryHelper.getBlockedEffectsSummary(zenMode))
.isEqualTo("Notifications hidden");
}
@Test
public void getDisplayEffectsSummary_single_notifVis() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects()
.showVisualEffect(VISUAL_EFFECT_AMBIENT, false)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getDisplayEffectsSummary(zenMode)).isEqualTo(
"Notifications partially hidden");
@@ -238,15 +203,12 @@
@Test
public void getDisplayEffectsSummary_single_notifVis_unusedEffect() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects()
.showVisualEffect(VISUAL_EFFECT_LIGHTS, false)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getDisplayEffectsSummary(zenMode)).isEqualTo(
"Notifications shown");
@@ -254,15 +216,12 @@
@Test
public void getDisplayEffectsSummary_single_displayEffect() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().showAllVisualEffects().build())
.setDeviceEffects(new ZenDeviceEffects.Builder()
.setShouldDimWallpaper(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getDisplayEffectsSummary(zenMode)).isEqualTo(
"Dim the wallpaper");
@@ -270,16 +229,13 @@
@Test
public void getDisplayEffectsSummary_duo() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder().showAllVisualEffects().build())
.setDeviceEffects(new ZenDeviceEffects.Builder()
.setShouldDimWallpaper(true)
.setShouldDisplayGrayscale(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getDisplayEffectsSummary(zenMode)).isEqualTo(
"Grayscale and dim the wallpaper");
@@ -287,9 +243,7 @@
@Test
public void getDisplayEffectsSummary_trio() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.hideAllVisualEffects()
.allowAlarms(true)
@@ -301,7 +255,6 @@
.setShouldDimWallpaper(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getDisplayEffectsSummary(zenMode)).isEqualTo(
"Notifications hidden, grayscale, and dim the wallpaper");
@@ -309,9 +262,7 @@
@Test
public void getDisplayEffectsSummary_quad() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.showAllVisualEffects()
.showVisualEffect(VISUAL_EFFECT_AMBIENT, false)
@@ -325,50 +276,29 @@
.setShouldUseNightMode(true)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getDisplayEffectsSummary(zenMode)).isEqualTo(
"Notifications partially hidden, grayscale, and 2 more");
}
@Test
- public void getAppsSummary_all() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
- .setZenPolicy(new ZenPolicy.Builder()
- .allowChannels(ZenMode.CHANNEL_POLICY_ALL)
- .build())
- .build();
- ZenMode zenMode = new ZenMode("id", rule, true);
-
- assertThat(mSummaryHelper.getAppsSummary(zenMode, new LinkedHashSet<>())).isEqualTo("All");
- }
-
- @Test
public void getAppsSummary_none() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowChannels(ZenPolicy.CHANNEL_POLICY_NONE)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getAppsSummary(zenMode, new LinkedHashSet<>())).isEqualTo("None");
}
@Test
public void getAppsSummary_priorityAppsNoList() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
assertThat(mSummaryHelper.getAppsSummary(zenMode, null)).isEqualTo("Selected apps");
}
@@ -410,19 +340,15 @@
@Test
public void getAppsSummary_priorityApps() {
- AutomaticZenRule rule = new AutomaticZenRule.Builder("Bedtime", Uri.parse("bed"))
- .setType(AutomaticZenRule.TYPE_BEDTIME)
- .setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
+ ZenMode zenMode = new TestModeBuilder()
.setZenPolicy(new ZenPolicy.Builder()
.allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY)
.build())
.build();
- ZenMode zenMode = new ZenMode("id", rule, true);
Set<String> apps = Set.of("My App", "SecondApp", "ThirdApp", "FourthApp",
"FifthApp", "SixthApp");
assertThat(mSummaryHelper.getAppsSummary(zenMode, apps)).isEqualTo("FifthApp, FourthApp, "
+ "and 4 more can interrupt");
}
-
}
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index 8a7419b..599649b 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -124,8 +124,8 @@
}
@Test(expected = IllegalArgumentException.class)
- public void verifyLaunchSearchResultPageCaller_nullCaller_shouldCrash() {
- mProvider.verifyLaunchSearchResultPageCaller(mActivity, null /* caller */);
+ public void verifyLaunchSearchResultPageCaller_emptyCaller_shouldCrash() {
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, "");
}
@Test(expected = SecurityException.class)
diff --git a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentsPreferenceControllerTest.java
index 8339798..766855c 100644
--- a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentsPreferenceControllerTest.java
@@ -21,14 +21,10 @@
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
+import android.content.IntentFilter;
+import android.content.pm.PackageInfo;
import android.service.trust.TrustAgentService;
-import android.text.TextUtils;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -38,34 +34,30 @@
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedSwitchPreference;
-import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowApplicationPackageManager;
-import java.util.ArrayList;
-import java.util.List;
-
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
ShadowLockPatternUtils.class,
ShadowRestrictedLockUtilsInternal.class,
- ShadowDevicePolicyManager.class,
- ShadowApplicationPackageManager.class,
- TrustAgentsPreferenceControllerTest.ShadowTrustAgentManager.class
+ ShadowDevicePolicyManager.class, ShadowApplicationPackageManager.class
})
public class TrustAgentsPreferenceControllerTest {
-
- private static final Intent TEST_INTENT =
- new Intent(TrustAgentService.SERVICE_INTERFACE);
+ private static final ComponentName TRUST_AGENT_A = new ComponentName(
+ "test.data.packageA", "clzAAA");
+ private static final ComponentName TRUST_AGENT_B = new ComponentName(
+ "test.data.packageB", "clzBBB");
+ private static final ComponentName TRUST_AGENT_C = new ComponentName(
+ "test.data.packageC", "clzCCC");
+ private static final ComponentName TRUST_AGENT_D = new ComponentName(
+ "test.data.packageD", "clzDDD");
private Context mContext;
private ShadowApplicationPackageManager mPackageManager;
@@ -84,11 +76,6 @@
mPreferenceScreen.setKey("pref_key");
}
- @After
- public void tearDown() {
- ShadowTrustAgentManager.clearPermissionGrantedList();
- }
-
@Test
public void getAvailabilityStatus_byDefault_shouldBeShown() {
assertThat(mController.getAvailabilityStatus())
@@ -97,8 +84,7 @@
@Test
public void onStart_noTrustAgent_shouldNotAddPreference() {
- final List<ResolveInfo> availableAgents = createFakeAvailableAgents();
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
+ installFakeAvailableAgents(/* grantPermission= */ false);
mController.displayPreference(mPreferenceScreen);
mController.onStart();
@@ -106,57 +92,34 @@
assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(0);
}
- @Ignore("b/313612480")
@Test
- public void
- onStart_hasAUninstalledTrustAgent_shouldRemoveOnePreferenceAndLeaveTwoPreferences() {
- final List<ResolveInfo> availableAgents = createFakeAvailableAgents();
- final ResolveInfo uninstalledTrustAgent = availableAgents.get(0);
-
- for (ResolveInfo rInfo : availableAgents) {
- ShadowTrustAgentManager.grantPermissionToResolveInfo(rInfo);
- }
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
+ public void onStart_uninstalledTrustAgent_shouldRemoveOnePreferenceAndLeaveTwoPreferences() {
+ installFakeAvailableAgents(/* grantPermission= */ true);
mController.displayPreference(mPreferenceScreen);
mController.onStart();
- availableAgents.remove(uninstalledTrustAgent);
+ uninstallAgent(TRUST_AGENT_A);
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
mController.onStart();
assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(2);
}
- @Ignore("b/313612480")
@Test
public void onStart_hasANewTrustAgent_shouldAddOnePreferenceAndHaveFourPreferences() {
- final List<ResolveInfo> availableAgents = createFakeAvailableAgents();
- final ComponentName newComponentName = new ComponentName("test.data.packageD", "clzDDD");
- final ResolveInfo newTrustAgent = createFakeResolveInfo(newComponentName);
- for (ResolveInfo rInfo : availableAgents) {
- ShadowTrustAgentManager.grantPermissionToResolveInfo(rInfo);
- }
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
+ installFakeAvailableAgents(/* grantPermission= */ true);
mController.displayPreference(mPreferenceScreen);
mController.onStart();
- availableAgents.add(newTrustAgent);
- ShadowTrustAgentManager.grantPermissionToResolveInfo(newTrustAgent);
+ installFakeAvailableAgent(TRUST_AGENT_D, /* grantPermission= */ true);
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
mController.onStart();
assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(4);
}
- @Ignore("b/313612480")
@Test
public void onStart_hasUnrestrictedTrustAgent_shouldAddThreeChangeablePreferences() {
ShadowRestrictedLockUtilsInternal.setKeyguardDisabledFeatures(0);
- final List<ResolveInfo> availableAgents = createFakeAvailableAgents();
- for (ResolveInfo rInfo : availableAgents) {
- ShadowTrustAgentManager.grantPermissionToResolveInfo(rInfo);
- }
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
+ installFakeAvailableAgents(/* grantPermission= */ true);
mController.displayPreference(mPreferenceScreen);
mController.onStart();
@@ -169,14 +132,9 @@
}
}
- @Ignore("b/313612480")
@Test
- public void onStart_hasRestrictedTructAgent_shouldAddThreeUnchangeablePreferences() {
- final List<ResolveInfo> availableAgents = createFakeAvailableAgents();
- for (ResolveInfo rInfo : availableAgents) {
- ShadowTrustAgentManager.grantPermissionToResolveInfo(rInfo);
- }
- mPackageManager.setResolveInfosForIntent(TEST_INTENT, availableAgents);
+ public void onStart_hasRestrictedTrustAgent_shouldAddThreeUnchangeablePreferences() {
+ installFakeAvailableAgents(/* grantPermission= */ true);
ShadowRestrictedLockUtilsInternal.setKeyguardDisabledFeatures(
DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS);
@@ -191,51 +149,30 @@
}
}
- private List<ResolveInfo> createFakeAvailableAgents() {
- final List<ComponentName> componentNames = new ArrayList<>();
- componentNames.add(new ComponentName("test.data.packageA", "clzAAA"));
- componentNames.add(new ComponentName("test.data.packageB", "clzBBB"));
- componentNames.add(new ComponentName("test.data.packageC", "clzCCC"));
- final List<ResolveInfo> result = new ArrayList<>();
- for (ComponentName cn : componentNames) {
- final ResolveInfo ri = createFakeResolveInfo(cn);
- result.add(ri);
- }
- return result;
+ private void installFakeAvailableAgents(boolean grantPermission) {
+ installFakeAvailableAgent(TRUST_AGENT_A, grantPermission);
+ installFakeAvailableAgent(TRUST_AGENT_B, grantPermission);
+ installFakeAvailableAgent(TRUST_AGENT_C, grantPermission);
}
- private ResolveInfo createFakeResolveInfo(ComponentName cn) {
- final ResolveInfo ri = new ResolveInfo();
- ri.serviceInfo = new ServiceInfo();
- ri.serviceInfo.packageName = cn.getPackageName();
- ri.serviceInfo.name = cn.getClassName();
- ri.serviceInfo.applicationInfo = new ApplicationInfo();
- ri.serviceInfo.applicationInfo.packageName = cn.getPackageName();
- ri.serviceInfo.applicationInfo.name = cn.getClassName();
- return ri;
+ private void installFakeAvailableAgent(ComponentName name,
+ boolean grantPermission) {
+ mPackageManager.addServiceIfNotPresent(name);
+ mPackageManager.addIntentFilterForService(name,
+ new IntentFilter(TrustAgentService.SERVICE_INTERFACE));
+ if (!grantPermission) {
+ return;
+ }
+ PackageInfo pkgInfo = mPackageManager.getInternalMutablePackageInfo(
+ name.getPackageName());
+ pkgInfo.requestedPermissions =
+ new String[]{android.Manifest.permission.PROVIDE_TRUST_AGENT};
+ pkgInfo.requestedPermissionsFlags =
+ new int[]{PackageInfo.REQUESTED_PERMISSION_GRANTED};
}
- @Implements(TrustAgentManager.class)
- public static class ShadowTrustAgentManager {
- private final static List<ResolveInfo> sPermissionGrantedList = new ArrayList<>();
-
- @Implementation
- protected boolean shouldProvideTrust(ResolveInfo resolveInfo, PackageManager pm) {
- for (ResolveInfo info : sPermissionGrantedList) {
- if (info.serviceInfo.equals(resolveInfo.serviceInfo)) {
- return true;
- }
- }
-
- return false;
- }
-
- private static void grantPermissionToResolveInfo(ResolveInfo rInfo) {
- sPermissionGrantedList.add(rInfo);
- }
-
- private static void clearPermissionGrantedList() {
- sPermissionGrantedList.clear();
- }
+ private void uninstallAgent(ComponentName name) {
+ mPackageManager.removeService(name);
+ mPackageManager.removePackage(name.getPackageName());
}
}
diff --git a/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java
index 7bc66c8..fe88148 100644
--- a/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java
@@ -39,7 +39,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;
@@ -126,7 +125,6 @@
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
}
- @Ignore("b/313530297")
@Test
public void getAvailabilityStatus_isCurrentlyMainUser_returnDisabledForUser() {
when(mUserManager.getMainUser()).thenReturn(UserHandle.CURRENT);
@@ -136,7 +134,6 @@
BasePreferenceController.DISABLED_FOR_USER);
}
- @Ignore("b/313530297")
@Test
public void getAvailabilityStatus_featureAndMultiUserEnabledAndNonMainUser_returnAvailable() {
when(mUserManager.isUserForeground()).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
index 7f27324..e035274 100644
--- a/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
@@ -22,7 +22,7 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
@@ -42,9 +42,13 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.UserInfo;
+import android.multiuser.Flags;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.telephony.TelephonyManager;
import androidx.fragment.app.FragmentActivity;
@@ -63,7 +67,7 @@
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;
import org.mockito.Mock;
@@ -124,6 +128,8 @@
private Bundle mArguments;
private UserInfo mUserInfo;
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
@@ -222,8 +228,8 @@
}
@Test
- @Ignore("b/313530297")
public void onResume_canSwitch_shouldEnableSwitchPref() {
+ setupSelectedUser();
mUserManager.setSwitchabilityStatus(SWITCHABILITY_STATUS_OK);
mFragment.mSwitchUserPref = mSwitchUserPref;
mFragment.onAttach(mContext);
@@ -234,8 +240,8 @@
}
@Test
- @Ignore("b/313530297")
public void onResume_userInCall_shouldDisableSwitchPref() {
+ setupSelectedUser();
mUserManager.setSwitchabilityStatus(SWITCHABILITY_STATUS_USER_IN_CALL);
mFragment.mSwitchUserPref = mSwitchUserPref;
mFragment.onAttach(mContext);
@@ -246,8 +252,21 @@
}
@Test
- @Ignore("b/313530297")
+ @RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
+ public void onResume_UserSwitcherDisabled_shouldDisableSwitchPref() {
+ setupSelectedUser();
+ mUserCapabilities.mUserSwitcherEnabled = false;
+ mFragment.mSwitchUserPref = mSwitchUserPref;
+ mFragment.onAttach(mContext);
+
+ mFragment.onResume();
+
+ verify(mSwitchUserPref).setEnabled(false);
+ }
+
+ @Test
public void onResume_switchDisallowed_shouldDisableSwitchPref() {
+ setupSelectedUser();
mUserManager.setSwitchabilityStatus(SWITCHABILITY_STATUS_USER_SWITCH_DISALLOWED);
mFragment.mSwitchUserPref = mSwitchUserPref;
mFragment.onAttach(mContext);
@@ -258,8 +277,8 @@
}
@Test
- @Ignore("b/313530297")
public void onResume_systemUserLocked_shouldDisableSwitchPref() {
+ setupSelectedUser();
mUserManager.setSwitchabilityStatus(UserManager.SWITCHABILITY_STATUS_SYSTEM_USER_LOCKED);
mFragment.mSwitchUserPref = mSwitchUserPref;
mFragment.onAttach(mContext);
@@ -269,7 +288,6 @@
verify(mSwitchUserPref).setEnabled(false);
}
- @Ignore("b/313530297")
@Test
public void initialize_adminWithTelephony_shouldShowPhonePreference() {
setupSelectedUser();
@@ -315,7 +333,6 @@
verify(mFragment).removePreference(KEY_APP_AND_CONTENT_ACCESS);
}
- @Ignore("b/313530297")
@Test
public void initialize_adminSelectsSecondaryUser_shouldShowRemovePreference() {
setupSelectedUser();
@@ -328,7 +345,6 @@
verify(mFragment, never()).removePreference(KEY_REMOVE_USER);
}
- @Ignore("b/313530297")
@Test
public void initialize_adminSelectsNewRestrictedUser_shouldOpenAppContentScreen() {
setupSelectedRestrictedUser();
@@ -351,7 +367,6 @@
.isEqualTo(true);
}
- @Ignore("b/313530297")
@Test
public void initialize_adminSelectsRestrictedUser_shouldSetupPreferences() {
setupSelectedRestrictedUser();
@@ -381,7 +396,6 @@
verify(mActivity, never()).startActivity(any(Intent.class));
}
- @Ignore("b/313530297")
@Test
public void initialize_adminSelectsGuest_shouldShowRemovePreference() {
setupSelectedGuest();
@@ -425,7 +439,6 @@
verify(mFragment).removePreference(KEY_REMOVE_USER);
}
- @Ignore("b/313530297")
@Test
public void initialize_userHasCallRestriction_shouldSetPhoneSwitchUnChecked() {
setupSelectedUser();
@@ -438,7 +451,6 @@
verify(mPhonePref).setChecked(false);
}
- @Ignore("b/313530297")
@Test
public void initialize_noCallRestriction_shouldSetPhoneSwitchChecked() {
setupSelectedUser();
@@ -537,7 +549,6 @@
verify(mFragment, never()).switchUser();
}
- @Ignore("b/313530297")
@Test
public void onPreferenceClick_removeGuestClicked_canDelete_shouldShowDialog() {
setupSelectedGuest();
@@ -555,7 +566,6 @@
verify(mFragment).showDialog(DIALOG_CONFIRM_RESET_GUEST);
}
- @Ignore("b/313530297")
@Test
public void onPreferenceClick_removeRestrictedClicked_canDelete_shouldShowDialog() {
setupSelectedRestrictedUser();
@@ -574,7 +584,6 @@
verify(mFragment).showDialog(DIALOG_CONFIRM_REMOVE);
}
- @Ignore("b/313530297")
@Test
public void onPreferenceClick_removeClicked_canDelete_shouldShowDialog() {
setupSelectedUser();
@@ -666,7 +675,6 @@
assertThat(result).isFalse();
}
- @Ignore("b/313530297")
@Test
public void canDeleteUser_adminSelectsUser_noRestrictions_shouldReturnTrue() {
setupSelectedUser();
@@ -700,17 +708,16 @@
assertThat(result).isFalse();
}
- @Ignore("b/313530297")
@Test
public void initialize_userSelected_shouldShowGrantAdminPref_MultipleAdminEnabled() {
+ assumeTrue(UserManager.isHeadlessSystemUserMode());
setupSelectedUser();
+ mUserManager.setIsAdminUser(true);
ShadowUserManager.setIsMultipleAdminEnabled(true);
mFragment.initialize(mActivity, mArguments);
- assertTrue(UserManager.isMultipleAdminEnabled());
verify(mFragment, never()).removePreference(KEY_GRANT_ADMIN);
}
- @Ignore("b/313530297")
@Test
public void initialize_userSelected_shouldNotShowGrantAdminPref() {
setupSelectedUser();
@@ -718,7 +725,6 @@
verify(mFragment).removePreference(KEY_GRANT_ADMIN);
}
- @Ignore("b/313530297")
@Test
public void initialize_restrictUserSelected_shouldNotShowGrantAdminPref_MultipleAdminEnabled() {
setupSelectedUser();
@@ -729,7 +735,6 @@
verify(mFragment).removePreference(KEY_GRANT_ADMIN);
}
- @Ignore("b/313530297")
@Test
public void initialize_mainUserSelected_shouldShowGrantAdminPref_MultipleAdminEnabled() {
setupSelectedMainUser();
@@ -738,7 +743,6 @@
verify(mFragment).removePreference(KEY_GRANT_ADMIN);
}
- @Ignore("b/313530297")
@Test
public void initialize_guestSelected_shouldNotShowGrantAdminPref_MultipleAdminEnabled() {
setupSelectedGuest();
@@ -778,7 +782,7 @@
mUserInfo = new UserInfo(1, "Tom", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED,
UserManager.USER_TYPE_FULL_SECONDARY);
-
+ mFragment.mUserInfo = mUserInfo;
mUserManager.addProfile(mUserInfo);
}
@@ -787,7 +791,7 @@
mUserInfo = new UserInfo(11, "Jerry", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_MAIN,
UserManager.USER_TYPE_FULL_SECONDARY);
-
+ mFragment.mUserInfo = mUserInfo;
mUserManager.addProfile(mUserInfo);
}
@@ -796,7 +800,7 @@
mUserInfo = new UserInfo(12, "Andy", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_ADMIN,
UserManager.USER_TYPE_FULL_SECONDARY);
-
+ mFragment.mUserInfo = mUserInfo;
mUserManager.addProfile(mUserInfo);
}
@@ -805,7 +809,7 @@
mUserInfo = new UserInfo(23, "Guest", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_GUEST,
UserManager.USER_TYPE_FULL_GUEST);
-
+ mFragment.mUserInfo = mUserInfo;
mUserManager.addProfile(mUserInfo);
}
@@ -814,7 +818,7 @@
mUserInfo = new UserInfo(21, "Bob", null,
UserInfo.FLAG_FULL | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_RESTRICTED,
UserManager.USER_TYPE_FULL_RESTRICTED);
-
+ mFragment.mUserInfo = mUserInfo;
mUserManager.addProfile(mUserInfo);
}
}
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index 5826ca2..85db0bd 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -34,6 +34,7 @@
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 static org.robolectric.Shadows.shadowOf;
import android.app.settings.SettingsEnums;
@@ -46,10 +47,15 @@
import android.content.pm.UserInfo;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
+import android.multiuser.Flags;
import android.os.Bundle;
import android.os.Looper;
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.provider.Settings;
import android.text.SpannableStringBuilder;
import android.view.Menu;
@@ -75,6 +81,7 @@
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;
import org.mockito.AdditionalMatchers;
@@ -142,6 +149,9 @@
private UserSettings mFragment;
private UserCapabilities mUserCapabilities;
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
@@ -359,6 +369,7 @@
}
@Test
+ @RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_cannotSwitchUser_shouldDisableAddUser() {
mUserCapabilities.mCanAddUser = true;
doReturn(true).when(mUserManager).canAddMoreUsers(anyString());
@@ -375,6 +386,20 @@
}
@Test
+ @RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
+ public void updateUserList_disallowAddUser_shouldDisableAddUserAndAddGuest() {
+ mUserCapabilities.mDisallowAddUserSetByAdmin = true;
+ doReturn(true).when(mUserManager).canAddMoreUsers(anyString());
+ doReturn(SWITCHABILITY_STATUS_OK)
+ .when(mUserManager).getUserSwitchability();
+
+ mFragment.updateUserList();
+
+ verify(mAddUserPreference).setVisible(true);
+ verify(mAddUserPreference).setDisabledByAdmin(any());
+ }
+
+ @Test
public void updateUserList_canNotAddMoreUsers_shouldDisableAddUserWithSummary() {
mUserCapabilities.mCanAddUser = true;
doReturn(false).when(mUserManager).canAddMoreUsers(anyString());
@@ -392,6 +417,7 @@
}
@Test
+ @RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_cannotSwitchUser_shouldDisableAddGuest() {
mUserCapabilities.mCanAddGuest = true;
doReturn(true)
@@ -406,6 +432,54 @@
}
@Test
+ @RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
+ public void updateUserList_cannotSwitchUser_shouldKeepPreferencesVisibleAndEnabled() {
+ givenUsers(getAdminUser(true));
+ mUserCapabilities.mCanAddGuest = true;
+ mUserCapabilities.mCanAddUser = true;
+ mUserCapabilities.mDisallowSwitchUser = true;
+ doReturn(true)
+ .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST));
+ doReturn(true)
+ .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_SECONDARY));
+
+ mFragment.updateUserList();
+
+ verify(mAddGuestPreference).setVisible(true);
+ verify(mAddGuestPreference).setEnabled(true);
+ verify(mAddUserPreference).setVisible(true);
+ verify(mAddUserPreference).setEnabled(true);
+ }
+
+ @Test
+ @RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
+ public void updateUserList_disallowAddUser_shouldShowButDisableAddActions() {
+ givenUsers(getAdminUser(true));
+ mUserCapabilities.mCanAddGuest = true;
+ mUserCapabilities.mCanAddUser = false;
+ mUserCapabilities.mDisallowAddUser = true;
+ mUserCapabilities.mDisallowAddUserSetByAdmin = false;
+ List<UserManager.EnforcingUser> enforcingUsers = new ArrayList<>();
+ enforcingUsers.add(new UserManager.EnforcingUser(UserHandle.myUserId(),
+ UserManager.RESTRICTION_SOURCE_SYSTEM));
+ when(mUserManager.getUserRestrictionSources(UserManager.DISALLOW_ADD_USER,
+ UserHandle.of(UserHandle.myUserId()))).thenReturn(enforcingUsers);
+
+ doReturn(true)
+ .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST));
+ doReturn(true)
+ .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_SECONDARY));
+
+ mFragment.updateUserList();
+
+ verify(mAddGuestPreference).setVisible(true);
+ verify(mAddGuestPreference).setEnabled(false);
+ verify(mAddUserPreference).setVisible(true);
+ verify(mAddUserPreference).setEnabled(false);
+ }
+
+ @Test
+ @RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_addUserDisallowedByAdmin_shouldNotShowAddUser() {
RestrictedLockUtils.EnforcedAdmin enforcedAdmin = mock(
RestrictedLockUtils.EnforcedAdmin.class);
@@ -421,6 +495,22 @@
}
@Test
+ @RequiresFlagsEnabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
+ public void updateUserList_addUserDisallowedByAdmin_shouldShowPrefDisabledByAdmin() {
+ RestrictedLockUtils.EnforcedAdmin enforcedAdmin = mock(
+ RestrictedLockUtils.EnforcedAdmin.class);
+
+ mUserCapabilities.mEnforcedAdmin = enforcedAdmin;
+ mUserCapabilities.mCanAddUser = false;
+ mUserCapabilities.mDisallowAddUser = true;
+ mUserCapabilities.mDisallowAddUserSetByAdmin = true;
+ doReturn(true).when(mAddUserPreference).isEnabled();
+
+ mFragment.updateUserList();
+
+ verify(mAddUserPreference).setDisabledByAdmin(enforcedAdmin);
+ }
+ @Test
public void updateUserList_cannotAddUserButCanSwitchUser_shouldNotShowAddUser() {
mUserCapabilities.mCanAddUser = false;
@@ -461,18 +551,31 @@
}
@Test
- public void updateUserList_userSwitcherDisabled_shouldNotShowAddUser() {
+ public void updateUserList_userSwitcherDisabled_shouldShowAddUser() {
givenUsers(getAdminUser(true));
mUserCapabilities.mCanAddUser = true;
mUserCapabilities.mUserSwitcherEnabled = false;
mFragment.updateUserList();
- verify(mAddUserPreference).setVisible(false);
+ verify(mAddUserPreference).setVisible(true);
}
@Test
- public void updateUserList_userSwitcherDisabled_shouldNotShowAddGuest() {
+ public void updateUserList_userSwitcherDisabled_shouldShowAddGuest() {
+ givenUsers(getAdminUser(true));
+ mUserCapabilities.mCanAddGuest = true;
+ mUserCapabilities.mUserSwitcherEnabled = false;
+ doReturn(true)
+ .when(mUserManager).canAddMoreUsers(eq(UserManager.USER_TYPE_FULL_GUEST));
+
+ mFragment.updateUserList();
+
+ verify(mAddGuestPreference).setVisible(true);
+ }
+
+ @Test
+ public void updateUserList_userSwitcherDisabledCannotAddMoreGuests_shouldNotShowAddGuest() {
givenUsers(getAdminUser(true));
mUserCapabilities.mCanAddGuest = true;
mUserCapabilities.mUserSwitcherEnabled = false;
@@ -533,18 +636,18 @@
}
@Test
- public void updateUserList_existingSecondaryUser_shouldAddOnlyCurrUser_MultiUserIsDisabled() {
+ public void updateUserList_existingSecondaryUser_shouldAddAllUsers_MultiUserIsDisabled() {
givenUsers(getAdminUser(true), getSecondaryUser(false));
mUserCapabilities.mUserSwitcherEnabled = false;
mFragment.updateUserList();
ArgumentCaptor<UserPreference> captor = ArgumentCaptor.forClass(UserPreference.class);
- verify(mFragment.mUserListCategory, times(1))
+ verify(mFragment.mUserListCategory, times(2))
.addPreference(captor.capture());
List<UserPreference> userPrefs = captor.getAllValues();
- assertThat(userPrefs.size()).isEqualTo(1);
+ assertThat(userPrefs.size()).isEqualTo(2);
assertThat(userPrefs.get(0)).isSameInstanceAs(mMePreference);
}
@@ -631,6 +734,7 @@
}
@Test
+ @RequiresFlagsDisabled({Flags.FLAG_NEW_MULTIUSER_SETTINGS_UX})
public void updateUserList_uninitializedUserAndCanNotSwitchUser_shouldDisablePref() {
UserInfo uninitializedUser = getSecondaryUser(false);
removeFlag(uninitializedUser, UserInfo.FLAG_INITIALIZED);
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 4497a0a..4440bc9 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -48,6 +48,8 @@
import android.telephony.ims.ImsMmTelManager;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -56,10 +58,14 @@
import com.android.settings.SettingsActivity;
import com.android.settings.network.ims.MockWifiCallingQueryImsState;
import com.android.settings.network.ims.WifiCallingQueryImsState;
+import com.android.settings.network.telephony.wificalling.IWifiCallingRepository;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.widget.SettingsMainSwitchBar;
import com.android.settings.widget.SettingsMainSwitchPreference;
+import kotlin.Unit;
+import kotlin.jvm.functions.Function1;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -183,36 +189,25 @@
}
@Test
- public void onResume_provisioningAllowed_shouldNotFinish() {
- // Call onResume while provisioning is allowed.
- mFragment.onResume();
+ public void onViewCreated_provisioningAllowed_shouldNotFinish() {
+ // Call onViewCreated while provisioning is allowed.
+ mFragment.onViewCreated(mView, null);
// Verify that finish() is not called.
verify(mFragment, never()).finish();
}
@Test
- public void onResume_provisioningDisallowed_shouldFinish() {
- // Call onResume while provisioning is disallowed.
- mQueryImsState.setIsProvisionedOnDevice(false);
- mFragment.onResume();
+ public void onViewCreated_provisioningDisallowed_shouldFinish() {
+ // Call onViewCreated while provisioning is disallowed.
+ mFragment.mIsWifiCallingReady = false;
+ mFragment.onViewCreated(mView, null);
// Verify that finish() is called
verify(mFragment).finish();
}
@Test
- public void onResumeOnPause_provisioningCallbackRegistration() throws Exception {
- // Verify that provisioning callback is registered after call to onResume().
- mFragment.onResume();
- verify(mFragment).registerProvisioningChangedCallback();
-
- // Verify that provisioning callback is unregistered after call to onPause.
- mFragment.onPause();
- verify(mFragment).unregisterProvisioningChangedCallback();
- }
-
- @Test
public void onResume_useWfcHomeModeConfigFalseAndEditable_shouldShowWfcRoaming() {
// Call onResume to update the WFC roaming preference.
mFragment.onResume();
@@ -377,6 +372,7 @@
protected class TestFragment extends WifiCallingSettingsForSub {
private SettingsMainSwitchPreference mSwitchPref;
+ protected boolean mIsWifiCallingReady = true;
protected void setSwitchBar(SettingsMainSwitchPreference switchPref) {
mSwitchPref = switchPref;
@@ -422,6 +418,25 @@
}
@Override
+ @NonNull
+ IWifiCallingRepository getWifiCallingRepository() {
+ return new IWifiCallingRepository() {
+ @Override
+ public void collectIsWifiCallingReadyFlow(
+ @NonNull LifecycleOwner lifecycleOwner,
+ @NonNull Function1<? super Boolean, Unit> action) {
+ action.invoke(mIsWifiCallingReady);
+ }
+ };
+ }
+
+ @NonNull
+ @Override
+ LifecycleOwner getLifecycleOwner() {
+ return this;
+ }
+
+ @Override
void showAlert(Intent intent) {
}
}
diff --git a/tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowUserManager.java
index 417b102..02ed03c 100644
--- a/tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowUserManager.java
+++ b/tests/robotests/testutils/com/android/settings/testutils/shadow/ShadowUserManager.java
@@ -363,6 +363,10 @@
}
@Implementation
+ protected boolean isAdminUser() {
+ return getUserInfo(UserHandle.myUserId()).isAdmin();
+ }
+ @Implementation
protected boolean isGuestUser() {
return mIsGuestUser;
}
diff --git a/tests/spa_unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepositoryTest.kt
index 01f32bf..1c1d9df 100644
--- a/tests/spa_unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogRepositoryTest.kt
@@ -17,65 +17,65 @@
package com.android.settings.deviceinfo.simstatus
import android.content.Context
-import android.os.PersistableBundle
import android.telephony.CarrierConfigManager
import androidx.lifecycle.testing.TestLifecycleOwner
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.deviceinfo.simstatus.SimStatusDialogRepository.SimStatusDialogInfo
+import com.android.settings.network.telephony.CarrierConfigRepository
import com.android.settings.network.telephony.SimSlotRepository
import com.android.settings.network.telephony.ims.ImsMmTelRepository
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.kotlin.anyVararg
import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
-import org.mockito.kotlin.spy
@RunWith(AndroidJUnit4::class)
class SimStatusDialogRepositoryTest {
- private val carrierConfig = PersistableBundle().apply {
- putBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, true)
- }
+ private val context: Context = ApplicationProvider.getApplicationContext()
- private val mockCarrierConfigManager = mock<CarrierConfigManager> {
- on { getConfigForSubId(eq(SUB_ID), anyVararg()) } doReturn carrierConfig
- }
+ private val mockSimSlotRepository =
+ mock<SimSlotRepository> {
+ on { subIdInSimSlotFlow(SIM_SLOT_INDEX) } doReturn flowOf(SUB_ID)
+ }
- private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
- on { getSystemService(CarrierConfigManager::class.java) } doReturn mockCarrierConfigManager
- }
+ private val mockSignalStrengthRepository =
+ mock<SignalStrengthRepository> {
+ on { signalStrengthDisplayFlow(SUB_ID) } doReturn flowOf(SIGNAL_STRENGTH)
+ }
- private val mockSimSlotRepository = mock<SimSlotRepository> {
- on { subIdInSimSlotFlow(SIM_SLOT_INDEX) } doReturn flowOf(SUB_ID)
- }
+ private val mockImsMmTelRepository =
+ mock<ImsMmTelRepository> { on { imsRegisteredFlow() } doReturn flowOf(true) }
- private val mockSignalStrengthRepository = mock<SignalStrengthRepository> {
- on { signalStrengthDisplayFlow(SUB_ID) } doReturn flowOf(SIGNAL_STRENGTH)
- }
+ private val controller =
+ SimStatusDialogRepository(
+ context = context,
+ simSlotRepository = mockSimSlotRepository,
+ signalStrengthRepository = mockSignalStrengthRepository,
+ imsMmTelRepositoryFactory = { subId ->
+ assertThat(subId).isEqualTo(SUB_ID)
+ mockImsMmTelRepository
+ },
+ )
- private val mockImsMmTelRepository = mock<ImsMmTelRepository> {
- on { imsRegisteredFlow() } doReturn flowOf(true)
+ @Before
+ fun setUp() {
+ CarrierConfigRepository.resetForTest()
}
- private val controller = SimStatusDialogRepository(
- context = context,
- simSlotRepository = mockSimSlotRepository,
- signalStrengthRepository = mockSignalStrengthRepository,
- imsMmTelRepositoryFactory = { subId ->
- assertThat(subId).isEqualTo(SUB_ID)
- mockImsMmTelRepository
- },
- )
-
@Test
fun collectSimStatusDialogInfo() = runBlocking {
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL,
+ value = true,
+ )
var simStatusDialogInfo = SimStatusDialogInfo()
controller.collectSimStatusDialogInfo(TestLifecycleOwner(), SIM_SLOT_INDEX) {
@@ -83,19 +83,20 @@
}
delay(100)
- assertThat(simStatusDialogInfo).isEqualTo(
- SimStatusDialogInfo(
- signalStrength = SIGNAL_STRENGTH,
- imsRegistered = true,
- )
- )
+ assertThat(simStatusDialogInfo)
+ .isEqualTo(
+ SimStatusDialogInfo(
+ signalStrength = SIGNAL_STRENGTH,
+ imsRegistered = true,
+ ))
}
@Test
fun collectSimStatusDialogInfo_doNotShowSignalStrength() = runBlocking {
- carrierConfig.putBoolean(
- CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL,
- false
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL,
+ value = false,
)
var simStatusDialogInfo = SimStatusDialogInfo()
@@ -109,7 +110,11 @@
@Test
fun collectSimStatusDialogInfo_doNotShowImsRegistration() = runBlocking {
- carrierConfig.putBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL, false)
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL,
+ value = false,
+ )
var simStatusDialogInfo = SimStatusDialogInfo()
controller.collectSimStatusDialogInfo(TestLifecycleOwner(), SIM_SLOT_INDEX) {
diff --git a/tests/spa_unit/src/com/android/settings/network/MobileDataEnabledFlowTest.kt b/tests/spa_unit/src/com/android/settings/network/MobileDataEnabledFlowTest.kt
deleted file mode 100644
index c4611ac..0000000
--- a/tests/spa_unit/src/com/android/settings/network/MobileDataEnabledFlowTest.kt
+++ /dev/null
@@ -1,91 +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.network
-
-import android.content.Context
-import android.provider.Settings
-import android.telephony.SubscriptionManager
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
-import com.android.settingslib.spa.testutils.toListWithTimeout
-import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBoolean
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.async
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.runBlocking
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@RunWith(AndroidJUnit4::class)
-class MobileDataEnabledFlowTest {
- private val context: Context = ApplicationProvider.getApplicationContext()
-
- @Test
- fun mobileDataEnabledFlow_notified(): Unit = runBlocking {
- val flow = context.mobileDataEnabledFlow(SubscriptionManager.INVALID_SUBSCRIPTION_ID)
-
- assertThat(flow.firstWithTimeoutOrNull()).isNotNull()
- }
-
- @Test
- fun mobileDataEnabledFlow_changed_notified(): Unit = runBlocking {
- var mobileDataEnabled by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA)
- mobileDataEnabled = false
-
- val flow = context.mobileDataEnabledFlow(SubscriptionManager.INVALID_SUBSCRIPTION_ID)
- mobileDataEnabled = true
-
- assertThat(flow.firstWithTimeoutOrNull()).isNotNull()
- }
-
- @Test
- fun mobileDataEnabledFlow_forSubIdNotChanged(): Unit = runBlocking {
- var mobileDataEnabled by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA)
- mobileDataEnabled = false
- var mobileDataEnabledForSubId
- by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA + SUB_ID)
- mobileDataEnabledForSubId = false
-
- val listDeferred = async {
- context.mobileDataEnabledFlow(SUB_ID).toListWithTimeout()
- }
-
- assertThat(listDeferred.await()).hasSize(1)
- }
-
- @Test
- fun mobileDataEnabledFlow_forSubIdChanged(): Unit = runBlocking {
- var mobileDataEnabled by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA)
- mobileDataEnabled = false
- var mobileDataEnabledForSubId
- by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA + SUB_ID)
- mobileDataEnabledForSubId = false
-
- val listDeferred = async {
- context.mobileDataEnabledFlow(SUB_ID).toListWithTimeout()
- }
- delay(100)
- mobileDataEnabledForSubId = true
-
- assertThat(listDeferred.await().size).isAtLeast(2)
- }
-
- private companion object {
- const val SUB_ID = 123
- }
-}
diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditCarrierEnabledTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditCarrierEnabledTest.kt
new file mode 100644
index 0000000..bd97482
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditCarrierEnabledTest.kt
@@ -0,0 +1,109 @@
+/*
+ * 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.apn
+
+import android.content.Context
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.assertIsEnabled
+import androidx.compose.ui.test.assertIsNotEnabled
+import androidx.compose.ui.test.assertIsOff
+import androidx.compose.ui.test.assertIsOn
+import androidx.compose.ui.test.junit4.ComposeTestRule
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.performClick
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class ApnEditCarrierEnabledTest {
+
+ @get:Rule val composeTestRule = createComposeRule()
+
+ private val context: Context = spy(ApplicationProvider.getApplicationContext()) {}
+
+ private val resources = spy(context.resources) {}
+
+ @Before
+ fun setUp() {
+ context.stub { on { resources } doReturn resources }
+ }
+
+ @Test
+ fun carrierEnabled_displayed() {
+ composeTestRule.setContent { ApnEditCarrierEnabled(ApnData()) {} }
+
+ composeTestRule.onCarrierEnabled().assertIsDisplayed()
+ }
+
+ @Test
+ fun carrierEnabled_isChecked() {
+ val apnData = ApnData(carrierEnabled = true)
+
+ composeTestRule.setContent { ApnEditCarrierEnabled(apnData) {} }
+
+ composeTestRule.onCarrierEnabled().assertIsOn()
+ }
+
+ @Test
+ fun carrierEnabled_allowEdit_checkChanged() {
+ resources.stub { on { getBoolean(R.bool.config_allow_edit_carrier_enabled) } doReturn true }
+ var apnData by mutableStateOf(ApnData(carrierEnabled = true))
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ ApnEditCarrierEnabled(apnData) { apnData = apnData.copy(carrierEnabled = it) }
+ }
+ }
+
+ composeTestRule.onCarrierEnabled().performClick()
+
+ composeTestRule.onCarrierEnabled().assertIsEnabled().assertIsOff()
+ }
+
+ @Test
+ fun carrierEnabled_notAllowEdit_checkNotChanged() {
+ resources.stub {
+ on { getBoolean(R.bool.config_allow_edit_carrier_enabled) } doReturn false
+ }
+ var apnData by mutableStateOf(ApnData(carrierEnabled = true))
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ ApnEditCarrierEnabled(apnData) { apnData = apnData.copy(carrierEnabled = it) }
+ }
+ }
+
+ composeTestRule.onCarrierEnabled().performClick()
+
+ composeTestRule.onCarrierEnabled().assertIsNotEnabled().assertIsOn()
+ }
+
+ private fun ComposeTestRule.onCarrierEnabled() =
+ onNodeWithText(context.getString(R.string.carrier_enabled))
+}
diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
index 3621948..d310604 100644
--- a/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnEditPageProviderTest.kt
@@ -21,24 +21,17 @@
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.test.assertIsDisplayed
-import androidx.compose.ui.test.assertIsOff
-import androidx.compose.ui.test.assertIsOn
import androidx.compose.ui.test.hasText
-import androidx.compose.ui.test.isFocused
import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.compose.ui.test.onAllNodesWithText
import androidx.compose.ui.test.onChild
import androidx.compose.ui.test.onChildAt
-import androidx.compose.ui.test.onLast
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.onRoot
-import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performScrollToNode
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.R
import com.google.common.truth.Truth
-import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -55,7 +48,6 @@
private val port = "port"
private val apnType = context.resources.getString(R.string.apn_type)
private val apnRoaming = "IPv4"
- private val apnEnable = context.resources.getString(R.string.carrier_enabled)
private val apnProtocolOptions =
context.resources.getStringArray(R.array.apn_protocol_entries).toList()
private val passwordTitle = context.resources.getString(R.string.apn_password)
@@ -65,7 +57,6 @@
port = port,
apnType = apnType,
apnRoaming = apnProtocolOptions.indexOf(apnRoaming),
- apnEnable = true
)
private val apnData = mutableStateOf(
apnInit
@@ -133,39 +124,6 @@
composeTestRule.onNodeWithText(apnRoaming, true).assertIsDisplayed()
}
- @Ignore("b/342374681")
- @Test
- fun carrier_enabled_displayed() {
- composeTestRule.setContent {
- ApnPage(apnInit, remember { apnData }, uri)
- }
- composeTestRule.onRoot().onChild().onChildAt(0)
- .performScrollToNode(hasText(apnEnable, true))
- composeTestRule.onNodeWithText(apnEnable, true).assertIsDisplayed()
- }
-
- @Test
- fun carrier_enabled_isChecked() {
- composeTestRule.setContent {
- ApnPage(apnInit, remember { apnData }, uri)
- }
- composeTestRule.onRoot().onChild().onChildAt(0)
- .performScrollToNode(hasText(apnEnable, true))
- composeTestRule.onNodeWithText(apnEnable, true).assertIsOn()
- }
-
- @Ignore("b/342374681")
- @Test
- fun carrier_enabled_checkChanged() {
- composeTestRule.setContent {
- ApnPage(apnInit, remember { apnData }, uri)
- }
- composeTestRule.onRoot().onChild().onChildAt(0)
- .performScrollToNode(hasText(apnEnable, true))
- composeTestRule.onNodeWithText(apnEnable, true).performClick()
- composeTestRule.onNodeWithText(apnEnable, true).assertIsOff()
- }
-
@Test
fun password_displayed() {
composeTestRule.setContent {
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/CallStateRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/CallStateRepositoryTest.kt
index 55d520f..d192eb4 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/CallStateRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/CallStateRepositoryTest.kt
@@ -17,7 +17,6 @@
package com.android.settings.network.telephony
import android.content.Context
-import android.telephony.SubscriptionManager
import android.telephony.TelephonyCallback
import android.telephony.TelephonyManager
import androidx.test.core.app.ApplicationProvider
@@ -27,6 +26,7 @@
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
@@ -49,20 +49,15 @@
}
}
- private val mockSubscriptionManager = mock<SubscriptionManager> {
- on { activeSubscriptionIdList } doReturn intArrayOf(SUB_ID)
- on { addOnSubscriptionsChangedListener(any(), any()) } doAnswer {
- val listener = it.arguments[1] as SubscriptionManager.OnSubscriptionsChangedListener
- listener.onSubscriptionsChanged()
- }
+ private val mockSubscriptionRepository = mock<SubscriptionRepository> {
+ on { activeSubscriptionIdListFlow() } doReturn flowOf(listOf(SUB_ID))
}
private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
- on { subscriptionManager } doReturn mockSubscriptionManager
}
- private val repository = CallStateRepository(context)
+ private val repository = CallStateRepository(context, mockSubscriptionRepository)
@Test
fun callStateFlow_initial_sendInitialState() = runBlocking {
@@ -89,8 +84,8 @@
@Test
fun isInCallFlow_noActiveSubscription() = runBlocking {
- mockSubscriptionManager.stub {
- on { activeSubscriptionIdList } doReturn intArrayOf()
+ mockSubscriptionRepository.stub {
+ on { activeSubscriptionIdListFlow() } doReturn flowOf(emptyList())
}
val isInCall = repository.isInCallFlow().firstWithTimeoutOrNull()
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/CarrierConfigRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/CarrierConfigRepositoryTest.kt
new file mode 100644
index 0000000..8c54751
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/CarrierConfigRepositoryTest.kt
@@ -0,0 +1,138 @@
+/*
+ * 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
+
+import android.content.Context
+import android.telephony.CarrierConfigManager
+import androidx.core.os.persistableBundleOf
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.anyVararg
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.doThrow
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+import org.mockito.kotlin.times
+import org.mockito.kotlin.verify
+
+@RunWith(AndroidJUnit4::class)
+class CarrierConfigRepositoryTest {
+
+ private val mockCarrierConfigManager = mock<CarrierConfigManager>()
+
+ private val context =
+ mock<Context> {
+ on { applicationContext } doReturn mock
+ on { getSystemService(CarrierConfigManager::class.java) } doReturn
+ mockCarrierConfigManager
+ }
+
+ private val repository = CarrierConfigRepository(context)
+
+ @Before
+ fun setUp() {
+ CarrierConfigRepository.resetForTest()
+ }
+
+ @Test
+ fun getBoolean_returnValue() {
+ val key = CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL
+ mockCarrierConfigManager.stub {
+ on { getConfigForSubId(any(), eq(key)) } doReturn persistableBundleOf(key to true)
+ }
+
+ val value = repository.getBoolean(SUB_ID, key)
+
+ assertThat(value).isTrue()
+ }
+
+ @Test
+ fun getInt_returnValue() {
+ val key = CarrierConfigManager.KEY_GBA_MODE_INT
+ mockCarrierConfigManager.stub {
+ on { getConfigForSubId(any(), eq(key)) } doReturn persistableBundleOf(key to 99)
+ }
+
+ val value = repository.getInt(SUB_ID, key)
+
+ assertThat(value).isEqualTo(99)
+ }
+
+ @Test
+ fun getString_returnValue() {
+ val key = CarrierConfigManager.KEY_CARRIER_NAME_STRING
+ mockCarrierConfigManager.stub {
+ on { getConfigForSubId(any(), eq(key)) } doReturn
+ persistableBundleOf(key to STRING_VALUE)
+ }
+
+ val value = repository.getString(SUB_ID, key)
+
+ assertThat(value).isEqualTo(STRING_VALUE)
+ }
+
+ @Test
+ fun transformConfig_managerThrowIllegalStateException_returnDefaultValue() {
+ mockCarrierConfigManager.stub {
+ on { getConfigForSubId(any(), anyVararg()) } doThrow IllegalStateException()
+ }
+
+ val carrierName =
+ repository.transformConfig(SUB_ID) {
+ getInt(CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT)
+ }
+
+ assertThat(carrierName)
+ .isEqualTo(
+ CarrierConfigManager.getDefaultConfig()
+ .getInt(CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT))
+ }
+
+ @Test
+ fun transformConfig_getValueTwice_cached() {
+ val key = CarrierConfigManager.KEY_CARRIER_NAME_STRING
+ mockCarrierConfigManager.stub {
+ on { getConfigForSubId(any(), eq(key)) } doReturn
+ persistableBundleOf(key to STRING_VALUE)
+ }
+
+ repository.transformConfig(SUB_ID) { getString(key) }
+ repository.transformConfig(SUB_ID) { getString(key) }
+
+ verify(mockCarrierConfigManager, times(1)).getConfigForSubId(any(), anyVararg())
+ }
+
+ @Test
+ fun transformConfig_registerCarrierConfigChangeListener() {
+ val key = CarrierConfigManager.KEY_CARRIER_NAME_STRING
+
+ repository.transformConfig(SUB_ID) { getString(key) }
+ repository.transformConfig(SUB_ID) { getString(key) }
+
+ verify(mockCarrierConfigManager, times(1)).registerCarrierConfigChangeListener(any(), any())
+ }
+
+ private companion object {
+ const val SUB_ID = 123
+ const val STRING_VALUE = "value"
+ }
+}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/MobileDataRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/MobileDataRepositoryTest.kt
new file mode 100644
index 0000000..fc762fa
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/MobileDataRepositoryTest.kt
@@ -0,0 +1,188 @@
+/*
+ * 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
+
+import android.content.Context
+import android.provider.Settings
+import android.telephony.SubscriptionManager
+import android.telephony.TelephonyManager
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
+import com.android.settingslib.spa.testutils.toListWithTimeout
+import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBoolean
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.async
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.flowOf
+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
+import org.mockito.kotlin.verify
+
+@RunWith(AndroidJUnit4::class)
+class MobileDataRepositoryTest {
+ private val mockTelephonyManager =
+ mock<TelephonyManager> { on { createForSubscriptionId(SUB_ID) } doReturn mock }
+
+ private val context: Context =
+ spy(ApplicationProvider.getApplicationContext()) {
+ on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
+ }
+
+ private val repository = MobileDataRepository(context, flowOf(Unit))
+
+ @Test
+ fun isMobileDataPolicyEnabledFlow_invalidSub_returnFalse() = runBlocking {
+ val flow =
+ repository.isMobileDataPolicyEnabledFlow(
+ subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
+ )
+
+ assertThat(flow.firstWithTimeoutOrNull()).isFalse()
+ }
+
+ @Test
+ fun isMobileDataPolicyEnabledFlow_validSub_returnPolicyState() = runBlocking {
+ mockTelephonyManager.stub {
+ on {
+ isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+ } doReturn true
+ }
+
+ val flow =
+ repository.isMobileDataPolicyEnabledFlow(
+ subId = SUB_ID,
+ policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
+ )
+
+ assertThat(flow.firstWithTimeoutOrNull()).isTrue()
+ }
+
+ @Test
+ fun setMobileDataPolicyEnabled() = runBlocking {
+ repository.setMobileDataPolicyEnabled(
+ subId = SUB_ID,
+ policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
+ enabled = true)
+
+ verify(mockTelephonyManager)
+ .setMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH, true)
+ }
+
+ @Test
+ fun mobileDataEnabledChangedFlow_notified(): Unit = runBlocking {
+ val flow =
+ repository.mobileDataEnabledChangedFlow(SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+
+ assertThat(flow.firstWithTimeoutOrNull()).isNotNull()
+ }
+
+ @Test
+ fun mobileDataEnabledChangedFlow_changed_notified(): Unit = runBlocking {
+ var mobileDataEnabled by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA)
+ mobileDataEnabled = false
+
+ val flow =
+ repository.mobileDataEnabledChangedFlow(SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+ mobileDataEnabled = true
+
+ assertThat(flow.firstWithTimeoutOrNull()).isNotNull()
+ }
+
+ @Test
+ fun mobileDataEnabledChangedFlow_forSubIdNotChanged(): Unit = runBlocking {
+ var mobileDataEnabled by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA)
+ mobileDataEnabled = false
+ var mobileDataEnabledForSubId by
+ context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA + SUB_ID)
+ mobileDataEnabledForSubId = false
+
+ val listDeferred = async {
+ repository.mobileDataEnabledChangedFlow(SUB_ID).toListWithTimeout()
+ }
+
+ assertThat(listDeferred.await()).hasSize(1)
+ }
+
+ @Test
+ fun mobileDataEnabledChangedFlow_forSubIdChanged(): Unit = runBlocking {
+ var mobileDataEnabled by context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA)
+ mobileDataEnabled = false
+ var mobileDataEnabledForSubId by
+ context.settingsGlobalBoolean(Settings.Global.MOBILE_DATA + SUB_ID)
+ mobileDataEnabledForSubId = false
+
+ val listDeferred = async {
+ repository.mobileDataEnabledChangedFlow(SUB_ID).toListWithTimeout()
+ }
+ delay(100)
+ mobileDataEnabledForSubId = true
+
+ assertThat(listDeferred.await().size).isAtLeast(2)
+ }
+
+ @Test
+ fun isMobileDataEnabledFlow_invalidSub_returnFalse() = runBlocking {
+ val state =
+ repository.isMobileDataEnabledFlow(
+ subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ )
+
+ assertThat(state.firstWithTimeoutOrNull()).isFalse()
+ }
+
+ @Test
+ fun isMobileDataEnabledFlow_validSub_returnPolicyState() = runBlocking {
+ mockTelephonyManager.stub {
+ on { isDataEnabledForReason(TelephonyManager.DATA_ENABLED_REASON_USER) } doReturn true
+ }
+
+ val state = repository.isMobileDataEnabledFlow(subId = SUB_ID)
+
+ assertThat(state.firstWithTimeoutOrNull()).isTrue()
+ }
+
+ @Test
+ fun isDataRoamingEnabledFlow_invalidSub_returnFalse() = runBlocking {
+ val isDataRoamingEnabled =
+ repository
+ .isDataRoamingEnabledFlow(subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+ .firstWithTimeoutOrNull()
+
+ assertThat(isDataRoamingEnabled).isFalse()
+ }
+
+ @Test
+ fun isDataRoamingEnabledFlow_validSub_returnCurrentValue() = runBlocking {
+ mockTelephonyManager.stub { on { isDataRoamingEnabled } doReturn true }
+
+ val isDataRoamingEnabled =
+ repository.isDataRoamingEnabledFlow(subId = SUB_ID).firstWithTimeoutOrNull()
+
+ assertThat(isDataRoamingEnabled).isTrue()
+ }
+
+ private companion object {
+ const val SUB_ID = 123
+ }
+}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.kt
new file mode 100644
index 0000000..ee4cff6
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.kt
@@ -0,0 +1,194 @@
+/*
+ * 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
+
+import android.content.Context
+import android.telephony.CarrierConfigManager
+import android.telephony.SubscriptionManager
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.assertIsOff
+import androidx.compose.ui.test.assertIsOn
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onNodeWithText
+import androidx.fragment.app.FragmentManager
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.android.settings.core.BasePreferenceController.AVAILABLE
+import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.flowOf
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class RoamingPreferenceControllerTest {
+ @get:Rule val composeTestRule = createComposeRule()
+
+ private val context: Context = ApplicationProvider.getApplicationContext()
+
+ private val mockMobileDataRepository =
+ mock<MobileDataRepository> {
+ on { isDataRoamingEnabledFlow(SUB_ID) } doReturn flowOf(false)
+ }
+
+ private val controller =
+ RoamingPreferenceController(context, TEST_KEY, mockMobileDataRepository)
+
+ @Before
+ fun setUp() {
+ CarrierConfigRepository.resetForTest()
+ }
+
+ @Test
+ fun getAvailabilityStatus_validSubId_returnAvailable() {
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(AVAILABLE)
+ }
+
+ @Test
+ fun getAvailabilityStatus_invalidSubId_returnConditionallyUnavailable() {
+ controller.init(mock<FragmentManager>(), SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+ }
+
+ @Test
+ fun getAvailabilityStatus_forceHomeNetworkIsTrue_returnConditionallyUnavailable() {
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL,
+ value = true,
+ )
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+ }
+
+ @Test
+ fun getAvailabilityStatus_forceHomeNetworkIsFalse_returnAvailable() {
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL,
+ value = false,
+ )
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(AVAILABLE)
+ }
+
+ @Test
+ fun title_displayed() {
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) { controller.Content() }
+ }
+
+ composeTestRule.onNodeWithText(context.getString(R.string.roaming)).assertIsDisplayed()
+ }
+
+ @Test
+ fun summary_displayed() {
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) { controller.Content() }
+ }
+
+ composeTestRule
+ .onNodeWithText(context.getString(R.string.roaming_enable))
+ .assertIsDisplayed()
+ }
+
+ @Test
+ fun isDialogNeeded_enableChargeIndication_returnTrue() {
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL,
+ value = false,
+ )
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ val isDialogNeeded = controller.isDialogNeeded()
+
+ assertThat(isDialogNeeded).isTrue()
+ }
+
+ @Test
+ fun isDialogNeeded_disableChargeIndication_returnFalse() {
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_ID,
+ key = CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL,
+ value = true,
+ )
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ val isDialogNeeded = controller.isDialogNeeded()
+
+ assertThat(isDialogNeeded).isFalse()
+ }
+
+ @Test
+ fun checked_roamingEnabled_isOn() {
+ mockMobileDataRepository.stub {
+ on { isDataRoamingEnabledFlow(SUB_ID) } doReturn flowOf(true)
+ }
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) { controller.Content() }
+ }
+
+ composeTestRule.onNodeWithText(context.getString(R.string.roaming)).assertIsOn()
+ }
+
+ @Test
+ fun checked_roamingDisabled_isOff() {
+ mockMobileDataRepository.stub {
+ on { isDataRoamingEnabledFlow(SUB_ID) } doReturn flowOf(false)
+ }
+ controller.init(mock<FragmentManager>(), SUB_ID)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) { controller.Content() }
+ }
+
+ composeTestRule.onNodeWithText(context.getString(R.string.roaming)).assertIsOff()
+ }
+
+ private companion object {
+ const val TEST_KEY = "test_key"
+ const val SUB_ID = 2
+ }
+}
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionRepositoryTest.kt
index e233fa4..75c9aa1 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionRepositoryTest.kt
@@ -77,7 +77,7 @@
@Test
fun subscriptionsChangedFlow_hasInitialValue() = runBlocking {
- val initialValue = context.subscriptionsChangedFlow().firstWithTimeoutOrNull()
+ val initialValue = repository.subscriptionsChangedFlow().firstWithTimeoutOrNull()
assertThat(initialValue).isSameInstanceAs(Unit)
}
@@ -85,7 +85,7 @@
@Test
fun subscriptionsChangedFlow_changed() = runBlocking {
val listDeferred = async {
- context.subscriptionsChangedFlow().toListWithTimeout()
+ repository.subscriptionsChangedFlow().toListWithTimeout()
}
delay(100)
@@ -95,6 +95,17 @@
}
@Test
+ fun activeSubscriptionIdListFlow(): Unit = runBlocking {
+ mockSubscriptionManager.stub {
+ on { activeSubscriptionIdList } doReturn intArrayOf(SUB_ID_IN_SLOT_0)
+ }
+
+ val activeSubIds = repository.activeSubscriptionIdListFlow().firstWithTimeoutOrNull()
+
+ assertThat(activeSubIds).containsExactly(SUB_ID_IN_SLOT_0)
+ }
+
+ @Test
fun getSelectableSubscriptionInfoList_sortedBySimSlotIndex() {
mockSubscriptionManager.stub {
on { getAvailableSubscriptionInfoList() } doReturn listOf(
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/TelephonyRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/TelephonyRepositoryTest.kt
index 65e8c47..12791b8 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/TelephonyRepositoryTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/TelephonyRepositoryTest.kt
@@ -17,14 +17,12 @@
package com.android.settings.network.telephony
import android.content.Context
-import android.telephony.SubscriptionManager
import android.telephony.TelephonyCallback
import android.telephony.TelephonyManager
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
@@ -33,91 +31,29 @@
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
-import org.mockito.kotlin.stub
import org.mockito.kotlin.verify
@RunWith(AndroidJUnit4::class)
class TelephonyRepositoryTest {
private var telephonyCallback: TelephonyCallback? = null
- private val mockTelephonyManager = mock<TelephonyManager> {
- on { createForSubscriptionId(SUB_ID) } doReturn mock
- on { registerTelephonyCallback(any(), any()) } doAnswer {
- telephonyCallback = it.arguments[1] as TelephonyCallback
- }
- }
-
- private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
- on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
- }
-
- private val repository = TelephonyRepository(context, flowOf(Unit))
-
- @Test
- fun isMobileDataPolicyEnabledFlow_invalidSub_returnFalse() = runBlocking {
- val flow = repository.isMobileDataPolicyEnabledFlow(
- subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
- policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
- )
-
- assertThat(flow.firstWithTimeoutOrNull()).isFalse()
- }
-
- @Test
- fun isMobileDataPolicyEnabledFlow_validSub_returnPolicyState() = runBlocking {
- mockTelephonyManager.stub {
- on {
- isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
- } doReturn true
+ private val mockTelephonyManager =
+ mock<TelephonyManager> {
+ on { createForSubscriptionId(SUB_ID) } doReturn mock
+ on { registerTelephonyCallback(any(), any()) } doAnswer
+ {
+ telephonyCallback = it.arguments[1] as TelephonyCallback
+ }
}
- val flow = repository.isMobileDataPolicyEnabledFlow(
- subId = SUB_ID,
- policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
- )
-
- assertThat(flow.firstWithTimeoutOrNull()).isTrue()
- }
-
- @Test
- fun setMobileDataPolicyEnabled() = runBlocking {
- repository.setMobileDataPolicyEnabled(
- subId = SUB_ID,
- policy = TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
- enabled = true
- )
-
- verify(mockTelephonyManager)
- .setMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH, true)
- }
-
- @Test
- fun isDataEnabled_invalidSub_returnFalse() = runBlocking {
- val state = repository.isDataEnabledFlow(
- subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
- )
-
- assertThat(state.firstWithTimeoutOrNull()).isFalse()
- }
-
- @Test
- fun isDataEnabled_validSub_returnPolicyState() = runBlocking {
- mockTelephonyManager.stub {
- on {
- isDataEnabledForReason(TelephonyManager.DATA_ENABLED_REASON_USER)
- } doReturn true
+ private val context: Context =
+ spy(ApplicationProvider.getApplicationContext()) {
+ on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
}
- val state = repository.isDataEnabledFlow(subId = SUB_ID)
-
- assertThat(state.firstWithTimeoutOrNull()).isTrue()
- }
-
@Test
fun telephonyCallbackFlow_callbackRegistered() = runBlocking {
- val flow = context.telephonyCallbackFlow<Unit>(SUB_ID) {
- object : TelephonyCallback() {}
- }
+ val flow = context.telephonyCallbackFlow<Unit>(SUB_ID) { object : TelephonyCallback() {} }
flow.firstWithTimeoutOrNull()
@@ -126,9 +62,7 @@
@Test
fun telephonyCallbackFlow_callbackUnregistered() = runBlocking {
- val flow = context.telephonyCallbackFlow<Unit>(SUB_ID) {
- object : TelephonyCallback() {}
- }
+ val flow = context.telephonyCallbackFlow<Unit>(SUB_ID) { object : TelephonyCallback() {} }
flow.firstWithTimeoutOrNull()
diff --git a/tests/spa_unit/src/com/android/settings/print/PrintSettingsPageProviderTest.kt b/tests/spa_unit/src/com/android/settings/print/PrintSettingsPageProviderTest.kt
index 746816b..2571406 100644
--- a/tests/spa_unit/src/com/android/settings/print/PrintSettingsPageProviderTest.kt
+++ b/tests/spa_unit/src/com/android/settings/print/PrintSettingsPageProviderTest.kt
@@ -17,6 +17,7 @@
package com.android.settings.print
import android.content.Context
+import android.net.Uri
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.test.isDisplayed
@@ -31,7 +32,9 @@
import com.android.settings.print.PrintSettingsFragment.EXTRA_CHECKED
import com.android.settings.print.PrintSettingsFragment.EXTRA_SERVICE_COMPONENT_NAME
import com.android.settings.print.PrintSettingsFragment.EXTRA_TITLE
+import com.android.settings.print.PrintSettingsPageProvider.AddPrintService
import com.android.settings.print.PrintSettingsPageProvider.PrintService
+import kotlinx.coroutines.flow.flowOf
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -44,35 +47,32 @@
@RunWith(AndroidJUnit4::class)
class PrintSettingsPageProviderTest {
- @get:Rule
- val composeTestRule = createComposeRule()
+ @get:Rule val composeTestRule = createComposeRule()
- private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
- doNothing().whenever(mock).startActivity(any())
- }
+ private val context: Context =
+ spy(ApplicationProvider.getApplicationContext()) {
+ doNothing().whenever(mock).startActivity(any())
+ }
- private val displayInfo = PrintServiceDisplayInfo(
- title = TITLE,
- isEnabled = true,
- summary = SUMMARY,
- icon = context.getDrawable(R.drawable.ic_settings_print)!!,
- componentName = "ComponentName",
- )
+ private val displayInfo =
+ PrintServiceDisplayInfo(
+ title = TITLE,
+ isEnabled = true,
+ summary = SUMMARY,
+ icon = context.getDrawable(R.drawable.ic_settings_print)!!,
+ componentName = "ComponentName",
+ )
@Test
fun printService_titleDisplayed() {
- composeTestRule.setContent {
- PrintService(displayInfo)
- }
+ composeTestRule.setContent { PrintService(displayInfo) }
composeTestRule.onNodeWithText(TITLE).isDisplayed()
}
@Test
fun printService_summaryDisplayed() {
- composeTestRule.setContent {
- PrintService(displayInfo)
- }
+ composeTestRule.setContent { PrintService(displayInfo) }
composeTestRule.onNodeWithText(SUMMARY).isDisplayed()
}
@@ -80,25 +80,43 @@
@Test
fun printService_onClick() {
composeTestRule.setContent {
- CompositionLocalProvider(LocalContext provides context) {
- PrintService(displayInfo)
- }
+ CompositionLocalProvider(LocalContext provides context) { PrintService(displayInfo) }
}
composeTestRule.onNodeWithText(TITLE).performClick()
- verify(context).startActivity(argThat {
- val fragment = getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)
- val arguments = getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)!!
- fragment == PrintServiceSettingsFragment::class.qualifiedName &&
- arguments.getBoolean(EXTRA_CHECKED) == displayInfo.isEnabled &&
- arguments.getString(EXTRA_TITLE) == displayInfo.title &&
- arguments.getString(EXTRA_SERVICE_COMPONENT_NAME) == displayInfo.componentName
- })
+ verify(context)
+ .startActivity(
+ argThat {
+ val fragment = getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)
+ val arguments = getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)!!
+ fragment == PrintServiceSettingsFragment::class.qualifiedName &&
+ arguments.getBoolean(EXTRA_CHECKED) == displayInfo.isEnabled &&
+ arguments.getString(EXTRA_TITLE) == displayInfo.title &&
+ arguments.getString(EXTRA_SERVICE_COMPONENT_NAME) ==
+ displayInfo.componentName
+ }
+ )
+ }
+
+ @Test
+ fun addPrintService_onClick() {
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ AddPrintService(flowOf(SEARCH_URI))
+ }
+ }
+
+ composeTestRule
+ .onNodeWithText(context.getString(R.string.print_menu_item_add_service))
+ .performClick()
+
+ verify(context).startActivity(argThat { data == Uri.parse(SEARCH_URI) })
}
private companion object {
const val TITLE = "Title"
const val SUMMARY = "Summary"
+ const val SEARCH_URI = "search.uri"
}
}
diff --git a/tests/spa_unit/src/com/android/settings/spa/SpaBridgeActivityTest.kt b/tests/spa_unit/src/com/android/settings/spa/SpaBridgeActivityTest.kt
new file mode 100644
index 0000000..e29bd96
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/spa/SpaBridgeActivityTest.kt
@@ -0,0 +1,95 @@
+/*
+ * 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
+
+import android.app.Activity
+import android.content.ComponentName
+import android.content.pm.ActivityInfo
+import android.content.pm.PackageManager
+import android.os.Bundle
+import androidx.core.os.bundleOf
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.SettingsActivity.META_DATA_KEY_HIGHLIGHT_MENU_KEY
+import com.android.settings.spa.SpaBridgeActivity.Companion.META_DATA_KEY_DESTINATION
+import com.android.settings.spa.SpaBridgeActivity.Companion.getDestination
+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.doAnswer
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+
+@RunWith(AndroidJUnit4::class)
+class SpaBridgeActivityTest {
+ private var activityMetadata: Bundle = bundleOf()
+
+ private val mockPackageManager =
+ mock<PackageManager> {
+ on {
+ getActivityInfo(eq(COMPONENT_NAME), any<PackageManager.ComponentInfoFlags>())
+ } doAnswer { ActivityInfo().apply { metaData = activityMetadata } }
+ }
+
+ private val activity =
+ mock<Activity> {
+ on { componentName } doReturn COMPONENT_NAME
+ on { packageManager } doReturn mockPackageManager
+ }
+
+ @Test
+ fun getDestination_noDestination_returnNull() {
+ activityMetadata = bundleOf()
+
+ val destination = activity.getDestination()
+
+ assertThat(destination).isNull()
+ }
+
+ @Test
+ fun getDestination_withoutHighlightMenuKey() {
+ activityMetadata = bundleOf(META_DATA_KEY_DESTINATION to DESTINATION)
+
+ val (destination, highlightMenuKey) = activity.getDestination()!!
+
+ assertThat(destination).isEqualTo(DESTINATION)
+ assertThat(highlightMenuKey).isNull()
+ }
+
+ @Test
+ fun getDestination_withHighlightMenuKey() {
+ activityMetadata =
+ bundleOf(
+ META_DATA_KEY_DESTINATION to DESTINATION,
+ META_DATA_KEY_HIGHLIGHT_MENU_KEY to HIGHLIGHT_MENU_KEY,
+ )
+
+ val (destination, highlightMenuKey) = activity.getDestination()!!
+
+ assertThat(destination).isEqualTo(DESTINATION)
+ assertThat(highlightMenuKey).isEqualTo(HIGHLIGHT_MENU_KEY)
+ }
+
+ private companion object {
+ const val PACKAGE_NAME = "package.name"
+ const val ACTIVITY_NAME = "ActivityName"
+ val COMPONENT_NAME = ComponentName(PACKAGE_NAME, ACTIVITY_NAME)
+ const val DESTINATION = "Destination"
+ const val HIGHLIGHT_MENU_KEY = "apps"
+ }
+}
diff --git a/tests/spa_unit/src/com/android/settings/spa/SpaDestinationTest.kt b/tests/spa_unit/src/com/android/settings/spa/SpaDestinationTest.kt
index 0b9eb22..ee658c1 100644
--- a/tests/spa_unit/src/com/android/settings/spa/SpaDestinationTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/SpaDestinationTest.kt
@@ -1,5 +1,5 @@
/*
- * 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.
@@ -17,81 +17,32 @@
package com.android.settings.spa
import android.app.Activity
-import android.content.ComponentName
-import android.content.pm.ActivityInfo
-import android.content.pm.PackageManager
-import android.os.Bundle
-import androidx.core.os.bundleOf
import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.android.settings.SettingsActivity.META_DATA_KEY_HIGHLIGHT_MENU_KEY
-import com.android.settings.spa.SpaDestination.Companion.META_DATA_KEY_DESTINATION
-import com.android.settings.spa.SpaDestination.Companion.getDestination
-import com.google.common.truth.Truth.assertThat
+import com.android.settingslib.spa.framework.util.KEY_DESTINATION
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.kotlin.any
-import org.mockito.kotlin.doAnswer
-import org.mockito.kotlin.doReturn
-import org.mockito.kotlin.eq
+import org.mockito.kotlin.argThat
import org.mockito.kotlin.mock
+import org.mockito.kotlin.verify
@RunWith(AndroidJUnit4::class)
class SpaDestinationTest {
- private var activityMetadata: Bundle = bundleOf()
- private val mockPackageManager = mock<PackageManager> {
- on {
- getActivityInfo(
- eq(COMPONENT_NAME),
- any<PackageManager.ComponentInfoFlags>()
- )
- } doAnswer {
- ActivityInfo().apply { metaData = activityMetadata }
- }
- }
-
- private val activity = mock<Activity> {
- on { componentName } doReturn COMPONENT_NAME
- on { packageManager } doReturn mockPackageManager
- }
+ private val activity = mock<Activity>()
@Test
- fun getDestination_noDestination_returnNull() {
- activityMetadata = bundleOf()
+ fun startFromExportedActivity() {
+ val spaDestination = SpaDestination(destination = DESTINATION, highlightMenuKey = null)
- val destination = activity.getDestination()
+ spaDestination.startFromExportedActivity(activity)
- assertThat(destination).isNull()
- }
-
- @Test
- fun getDestination_withoutHighlightMenuKey() {
- activityMetadata = bundleOf(META_DATA_KEY_DESTINATION to DESTINATION)
-
- val (destination, highlightMenuKey) = activity.getDestination()!!
-
- assertThat(destination).isEqualTo(DESTINATION)
- assertThat(highlightMenuKey).isNull()
- }
-
- @Test
- fun getDestination_withHighlightMenuKey() {
- activityMetadata = bundleOf(
- META_DATA_KEY_DESTINATION to DESTINATION,
- META_DATA_KEY_HIGHLIGHT_MENU_KEY to HIGHLIGHT_MENU_KEY,
- )
-
- val (destination, highlightMenuKey) = activity.getDestination()!!
-
- assertThat(destination).isEqualTo(DESTINATION)
- assertThat(highlightMenuKey).isEqualTo(HIGHLIGHT_MENU_KEY)
+ verify(activity).startActivity(argThat {
+ component!!.className == SpaActivity::class.qualifiedName
+ getStringExtra(KEY_DESTINATION) == DESTINATION
+ })
}
private companion object {
- const val PACKAGE_NAME = "package.name"
- const val ACTIVITY_NAME = "ActivityName"
- val COMPONENT_NAME = ComponentName(PACKAGE_NAME, ACTIVITY_NAME)
const val DESTINATION = "Destination"
- const val HIGHLIGHT_MENU_KEY = "apps"
}
}
diff --git a/tests/spa_unit/src/com/android/settings/spa/network/PrimarySimRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/spa/network/PrimarySimRepositoryTest.kt
new file mode 100644
index 0000000..459afa9
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/spa/network/PrimarySimRepositoryTest.kt
@@ -0,0 +1,206 @@
+/*
+ * 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.network
+
+import android.content.Context
+import android.content.res.Resources
+import android.telephony.SubscriptionInfo
+import android.telephony.SubscriptionManager
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.android.settingslib.spa.widget.preference.ListPreferenceOption
+import com.google.common.truth.Truth.assertThat
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doAnswer
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.stub
+
+@RunWith(AndroidJUnit4::class)
+class PrimarySimRepositoryTest {
+ @get:Rule
+ val composeTestRule = createComposeRule()
+
+ private val mockSubscriptionManager = mock<SubscriptionManager> {
+ on { addOnSubscriptionsChangedListener(any(), any()) } doAnswer {
+ val listener = it.arguments[1] as SubscriptionManager.OnSubscriptionsChangedListener
+ listener.onSubscriptionsChanged()
+ }
+ on { getPhoneNumber(SUB_ID_1) } doReturn NUMBER_1
+ on { getPhoneNumber(SUB_ID_2) } doReturn NUMBER_2
+ }
+
+ private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
+ on { getSystemService(SubscriptionManager::class.java) } doReturn mockSubscriptionManager
+ }
+ private val spyResources: Resources = spy(context.resources)
+
+ @Test
+ fun getPrimarySimInfo_oneSim_returnNull() {
+ val simList = listOf(
+ SUB_INFO_1,
+ )
+
+ val primarySimInfo = PrimarySimRepository(context).getPrimarySimInfo(simList)
+
+ assertThat(primarySimInfo).isNull()
+ }
+
+ @Test
+ fun getPrimarySimInfo_verifyCallsList() {
+ val simList = listOf(
+ SUB_INFO_1,
+ SUB_INFO_2
+ )
+ val expectedList = listOf(
+ ListPreferenceOption(
+ id = SUB_INFO_1.subscriptionId,
+ text = "${SUB_INFO_1.displayName}",
+ summary = NUMBER_1
+ ),
+ ListPreferenceOption(
+ id = SUB_INFO_2.subscriptionId,
+ text = "${SUB_INFO_2.displayName}",
+ summary = NUMBER_2
+ ),
+ ListPreferenceOption(
+ id = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ text = context.getString(R.string.sim_calls_ask_first_prefs_title),
+ ),
+ )
+
+ val primarySimInfo = PrimarySimRepository(context).getPrimarySimInfo(simList)
+
+ assertThat(primarySimInfo).isNotNull()
+ assertThat(primarySimInfo?.callsList).isEqualTo(expectedList)
+ }
+
+ @Test
+ fun getPrimarySimInfo_verifySmsList() {
+ val simList = listOf(
+ SUB_INFO_1,
+ SUB_INFO_2
+ )
+ val expectedList = listOf(
+ ListPreferenceOption(
+ id = SUB_INFO_1.subscriptionId,
+ text = "${SUB_INFO_1.displayName}",
+ summary = NUMBER_1
+ ),
+ ListPreferenceOption(
+ id = SUB_INFO_2.subscriptionId,
+ text = "${SUB_INFO_2.displayName}",
+ summary = NUMBER_2
+ ),
+ ListPreferenceOption(
+ id = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
+ text = context.getString(R.string.sim_calls_ask_first_prefs_title),
+ ),
+ )
+
+ val primarySimInfo = PrimarySimRepository(context).getPrimarySimInfo(simList)
+
+ assertThat(primarySimInfo).isNotNull()
+ assertThat(primarySimInfo?.smsList).isEqualTo(expectedList)
+ }
+
+ @Test
+ fun getPrimarySimInfo_noAskEveryTime_verifySmsList() {
+ val simList = listOf(
+ SUB_INFO_1,
+ SUB_INFO_2
+ )
+ context.stub {
+ on { resources } doReturn spyResources
+ }
+ spyResources.stub {
+ on {
+ getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support)
+ } doReturn false
+ }
+ val expectedList = listOf(
+ ListPreferenceOption(
+ id = SUB_INFO_1.subscriptionId,
+ text = "${SUB_INFO_1.displayName}",
+ summary = NUMBER_1
+ ),
+ ListPreferenceOption(
+ id = SUB_INFO_2.subscriptionId,
+ text = "${SUB_INFO_2.displayName}",
+ summary = NUMBER_2
+ ),
+ )
+
+ val primarySimInfo = PrimarySimRepository(context).getPrimarySimInfo(simList)
+
+ assertThat(primarySimInfo).isNotNull()
+ assertThat(primarySimInfo?.smsList).isEqualTo(expectedList)
+ }
+
+ @Test
+ fun getPrimarySimInfo_verifyDataList() {
+ val simList = listOf(
+ SUB_INFO_1,
+ SUB_INFO_2
+ )
+ val expectedList = listOf(
+ ListPreferenceOption(
+ id = SUB_INFO_1.subscriptionId,
+ text = "${SUB_INFO_1.displayName}",
+ summary = NUMBER_1
+ ),
+ ListPreferenceOption(
+ id = SUB_INFO_2.subscriptionId,
+ text = "${SUB_INFO_2.displayName}",
+ summary = NUMBER_2
+ ),
+ )
+
+ val primarySimInfo = PrimarySimRepository(context).getPrimarySimInfo(simList)
+
+ assertThat(primarySimInfo).isNotNull()
+ assertThat(primarySimInfo?.dataList).isEqualTo(expectedList)
+ }
+
+ private companion object {
+ const val SUB_ID_1 = 1
+ const val SUB_ID_2 = 2
+ const val DISPLAY_NAME_1 = "Sub 1"
+ const val DISPLAY_NAME_2 = "Sub 2"
+ const val NUMBER_1 = "000000001"
+ const val NUMBER_2 = "000000002"
+ const val MCC = "310"
+
+ val SUB_INFO_1: SubscriptionInfo = SubscriptionInfo.Builder().apply {
+ setId(SUB_ID_1)
+ setDisplayName(DISPLAY_NAME_1)
+ setMcc(MCC)
+ }.build()
+
+ val SUB_INFO_2: SubscriptionInfo = SubscriptionInfo.Builder().apply {
+ setId(SUB_ID_2)
+ setDisplayName(DISPLAY_NAME_2)
+ setMcc(MCC)
+ }.build()
+ }
+}
diff --git a/tests/spa_unit/src/com/android/settings/system/reset/ResetNetworkConfirmTest.kt b/tests/spa_unit/src/com/android/settings/system/reset/ResetNetworkConfirmTest.kt
new file mode 100644
index 0000000..4812cfb
--- /dev/null
+++ b/tests/spa_unit/src/com/android/settings/system/reset/ResetNetworkConfirmTest.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.system.reset
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.widget.TextView
+import androidx.fragment.app.testing.launchFragment
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
+import com.android.settings.ResetNetworkRequest
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.runBlocking
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.kotlin.any
+import org.mockito.kotlin.never
+import org.mockito.kotlin.spy
+import org.mockito.kotlin.verify
+
+@RunWith(AndroidJUnit4::class)
+class ResetNetworkConfirmTest {
+ private val context: Context = spy(ApplicationProvider.getApplicationContext()) {}
+
+ private val scenario = launchFragment<ResetNetworkConfirm>()
+
+ @Test
+ fun resetNetworkData_notResetEsim() {
+ scenario.recreate().onFragment { fragment ->
+ fragment.resetNetworkRequest = ResetNetworkRequest(ResetNetworkRequest.RESET_NONE)
+
+ runBlocking { fragment.onResetClicked() }
+
+ verify(context, never()).getSystemService(any())
+ }
+ }
+
+ @Test
+ fun setSubtitle_eraseEsim() {
+ scenario.onFragment { fragment ->
+ fragment.resetNetworkRequest =
+ ResetNetworkRequest(ResetNetworkRequest.RESET_NONE).apply {
+ setResetEsim(context.packageName)
+ }
+
+ val view = fragment.onCreateView(LayoutInflater.from(context), null, null)
+
+ assertThat(view.requireViewById<TextView>(R.id.reset_network_confirm).text)
+ .isEqualTo(context.getString(R.string.reset_network_final_desc_esim))
+ }
+ }
+
+ @Test
+ fun setSubtitle_notEraseEsim() {
+ scenario.onFragment { fragment ->
+ fragment.resetNetworkRequest = ResetNetworkRequest(ResetNetworkRequest.RESET_NONE)
+
+ val view = fragment.onCreateView(LayoutInflater.from(context), null, null)
+
+ assertThat(view.requireViewById<TextView>(R.id.reset_network_confirm).text)
+ .isEqualTo(context.getString(R.string.reset_network_final_desc))
+ }
+ }
+}
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index bc5824f..be43f8e 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -32,7 +32,7 @@
"truth",
"kotlinx_coroutines_test",
"Settings-testutils2",
- "MediaDrmSettingsFlagsLib",
+ "servicestests-utils",
// Don't add SettingsLib libraries here - you can use them directly as they are in the
// instrumented Settings app.
],
diff --git a/tests/unit/src/com/android/settings/ResetSubscriptionContractTest.java b/tests/unit/src/com/android/settings/ResetSubscriptionContractTest.java
deleted file mode 100644
index 4443304..0000000
--- a/tests/unit/src/com/android/settings/ResetSubscriptionContractTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2022 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 static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-public class ResetSubscriptionContractTest {
-
- private static final int SUB_ID_1 = 3;
- private static final int SUB_ID_2 = 8;
-
- @Mock
- private SubscriptionManager mSubscriptionManager;
- @Mock
- private OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
- @Mock
- private SubscriptionInfo mSubscriptionInfo1;
- @Mock
- private SubscriptionInfo mSubscriptionInfo2;
-
- private Context mContext;
- private ResetNetworkRequest mRequestArgs;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
-
- mContext = spy(ApplicationProvider.getApplicationContext());
- mRequestArgs = new ResetNetworkRequest(new Bundle());
- }
-
- private ResetSubscriptionContract createTestObject() {
- return new ResetSubscriptionContract(mContext, mRequestArgs) {
- @Override
- protected SubscriptionManager getSubscriptionManager() {
- return mSubscriptionManager;
- }
- @Override
- protected OnSubscriptionsChangedListener getChangeListener() {
- return mOnSubscriptionsChangedListener;
- }
- };
- }
-
- @Test
- public void getAnyMissingSubscriptionId_returnNull_whenNoSubscriptionChange() {
- mRequestArgs.setResetTelephonyAndNetworkPolicyManager(SUB_ID_1);
- doReturn(mSubscriptionInfo1).when(mSubscriptionManager)
- .getActiveSubscriptionInfo(SUB_ID_1);
- mRequestArgs.setResetApn(SUB_ID_2);
- doReturn(mSubscriptionInfo2).when(mSubscriptionManager)
- .getActiveSubscriptionInfo(SUB_ID_2);
-
- ResetSubscriptionContract target = createTestObject();
-
- verify(mSubscriptionManager).addOnSubscriptionsChangedListener(any(), any());
-
- assertNull(target.getAnyMissingSubscriptionId());
- }
-
- @Test
- public void getAnyMissingSubscriptionId_returnSubId_whenSubscriptionNotActive() {
- mRequestArgs.setResetTelephonyAndNetworkPolicyManager(SUB_ID_1);
- doReturn(mSubscriptionInfo1).when(mSubscriptionManager)
- .getActiveSubscriptionInfo(SUB_ID_1);
- mRequestArgs.setResetApn(SUB_ID_2);
- doReturn(null).when(mSubscriptionManager)
- .getActiveSubscriptionInfo(SUB_ID_2);
-
- ResetSubscriptionContract target = createTestObject();
-
- verify(mSubscriptionManager).addOnSubscriptionsChangedListener(any(), any());
-
- assertEquals(target.getAnyMissingSubscriptionId(), new Integer(SUB_ID_2));
- }
-}
diff --git a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceControllerTest.java
index e1c0277..7229996 100644
--- a/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceControllerTest.java
@@ -16,6 +16,8 @@
package com.android.settings.accessibility;
+import static com.android.internal.accessibility.AccessibilityShortcutController.REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME;
+
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
@@ -24,7 +26,12 @@
import android.content.Context;
import android.content.res.Resources;
+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.provider.Settings;
+import android.view.accessibility.Flags;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -33,6 +40,7 @@
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -40,6 +48,8 @@
public class ReduceBrightColorsPreferenceControllerTest {
private static final String PREF_KEY = "rbc_preference";
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
private Context mContext;
private Resources mResources;;
private ReduceBrightColorsPreferenceController mController;
@@ -88,6 +98,20 @@
assertThat(mController.isAvailable()).isFalse();
}
+
+ @Test
+ @RequiresFlagsDisabled(Flags.FLAG_A11Y_QS_SHORTCUT)
+ public void getTileComponentName_a11yQsFlagOff_returnComponentName() {
+ assertThat(mController.getTileComponentName())
+ .isEqualTo(REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME);
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_A11Y_QS_SHORTCUT)
+ public void getTileComponentName_a11yQsFlagOff_returnNull() {
+ assertThat(mController.getTileComponentName()).isNull();
+ }
+
private int resourceId(String type, String name) {
return mContext.getResources().getIdentifier(name, type, mContext.getPackageName());
}
diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java
new file mode 100644
index 0000000..019ade7
--- /dev/null
+++ b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragmentTest.java
@@ -0,0 +1,409 @@
+/*
+ * 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.connecteddevice.display;
+
+
+import static android.view.Display.INVALID_DISPLAY;
+
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.PREVIOUSLY_SHOWN_LIST_KEY;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.DISPLAYS_LIST_PREFERENCE_KEY;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_RESOLUTION_TITLE_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_ROTATION_KEY;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_ROTATION_TITLE_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_SETTINGS_RESOURCE;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_USE_PREFERENCE_KEY;
+import static com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.EXTERNAL_DISPLAY_USE_TITLE_RESOURCE;
+import static com.android.settingslib.widget.FooterPreference.KEY_FOOTER;
+
+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.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.Display;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.connecteddevice.display.ExternalDisplayPreferenceFragment.DisplayPreference;
+import com.android.settingslib.widget.FooterPreference;
+import com.android.settingslib.widget.MainSwitchPreference;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+/** Unit tests for {@link ExternalDisplayPreferenceFragment}. */
+@RunWith(AndroidJUnit4.class)
+public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBase {
+ @Nullable
+ private ExternalDisplayPreferenceFragment mFragment;
+ private int mPreferenceIdFromResource;
+ private int mDisplayIdArg = INVALID_DISPLAY;
+ private int mResolutionSelectorDisplayId = INVALID_DISPLAY;
+ @Mock
+ private MetricsLogger mMockedMetricsLogger;
+
+ @Test
+ @UiThreadTest
+ public void testCreateAndStart() {
+ initFragment();
+ assertThat(mPreferenceIdFromResource).isEqualTo(EXTERNAL_DISPLAY_SETTINGS_RESOURCE);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testShowDisplayList() {
+ var fragment = initFragment();
+ var outState = new Bundle();
+ fragment.onSaveInstanceStateCallback(outState);
+ assertThat(outState.getBoolean(PREVIOUSLY_SHOWN_LIST_KEY)).isFalse();
+ assertThat(mHandler.getPendingMessages().size()).isEqualTo(1);
+ PreferenceCategory pref = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
+ assertThat(pref).isNull();
+ verify(mMockedInjector, never()).getAllDisplays();
+ mHandler.flush();
+ assertThat(mHandler.getPendingMessages().size()).isEqualTo(0);
+ verify(mMockedInjector).getAllDisplays();
+ pref = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
+ assertThat(pref).isNotNull();
+ assertThat(pref.getPreferenceCount()).isEqualTo(2);
+ fragment.onSaveInstanceStateCallback(outState);
+ assertThat(outState.getBoolean(PREVIOUSLY_SHOWN_LIST_KEY)).isTrue();
+ }
+
+ @Test
+ @UiThreadTest
+ public void testLaunchDisplaySettingFromList() {
+ initFragment();
+ mHandler.flush();
+ PreferenceCategory pref = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
+ assertThat(pref).isNotNull();
+ DisplayPreference display1Pref = (DisplayPreference) pref.getPreference(0);
+ DisplayPreference display2Pref = (DisplayPreference) pref.getPreference(1);
+ assertThat(display1Pref.getKey()).isEqualTo("display_id_" + 1);
+ assertThat("" + display1Pref.getTitle()).isEqualTo("HDMI");
+ assertThat("" + display1Pref.getSummary()).isEqualTo("1920 x 1080");
+ display1Pref.onPreferenceClick(display1Pref);
+ assertThat(mDisplayIdArg).isEqualTo(1);
+ verify(mMockedMetricsLogger).writePreferenceClickMetric(display1Pref);
+ assertThat(display2Pref.getKey()).isEqualTo("display_id_" + 2);
+ assertThat("" + display2Pref.getTitle()).isEqualTo("Overlay #1");
+ assertThat("" + display2Pref.getSummary()).isEqualTo("1240 x 780");
+ display2Pref.onPreferenceClick(display2Pref);
+ assertThat(mDisplayIdArg).isEqualTo(2);
+ verify(mMockedMetricsLogger).writePreferenceClickMetric(display2Pref);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testShowDisplayListForOnlyOneDisplay_PreviouslyShownList() {
+ var fragment = initFragment();
+ // Previously shown list of displays
+ fragment.onActivityCreatedCallback(createBundleForPreviouslyShownList());
+ // Only one display available
+ doReturn(new Display[] {mDisplays[1]}).when(mMockedInjector).getAllDisplays();
+ mHandler.flush();
+ PreferenceCategory pref = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
+ assertThat(pref).isNotNull();
+ assertThat(pref.getPreferenceCount()).isEqualTo(1);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testShowEnabledDisplay_OnlyOneDisplayAvailable() {
+ doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
+ // Only one display available
+ doReturn(new Display[] {mDisplays[1]}).when(mMockedInjector).getAllDisplays();
+ // Init
+ initFragment();
+ mHandler.flush();
+ PreferenceCategory list = mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
+ assertThat(list).isNull();
+ var pref = mPreferenceScreen.findPreference(EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY);
+ assertThat(pref).isNotNull();
+ pref = mPreferenceScreen.findPreference(EXTERNAL_DISPLAY_ROTATION_KEY);
+ assertThat(pref).isNotNull();
+ var footerPref = (FooterPreference) mPreferenceScreen.findPreference(KEY_FOOTER);
+ assertThat(footerPref).isNotNull();
+ verify(footerPref).setTitle(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testShowOneEnabledDisplay_FewAvailable() {
+ mDisplayIdArg = 1;
+ doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
+ initFragment();
+ verify(mMockedInjector, never()).getDisplay(anyInt());
+ mHandler.flush();
+ verify(mMockedInjector).getDisplay(mDisplayIdArg);
+ var pref = mPreferenceScreen.findPreference(EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY);
+ assertThat(pref).isNotNull();
+ pref = mPreferenceScreen.findPreference(EXTERNAL_DISPLAY_ROTATION_KEY);
+ assertThat(pref).isNotNull();
+ var footerPref = (FooterPreference) mPreferenceScreen.findPreference(KEY_FOOTER);
+ assertThat(footerPref).isNotNull();
+ verify(footerPref).setTitle(EXTERNAL_DISPLAY_CHANGE_RESOLUTION_FOOTER_RESOURCE);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testShowDisabledDisplay() {
+ mDisplayIdArg = 1;
+ initFragment();
+ verify(mMockedInjector, never()).getDisplay(anyInt());
+ mHandler.flush();
+ verify(mMockedInjector).getDisplay(mDisplayIdArg);
+ var mainPref = (MainSwitchPreference) mPreferenceScreen.findPreference(
+ EXTERNAL_DISPLAY_USE_PREFERENCE_KEY);
+ assertThat(mainPref).isNotNull();
+ assertThat("" + mainPref.getTitle()).isEqualTo(
+ getText(EXTERNAL_DISPLAY_USE_TITLE_RESOURCE));
+ assertThat(mainPref.isChecked()).isFalse();
+ assertThat(mainPref.isEnabled()).isTrue();
+ assertThat(mainPref.getOnPreferenceChangeListener()).isNotNull();
+ var pref = mPreferenceScreen.findPreference(EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY);
+ assertThat(pref).isNull();
+ pref = mPreferenceScreen.findPreference(EXTERNAL_DISPLAY_ROTATION_KEY);
+ assertThat(pref).isNull();
+ var footerPref = (FooterPreference) mPreferenceScreen.findPreference(KEY_FOOTER);
+ assertThat(footerPref).isNull();
+ }
+
+ @Test
+ @UiThreadTest
+ public void testNoDisplays() {
+ doReturn(new Display[0]).when(mMockedInjector).getAllDisplays();
+ initFragment();
+ mHandler.flush();
+ var mainPref = (MainSwitchPreference) mPreferenceScreen.findPreference(
+ EXTERNAL_DISPLAY_USE_PREFERENCE_KEY);
+ assertThat(mainPref).isNotNull();
+ assertThat("" + mainPref.getTitle()).isEqualTo(
+ getText(EXTERNAL_DISPLAY_USE_TITLE_RESOURCE));
+ assertThat(mainPref.isChecked()).isFalse();
+ assertThat(mainPref.isEnabled()).isFalse();
+ assertThat(mainPref.getOnPreferenceChangeListener()).isNull();
+ var footerPref = (FooterPreference) mPreferenceScreen.findPreference(KEY_FOOTER);
+ assertThat(footerPref).isNotNull();
+ verify(footerPref).setTitle(EXTERNAL_DISPLAY_NOT_FOUND_FOOTER_RESOURCE);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testDisplayRotationPreference() {
+ mDisplayIdArg = 1;
+ doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
+ var fragment = initFragment();
+ mHandler.flush();
+ var pref = fragment.getRotationPreference(mContext);
+ assertThat(pref.getKey()).isEqualTo(EXTERNAL_DISPLAY_ROTATION_KEY);
+ assertThat("" + pref.getTitle()).isEqualTo(
+ getText(EXTERNAL_DISPLAY_ROTATION_TITLE_RESOURCE));
+ assertThat(pref.getEntries().length).isEqualTo(4);
+ assertThat(pref.getEntryValues().length).isEqualTo(4);
+ assertThat(pref.getEntryValues()[0].toString()).isEqualTo("0");
+ assertThat(pref.getEntryValues()[1].toString()).isEqualTo("1");
+ assertThat(pref.getEntryValues()[2].toString()).isEqualTo("2");
+ assertThat(pref.getEntryValues()[3].toString()).isEqualTo("3");
+ assertThat(pref.getEntries()[0].length()).isGreaterThan(0);
+ assertThat(pref.getEntries()[1].length()).isGreaterThan(0);
+ assertThat("" + pref.getSummary()).isEqualTo(pref.getEntries()[0].toString());
+ assertThat(pref.getValue()).isEqualTo("0");
+ assertThat(pref.getOnPreferenceChangeListener()).isNotNull();
+ assertThat(pref.isEnabled()).isTrue();
+ var rotation = 1;
+ doReturn(true).when(mMockedInjector).freezeDisplayRotation(mDisplayIdArg, rotation);
+ assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, rotation + ""))
+ .isTrue();
+ verify(mMockedInjector).freezeDisplayRotation(mDisplayIdArg, rotation);
+ assertThat(pref.getValue()).isEqualTo(rotation + "");
+ verify(mMockedMetricsLogger).writePreferenceClickMetric(pref);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testDisplayResolutionPreference() {
+ mDisplayIdArg = 1;
+ doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
+ var fragment = initFragment();
+ mHandler.flush();
+ var pref = fragment.getResolutionPreference(mContext);
+ assertThat(pref.getKey()).isEqualTo(EXTERNAL_DISPLAY_RESOLUTION_PREFERENCE_KEY);
+ assertThat("" + pref.getTitle()).isEqualTo(
+ getText(EXTERNAL_DISPLAY_RESOLUTION_TITLE_RESOURCE));
+ assertThat("" + pref.getSummary()).isEqualTo("1920 x 1080");
+ assertThat(pref.isEnabled()).isTrue();
+ assertThat(pref.getOnPreferenceClickListener()).isNotNull();
+ assertThat(pref.getOnPreferenceClickListener().onPreferenceClick(pref)).isTrue();
+ assertThat(mResolutionSelectorDisplayId).isEqualTo(mDisplayIdArg);
+ verify(mMockedMetricsLogger).writePreferenceClickMetric(pref);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testUseDisplayPreference_EnabledDisplay() {
+ mDisplayIdArg = 1;
+ doReturn(true).when(mMockedInjector).isDisplayEnabled(any());
+ doReturn(true).when(mMockedInjector).enableConnectedDisplay(mDisplayIdArg);
+ doReturn(true).when(mMockedInjector).disableConnectedDisplay(mDisplayIdArg);
+ var fragment = initFragment();
+ mHandler.flush();
+ var pref = fragment.getUseDisplayPreference(mContext);
+ assertThat(pref.getKey()).isEqualTo(EXTERNAL_DISPLAY_USE_PREFERENCE_KEY);
+ assertThat("" + pref.getTitle()).isEqualTo(getText(EXTERNAL_DISPLAY_USE_TITLE_RESOURCE));
+ assertThat(pref.isEnabled()).isTrue();
+ assertThat(pref.isChecked()).isTrue();
+ assertThat(pref.getOnPreferenceChangeListener()).isNotNull();
+ assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, false)).isTrue();
+ verify(mMockedInjector).disableConnectedDisplay(mDisplayIdArg);
+ assertThat(pref.isChecked()).isFalse();
+ assertThat(pref.getOnPreferenceChangeListener().onPreferenceChange(pref, true)).isTrue();
+ verify(mMockedInjector).enableConnectedDisplay(mDisplayIdArg);
+ assertThat(pref.isChecked()).isTrue();
+ verify(mMockedMetricsLogger, times(2)).writePreferenceClickMetric(pref);
+ }
+
+ @NonNull
+ private ExternalDisplayPreferenceFragment initFragment() {
+ if (mFragment != null) {
+ return mFragment;
+ }
+ mFragment = new TestableExternalDisplayPreferenceFragment();
+ mFragment.onCreateCallback(null);
+ mFragment.onActivityCreatedCallback(null);
+ mFragment.onStartCallback();
+ return mFragment;
+ }
+
+ @NonNull
+ private Bundle createBundleForPreviouslyShownList() {
+ var state = new Bundle();
+ state.putBoolean(PREVIOUSLY_SHOWN_LIST_KEY, true);
+ return state;
+ }
+
+ @NonNull
+ private String getText(int id) {
+ return mContext.getResources().getText(id).toString();
+ }
+
+ private class TestableExternalDisplayPreferenceFragment extends
+ ExternalDisplayPreferenceFragment {
+ private final View mMockedRootView;
+ private final TextView mEmptyView;
+ private final Activity mMockedActivity;
+ private final FooterPreference mMockedFooterPreference;
+ private final MetricsLogger mLogger;
+
+ TestableExternalDisplayPreferenceFragment() {
+ super(mMockedInjector);
+ mMockedActivity = mock(Activity.class);
+ mMockedRootView = mock(View.class);
+ mMockedFooterPreference = mock(FooterPreference.class);
+ doReturn(KEY_FOOTER).when(mMockedFooterPreference).getKey();
+ mEmptyView = new TextView(mContext);
+ doReturn(mEmptyView).when(mMockedRootView).findViewById(android.R.id.empty);
+ mLogger = mMockedMetricsLogger;
+ }
+
+ @Override
+ public PreferenceScreen getPreferenceScreen() {
+ return mPreferenceScreen;
+ }
+
+ @Override
+ protected Activity getCurrentActivity() {
+ return mMockedActivity;
+ }
+
+ @Override
+ public View getView() {
+ return mMockedRootView;
+ }
+
+ @Override
+ public void setEmptyView(View view) {
+ assertThat(view).isEqualTo(mEmptyView);
+ }
+
+ @Override
+ public View getEmptyView() {
+ return mEmptyView;
+ }
+
+ @Override
+ public void addPreferencesFromResource(int resource) {
+ mPreferenceIdFromResource = resource;
+ }
+
+ @Override
+ @NonNull
+ FooterPreference getFooterPreference(@NonNull Context context) {
+ return mMockedFooterPreference;
+ }
+
+ @Override
+ protected int getDisplayIdArg() {
+ return mDisplayIdArg;
+ }
+
+ @Override
+ protected void launchResolutionSelector(@NonNull Context context, int displayId) {
+ mResolutionSelectorDisplayId = displayId;
+ }
+
+ @Override
+ protected void launchDisplaySettings(final int displayId) {
+ mDisplayIdArg = displayId;
+ }
+
+ @Override
+ protected void writePreferenceClickMetric(Preference preference) {
+ mLogger.writePreferenceClickMetric(preference);
+ }
+ }
+
+ /**
+ * Interface allowing to mock and spy on log events.
+ */
+ public interface MetricsLogger {
+
+ /**
+ * On preference click metric
+ */
+ void writePreferenceClickMetric(Preference preference);
+ }
+}
diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java
new file mode 100644
index 0000000..60b0342
--- /dev/null
+++ b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayTestBase.java
@@ -0,0 +1,149 @@
+/*
+ * 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.connecteddevice.display;
+
+import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY;
+import static com.android.settings.flags.Flags.FLAG_ROTATION_CONNECTED_DISPLAY_SETTING;
+import static com.android.settings.flags.Flags.FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING;
+
+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.spy;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.hardware.display.DisplayManagerGlobal;
+import android.hardware.display.IDisplayManager;
+import android.os.RemoteException;
+import android.view.Display;
+import android.view.DisplayAdjustments;
+import android.view.DisplayInfo;
+
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.server.testutils.TestHandler;
+import com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DisplayListener;
+import com.android.settings.flags.FakeFeatureFlagsImpl;
+
+import org.junit.Before;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class ExternalDisplayTestBase {
+ @Mock
+ ExternalDisplaySettingsConfiguration.Injector mMockedInjector;
+ @Mock
+ IDisplayManager mMockedIDisplayManager;
+ Resources mResources;
+ DisplayManagerGlobal mDisplayManagerGlobal;
+ FakeFeatureFlagsImpl mFlags = new FakeFeatureFlagsImpl();
+ Context mContext;
+ DisplayListener mListener;
+ TestHandler mHandler = new TestHandler(null);
+ PreferenceManager mPreferenceManager;
+ PreferenceScreen mPreferenceScreen;
+ Display[] mDisplays;
+
+ /**
+ * Setup.
+ */
+ @Before
+ public void setUp() throws RemoteException {
+ MockitoAnnotations.initMocks(this);
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ mResources = spy(mContext.getResources());
+ doReturn(mResources).when(mContext).getResources();
+ mPreferenceManager = new PreferenceManager(mContext);
+ mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
+ doReturn(0).when(mMockedIDisplayManager).getPreferredWideGamutColorSpaceId();
+ mDisplayManagerGlobal = new DisplayManagerGlobal(mMockedIDisplayManager);
+ mFlags.setFlag(FLAG_ROTATION_CONNECTED_DISPLAY_SETTING, true);
+ mFlags.setFlag(FLAG_RESOLUTION_AND_ENABLE_CONNECTED_DISPLAY_SETTING, true);
+ mDisplays = new Display[] {
+ createDefaultDisplay(), createExternalDisplay(), createOverlayDisplay()};
+ doReturn(mDisplays).when(mMockedInjector).getAllDisplays();
+ doReturn(mDisplays).when(mMockedInjector).getEnabledDisplays();
+ for (var display : mDisplays) {
+ doReturn(display).when(mMockedInjector).getDisplay(display.getDisplayId());
+ }
+ doReturn(mFlags).when(mMockedInjector).getFlags();
+ doReturn(mHandler).when(mMockedInjector).getHandler();
+ doReturn("").when(mMockedInjector).getSystemProperty(
+ VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY);
+ doAnswer((arg) -> {
+ mListener = arg.getArgument(0);
+ return null;
+ }).when(mMockedInjector).registerDisplayListener(any());
+ doReturn(0).when(mMockedInjector).getDisplayUserRotation(anyInt());
+ doReturn(mContext).when(mMockedInjector).getContext();
+ }
+
+ Display createDefaultDisplay() throws RemoteException {
+ int displayId = 0;
+ var displayInfo = new DisplayInfo();
+ doReturn(displayInfo).when(mMockedIDisplayManager).getDisplayInfo(displayId);
+ displayInfo.displayId = displayId;
+ displayInfo.name = "Built-in";
+ displayInfo.type = Display.TYPE_INTERNAL;
+ displayInfo.supportedModes = new Display.Mode[]{
+ new Display.Mode(0, 2048, 1024, 60, 60, new float[0],
+ new int[0])};
+ displayInfo.appsSupportedModes = displayInfo.supportedModes;
+ return createDisplay(displayInfo);
+ }
+
+ Display createExternalDisplay() throws RemoteException {
+ int displayId = 1;
+ var displayInfo = new DisplayInfo();
+ doReturn(displayInfo).when(mMockedIDisplayManager).getDisplayInfo(displayId);
+ displayInfo.displayId = displayId;
+ displayInfo.name = "HDMI";
+ displayInfo.type = Display.TYPE_EXTERNAL;
+ displayInfo.supportedModes = new Display.Mode[]{
+ new Display.Mode(0, 1920, 1080, 60, 60, new float[0], new int[0]),
+ new Display.Mode(1, 800, 600, 60, 60, new float[0], new int[0]),
+ new Display.Mode(2, 320, 240, 70, 70, new float[0], new int[0]),
+ new Display.Mode(3, 640, 480, 60, 60, new float[0], new int[0]),
+ new Display.Mode(4, 640, 480, 50, 60, new float[0], new int[0]),
+ new Display.Mode(5, 2048, 1024, 60, 60, new float[0], new int[0]),
+ new Display.Mode(6, 720, 480, 60, 60, new float[0], new int[0])};
+ displayInfo.appsSupportedModes = displayInfo.supportedModes;
+ return createDisplay(displayInfo);
+ }
+
+ Display createOverlayDisplay() throws RemoteException {
+ int displayId = 2;
+ var displayInfo = new DisplayInfo();
+ doReturn(displayInfo).when(mMockedIDisplayManager).getDisplayInfo(displayId);
+ displayInfo.displayId = displayId;
+ displayInfo.name = "Overlay #1";
+ displayInfo.type = Display.TYPE_OVERLAY;
+ displayInfo.supportedModes = new Display.Mode[]{
+ new Display.Mode(0, 1240, 780, 60, 60, new float[0],
+ new int[0])};
+ displayInfo.appsSupportedModes = displayInfo.supportedModes;
+ return createDisplay(displayInfo);
+ }
+
+ Display createDisplay(DisplayInfo displayInfo) {
+ return new Display(mDisplayManagerGlobal, displayInfo.displayId, displayInfo,
+ (DisplayAdjustments) null);
+ }
+}
diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdaterTest.java b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdaterTest.java
new file mode 100644
index 0000000..824974a
--- /dev/null
+++ b/tests/unit/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdaterTest.java
@@ -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.connecteddevice.display;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.RemoteException;
+import android.view.Display;
+
+import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.connecteddevice.DevicePreferenceCallback;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedPreference;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+/** Unit tests for {@link ExternalDisplayUpdater}. */
+@RunWith(AndroidJUnit4.class)
+public class ExternalDisplayUpdaterTest extends ExternalDisplayTestBase {
+
+ private ExternalDisplayUpdater mUpdater;
+ @Mock
+ private DevicePreferenceCallback mMockedCallback;
+ @Mock
+ private Drawable mMockedDrawable;
+ private RestrictedPreference mPreferenceAdded;
+ private RestrictedPreference mPreferenceRemoved;
+
+ @Before
+ public void setUp() throws RemoteException {
+ super.setUp();
+ mUpdater = new TestableExternalDisplayUpdater(mMockedCallback, /*metricsCategory=*/ 0);
+ }
+
+ @Test
+ public void testPreferenceAdded() {
+ doAnswer((v) -> {
+ mPreferenceAdded = v.getArgument(0);
+ return null;
+ }).when(mMockedCallback).onDeviceAdded(any());
+ mUpdater.initPreference(mContext, mMockedInjector);
+ mUpdater.registerCallback();
+ mHandler.flush();
+ assertThat(mPreferenceAdded).isNotNull();
+ var summary = mPreferenceAdded.getSummary();
+ assertThat(summary).isNotNull();
+ assertThat(summary.length()).isGreaterThan(0);
+ var title = mPreferenceAdded.getTitle();
+ assertThat(title).isNotNull();
+ assertThat(title.length()).isGreaterThan(0);
+ }
+
+ @Test
+ public void testPreferenceRemoved() {
+ doAnswer((v) -> {
+ mPreferenceAdded = v.getArgument(0);
+ return null;
+ }).when(mMockedCallback).onDeviceAdded(any());
+ doAnswer((v) -> {
+ mPreferenceRemoved = v.getArgument(0);
+ return null;
+ }).when(mMockedCallback).onDeviceRemoved(any());
+ mUpdater.initPreference(mContext, mMockedInjector);
+ mUpdater.registerCallback();
+ mHandler.flush();
+ assertThat(mPreferenceAdded).isNotNull();
+ assertThat(mPreferenceRemoved).isNull();
+ // Remove display
+ doReturn(new Display[0]).when(mMockedInjector).getAllDisplays();
+ doReturn(new Display[0]).when(mMockedInjector).getEnabledDisplays();
+ mListener.onDisplayRemoved(1);
+ mHandler.flush();
+ assertThat(mPreferenceRemoved).isEqualTo(mPreferenceAdded);
+ }
+
+ class TestableExternalDisplayUpdater extends ExternalDisplayUpdater {
+ TestableExternalDisplayUpdater(
+ DevicePreferenceCallback callback,
+ int metricsCategory) {
+ super(callback, metricsCategory);
+ }
+
+ @Override
+ @Nullable
+ protected RestrictedLockUtils.EnforcedAdmin checkIfUsbDataSignalingIsDisabled(
+ Context context) {
+ // if null is returned - usb signalling is enabled
+ return null;
+ }
+
+ @Override
+ @Nullable
+ protected Drawable getDrawable(Context context) {
+ return mMockedDrawable;
+ }
+ }
+}
diff --git a/tests/unit/src/com/android/settings/connecteddevice/display/ResolutionPreferenceFragmentTest.java b/tests/unit/src/com/android/settings/connecteddevice/display/ResolutionPreferenceFragmentTest.java
new file mode 100644
index 0000000..ee38a1c
--- /dev/null
+++ b/tests/unit/src/com/android/settings/connecteddevice/display/ResolutionPreferenceFragmentTest.java
@@ -0,0 +1,195 @@
+/*
+ * 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.connecteddevice.display;
+
+import static android.view.Display.INVALID_DISPLAY;
+
+import static com.android.settings.connecteddevice.display.ResolutionPreferenceFragment.EXTERNAL_DISPLAY_RESOLUTION_SETTINGS_RESOURCE;
+import static com.android.settings.connecteddevice.display.ResolutionPreferenceFragment.MORE_OPTIONS_KEY;
+import static com.android.settings.connecteddevice.display.ResolutionPreferenceFragment.TOP_OPTIONS_KEY;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settingslib.widget.SelectorWithWidgetPreference;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+/** Unit tests for {@link ResolutionPreferenceFragment}. */
+@RunWith(AndroidJUnit4.class)
+public class ResolutionPreferenceFragmentTest extends ExternalDisplayTestBase {
+ @Nullable
+ private ResolutionPreferenceFragment mFragment;
+ private int mPreferenceIdFromResource;
+ private int mDisplayIdArg = INVALID_DISPLAY;
+ @Mock
+ private MetricsLogger mMockedMetricsLogger;
+
+ @Test
+ @UiThreadTest
+ public void testCreateAndStart() {
+ initFragment();
+ mHandler.flush();
+ assertThat(mPreferenceIdFromResource).isEqualTo(
+ EXTERNAL_DISPLAY_RESOLUTION_SETTINGS_RESOURCE);
+ var pref = mPreferenceScreen.findPreference(TOP_OPTIONS_KEY);
+ assertThat(pref).isNull();
+ pref = mPreferenceScreen.findPreference(MORE_OPTIONS_KEY);
+ assertThat(pref).isNull();
+ }
+
+ @Test
+ @UiThreadTest
+ public void testCreateAndStartDefaultDisplayNotAllowed() {
+ mDisplayIdArg = 0;
+ initFragment();
+ mHandler.flush();
+ var pref = mPreferenceScreen.findPreference(TOP_OPTIONS_KEY);
+ assertThat(pref).isNull();
+ pref = mPreferenceScreen.findPreference(MORE_OPTIONS_KEY);
+ assertThat(pref).isNull();
+ }
+
+ @Test
+ @UiThreadTest
+ public void testModePreferences() {
+ mDisplayIdArg = 1;
+ initFragment();
+ mHandler.flush();
+ PreferenceCategory topPref = mPreferenceScreen.findPreference(TOP_OPTIONS_KEY);
+ assertThat(topPref).isNotNull();
+ PreferenceCategory morePref = mPreferenceScreen.findPreference(MORE_OPTIONS_KEY);
+ assertThat(morePref).isNotNull();
+ assertThat(topPref.getPreferenceCount()).isEqualTo(3);
+ assertThat(morePref.getPreferenceCount()).isEqualTo(1);
+ }
+
+ @Test
+ @UiThreadTest
+ public void testModeChange() {
+ mDisplayIdArg = 1;
+ initFragment();
+ mHandler.flush();
+ PreferenceCategory topPref = mPreferenceScreen.findPreference(TOP_OPTIONS_KEY);
+ assertThat(topPref).isNotNull();
+ var modePref = (SelectorWithWidgetPreference) topPref.getPreference(1);
+ modePref.onClick();
+ var mode = mDisplays[mDisplayIdArg].getSupportedModes()[1];
+ verify(mMockedInjector).setUserPreferredDisplayMode(mDisplayIdArg, mode);
+ }
+
+ private void initFragment() {
+ if (mFragment != null) {
+ return;
+ }
+ mFragment = new TestableResolutionPreferenceFragment();
+ mFragment.onCreateCallback(null);
+ mFragment.onActivityCreatedCallback(null);
+ mFragment.onStartCallback();
+ }
+
+ private class TestableResolutionPreferenceFragment extends ResolutionPreferenceFragment {
+ private final View mMockedRootView;
+ private final TextView mEmptyView;
+ private final Resources mMockedResources;
+ private final MetricsLogger mLogger;
+ TestableResolutionPreferenceFragment() {
+ super(mMockedInjector);
+ mMockedResources = mock(Resources.class);
+ doReturn(61).when(mMockedResources).getInteger(
+ com.android.internal.R.integer.config_externalDisplayPeakRefreshRate);
+ doReturn(1920).when(mMockedResources).getInteger(
+ com.android.internal.R.integer.config_externalDisplayPeakWidth);
+ doReturn(1080).when(mMockedResources).getInteger(
+ com.android.internal.R.integer.config_externalDisplayPeakHeight);
+ doReturn(true).when(mMockedResources).getBoolean(
+ com.android.internal.R.bool.config_refreshRateSynchronizationEnabled);
+ mMockedRootView = mock(View.class);
+ mEmptyView = new TextView(mContext);
+ doReturn(mEmptyView).when(mMockedRootView).findViewById(android.R.id.empty);
+ mLogger = mMockedMetricsLogger;
+ }
+
+ @Override
+ public PreferenceScreen getPreferenceScreen() {
+ return mPreferenceScreen;
+ }
+
+ @Override
+ public View getView() {
+ return mMockedRootView;
+ }
+
+ @Override
+ public void setEmptyView(View view) {
+ assertThat(view).isEqualTo(mEmptyView);
+ }
+
+ @Override
+ public View getEmptyView() {
+ return mEmptyView;
+ }
+
+ @Override
+ public void addPreferencesFromResource(int resource) {
+ mPreferenceIdFromResource = resource;
+ }
+
+ @Override
+ protected int getDisplayIdArg() {
+ return mDisplayIdArg;
+ }
+
+ @Override
+ protected void writePreferenceClickMetric(Preference preference) {
+ mLogger.writePreferenceClickMetric(preference);
+ }
+
+ @Override
+ @NonNull
+ protected Resources getResources(@NonNull Context context) {
+ return mMockedResources;
+ }
+ }
+
+ /**
+ * Interface allowing to mock and spy on log events.
+ */
+ public interface MetricsLogger {
+ /**
+ * On preference click metric
+ */
+ void writePreferenceClickMetric(Preference preference);
+ }
+}
diff --git a/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java
index 2a0cd05..5eb76f1 100644
--- a/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java
@@ -29,6 +29,8 @@
import android.content.Context;
import com.android.settings.media_drm.Flags;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.SwitchPreference;
@@ -65,10 +67,10 @@
}
@Test
+ @EnableFlags(Flags.FLAG_FORCE_L3_ENABLED)
public void updateState_flagEnabled_checkPreference() {
- mSetFlagsRule.enableFlags(Flags.FLAG_FORCE_L3_ENABLED);
mController.updateState(mPreference);
- assumeTrue(mPreference.isEnabled());
+ assertThat(mPreference.isEnabled()).isTrue();
assertThat(mPreference.isChecked()).isFalse();
assertThat(WidevineProperties.forcel3_enabled().orElse(false)).isFalse();
@@ -85,33 +87,22 @@
assertThat(WidevineProperties.forcel3_enabled().orElse(false)).isFalse();
assertThat(mPreference.isEnabled()).isTrue();
assertThat(mPreference.isChecked()).isFalse();
-
- // Test flag rollback
- mController.setChecked(true);
- mController.updateState(mPreference);
- assertThat(mPreference.isChecked()).isTrue();
- assertThat(WidevineProperties.forcel3_enabled().orElse(false)).isTrue();
- mSetFlagsRule.disableFlags(Flags.FLAG_FORCE_L3_ENABLED);
- mController.updateState(mPreference);
- assertThat(mPreference.isEnabled()).isFalse();
- assertThat(mPreference.isChecked()).isFalse();
- assertThat(WidevineProperties.forcel3_enabled().orElse(false)).isFalse();
}
@Test
+ @DisableFlags(Flags.FLAG_FORCE_L3_ENABLED)
public void updateState_flagDisabled_checkPreference() {
- mSetFlagsRule.disableFlags(Flags.FLAG_FORCE_L3_ENABLED);
mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isFalse();
}
@Test
+ @EnableFlags(Flags.FLAG_FORCE_L3_ENABLED)
public void updateState_checkWidevine() throws Exception {
try (MediaDrm drm = new MediaDrm(WIDEVINE_UUID)) {
assumeTrue(drm.getPropertyString("securityLevel").equals("L1"));
- mSetFlagsRule.enableFlags(Flags.FLAG_FORCE_L3_ENABLED);
mController.updateState(mPreference);
- assumeTrue(mPreference.isEnabled());
+ assertThat(mPreference.isEnabled()).isTrue();
} catch (UnsupportedSchemeException ex) {
assumeNoException(ex);
}
@@ -139,11 +130,11 @@
}
@Test
+ @EnableFlags(Flags.FLAG_FORCE_L3_ENABLED)
public void updateState_checkWhenWidevineReady() throws Exception {
try (MediaDrm drm = new MediaDrm(WIDEVINE_UUID)) {
if (drm.getPropertyString("securityLevel").equals("L1")) {
String version = drm.getPropertyString(MediaDrm.PROPERTY_VERSION);
- mSetFlagsRule.enableFlags(Flags.FLAG_FORCE_L3_ENABLED);
mController.updateState(mPreference);
if (Integer.parseInt(version.split("\\.", 2)[0]) >= 19) {
assertThat(mPreference.isEnabled()).isTrue();
diff --git a/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt b/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
index 76ae491..95f69da 100644
--- a/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
+++ b/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
@@ -26,6 +26,7 @@
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNKNOWN
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME
+import com.android.settings.testutils.FakeFeatureFactory
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
@@ -51,9 +52,14 @@
@Spy
private var testBatteryOptimizeUtils = spy(BatteryOptimizeUtils(context, UID, PACKAGE_NAME))
+ private lateinit var featureFactory: FakeFeatureFactory
+
@Before
fun setup() {
AppOptModeSharedPreferencesUtils.clearAll(context)
+ featureFactory = FakeFeatureFactory.setupForTest()
+ whenever(featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled)
+ .thenReturn(false)
}
@After
@@ -77,8 +83,17 @@
}
@Test
- fun updateAppOptModeExpirationInternal_withExpirationTime_verifyData() {
- insertAppOptModeEventForTest(expirationTime = 1000L)
+ fun updateAppOptModeExpirationInternal_withoutExpirationTime_verifyEmptyList() {
+ insertAppOptModeEventForTest(expirationTime = UNLIMITED_EXPIRE_TIME)
+
+ assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
+ }
+
+ @Test
+ fun updateAppOptModeExpirationInternal_setOptimizedModeWithFlagEnabled_verifyData() {
+ whenever(featureFactory.powerUsageFeatureProvider.isRestrictedModeOverwriteEnabled)
+ .thenReturn(true)
+ insertAppOptModeEventForTest(expirationTime = 1000L, mode = MODE_OPTIMIZED)
val events = AppOptModeSharedPreferencesUtils.getAllEvents(context)
@@ -93,8 +108,46 @@
}
@Test
- fun updateAppOptModeExpirationInternal_withoutExpirationTime_verifyEmptyList() {
- insertAppOptModeEventForTest(expirationTime = UNLIMITED_EXPIRE_TIME)
+ fun updateAppOptModeExpirationInternal_setOptimizedModeWithFlagDisabled_verifyData() {
+ whenever(featureFactory.powerUsageFeatureProvider.isRestrictedModeOverwriteEnabled)
+ .thenReturn(false)
+ insertAppOptModeEventForTest(expirationTime = 1000L, mode = MODE_OPTIMIZED)
+
+ val events = AppOptModeSharedPreferencesUtils.getAllEvents(context)
+
+ assertThat(events).hasSize(1)
+ assertAppOptimizationModeEventInfo(
+ events[0],
+ UID,
+ PACKAGE_NAME,
+ MODE_OPTIMIZED,
+ expirationTime = 1000L
+ )
+ }
+
+ @Test
+ fun updateAppOptModeExpirationInternal_setRestrictedModeWithFlagEnabled_verifyData() {
+ whenever(featureFactory.powerUsageFeatureProvider.isRestrictedModeOverwriteEnabled)
+ .thenReturn(true)
+ insertAppOptModeEventForTest(expirationTime = 1000L, mode = MODE_RESTRICTED)
+
+ val events = AppOptModeSharedPreferencesUtils.getAllEvents(context)
+
+ assertThat(events).hasSize(1)
+ assertAppOptimizationModeEventInfo(
+ events[0],
+ UID,
+ PACKAGE_NAME,
+ MODE_RESTRICTED,
+ expirationTime = 1000L
+ )
+ }
+
+ @Test
+ fun updateAppOptModeExpirationInternal_setRestrictedModeWithFlagDisabled_verifyEmptyList() {
+ whenever(featureFactory.powerUsageFeatureProvider.isRestrictedModeOverwriteEnabled)
+ .thenReturn(false)
+ insertAppOptModeEventForTest(expirationTime = 1000L, mode = MODE_RESTRICTED)
assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
}
@@ -127,6 +180,20 @@
}
@Test
+ fun resetExpiredAppOptModeBeforeTimestamp_forceExpiredData_verifyEmptyList() {
+ whenever(featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled)
+ .thenReturn(true)
+ insertAppOptModeEventForTest(expirationTime = 1000L)
+
+ AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp(
+ context,
+ queryTimestampMs = 999L
+ )
+
+ assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
+ }
+
+ @Test
fun resetExpiredAppOptModeBeforeTimestamp_noExpiredData_verifyData() {
insertAppOptModeEventForTest(expirationTime = 1000L)
@@ -217,14 +284,14 @@
assertThat(currentOptMode).isEqualTo(MODE_RESTRICTED)
}
- private fun insertAppOptModeEventForTest(expirationTime: Long) {
+ private fun insertAppOptModeEventForTest(expirationTime: Long, mode: Int = MODE_OPTIMIZED) {
whenever(testBatteryOptimizeUtils?.isOptimizeModeMutable).thenReturn(true)
- whenever(testBatteryOptimizeUtils?.getAppOptimizationMode(true)).thenReturn(MODE_OPTIMIZED)
+ whenever(testBatteryOptimizeUtils?.getAppOptimizationMode(true)).thenReturn(mode)
AppOptModeSharedPreferencesUtils.updateAppOptModeExpirationInternal(
context,
mutableListOf(UID),
mutableListOf(PACKAGE_NAME),
- mutableListOf(MODE_OPTIMIZED),
+ mutableListOf(mode),
longArrayOf(expirationTime),
) { _: Int, _: String ->
testBatteryOptimizeUtils
diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsFragmentTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsFragmentTest.java
index cc9e116..fa61820 100644
--- a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsFragmentTest.java
+++ b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsFragmentTest.java
@@ -22,6 +22,7 @@
import android.content.Context;
import android.os.Looper;
+import android.platform.test.annotations.DisableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import androidx.test.annotation.UiThreadTest;
@@ -54,11 +55,11 @@
if (Looper.myLooper() == null) {
Looper.prepare();
}
- mSetFlagsRule.disableFlags(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED);
}
@Test
@UiThreadTest
+ @DisableFlags(Flags.FLAG_IS_DUAL_SIM_ONBOARDING_ENABLED)
public void isPageSearchEnabled_shouldIncludeFragmentXml() {
mPreferenceKeyList =
NetworkProviderCallsSmsFragment.SEARCH_INDEX_DATA_PROVIDER
diff --git a/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java b/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java
index 5f54406..7f1c475 100644
--- a/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java
+++ b/tests/unit/src/com/android/settings/network/ResetNetworkOperationBuilderTest.java
@@ -16,20 +16,16 @@
package com.android.settings.network;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
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 android.content.ContentProvider;
-import android.content.ContentResolver;
+import android.content.ContentProviderClient;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkPolicyManager;
@@ -67,7 +63,7 @@
@Mock
private NetworkPolicyManager mNetworkPolicyManager;
@Mock
- private ContentProvider mContentProvider;;
+ private ContentProviderClient mContentProviderClient;
private Context mContext;
@@ -77,9 +73,8 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
- doReturn(ContentResolver.wrap(mContentProvider)).when(mContext).getContentResolver();
-
mBuilder = spy(new ResetNetworkOperationBuilder(mContext));
+ doReturn(mContentProviderClient).when(mBuilder).getUnstableTelephonyContentProviderClient();
}
@Test
@@ -184,38 +179,38 @@
}
@Test
- public void restartPhoneProcess_withoutTelephonyContentProvider_shouldNotCrash() {
- doThrow(new IllegalArgumentException()).when(mContentProvider).call(
- anyString(), anyString(), anyString(), any());
+ public void restartPhoneProcess_withoutTelephonyContentProvider_shouldNotCrash()
+ throws Exception {
+ doReturn(null).when(mBuilder).getUnstableTelephonyContentProviderClient();
mBuilder.restartPhoneProcess().build().run();
}
@Test
- public void restartRild_withoutTelephonyContentProvider_shouldNotCrash() {
- doThrow(new IllegalArgumentException()).when(mContentProvider).call(
- anyString(), anyString(), anyString(), any());
+ public void restartRild_withoutTelephonyContentProvider_shouldNotCrash()
+ throws Exception {
+ doReturn(null).when(mBuilder).getUnstableTelephonyContentProviderClient();
mBuilder.restartRild().build().run();
}
@Test
- public void restartPhoneProcess_withTelephonyContentProvider_shouldCallRestartPhoneProcess() {
+ public void restartPhoneProcess_withTelephonyContentProvider_shouldCallRestartPhoneProcess()
+ throws Exception {
mBuilder.restartPhoneProcess().build().run();
- verify(mContentProvider).call(
- eq(mBuilder.getResetTelephonyContentProviderAuthority()),
+ verify(mContentProviderClient).call(
eq(ResetNetworkOperationBuilder.METHOD_RESTART_PHONE_PROCESS),
isNull(),
isNull());
}
@Test
- public void restartRild_withTelephonyContentProvider_shouldCallRestartRild() {
+ public void restartRild_withTelephonyContentProvider_shouldCallRestartRild()
+ throws Exception {
mBuilder.restartRild().build().run();
- verify(mContentProvider).call(
- eq(mBuilder.getResetTelephonyContentProviderAuthority()),
+ verify(mContentProviderClient).call(
eq(ResetNetworkOperationBuilder.METHOD_RESTART_RILD),
isNull(),
isNull());
diff --git a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
index 152091a..f31e274 100644
--- a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
@@ -131,8 +131,7 @@
private MobileNetworkInfoEntity setupMobileNetworkInfoEntity(String subId,
boolean isDatEnabled) {
- return new MobileNetworkInfoEntity(subId, false, false, isDatEnabled, false, false, false,
- false, false, false, false, false);
+ return new MobileNetworkInfoEntity(subId, isDatEnabled, false);
}
@Test
diff --git a/tests/unit/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java
deleted file mode 100644
index d221280..0000000
--- a/tests/unit/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2020 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;
-
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyBoolean;
-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.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.os.Looper;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.lifecycle.LifecycleRegistry;
-import androidx.test.annotation.UiThreadTest;
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.settings.core.BasePreferenceController;
-import com.android.settingslib.RestrictedSwitchPreference;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@RunWith(AndroidJUnit4.class)
-public class RoamingPreferenceControllerTest {
- private static final int SUB_ID = 2;
-
- @Mock
- private FragmentManager mFragmentManager;
- @Mock
- private TelephonyManager mTelephonyManager;
- @Mock
- private TelephonyManager mInvalidTelephonyManager;
- @Mock
- private SubscriptionManager mSubscriptionManager;
- @Mock
- private FragmentTransaction mFragmentTransaction;
- @Mock
- private CarrierConfigManager mCarrierConfigManager;
- @Mock
- private Lifecycle mLifecycle;
- @Mock
- private LifecycleOwner mLifecycleOwner;
-
- private LifecycleRegistry mLifecycleRegistry;
- private RoamingPreferenceController mController;
- private RestrictedSwitchPreference mPreference;
- private Context mContext;
- private MobileNetworkInfoEntity mMobileNetworkInfoEntity;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
-
- if (Looper.myLooper() == null) {
- Looper.prepare();
- }
-
- mContext = spy(ApplicationProvider.getApplicationContext());
- doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
- doReturn(mSubscriptionManager).when(mContext).getSystemService(
- Context.TELEPHONY_SUBSCRIPTION_SERVICE);
-
- doReturn(mCarrierConfigManager).when(mContext).getSystemService(
- Context.CARRIER_CONFIG_SERVICE);
- doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
- doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
- SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- doReturn(mFragmentTransaction).when(mFragmentManager).beginTransaction();
-
- mPreference = spy(new RestrictedSwitchPreference(mContext));
- mController = spy(
- new RoamingPreferenceController(mContext, "roaming", mLifecycle, mLifecycleOwner,
- SUB_ID));
- mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
- when(mLifecycleOwner.getLifecycle()).thenReturn(mLifecycleRegistry);
- mController.init(mFragmentManager, SUB_ID, mMobileNetworkInfoEntity);
- mPreference.setKey(mController.getPreferenceKey());
- }
-
- private MobileNetworkInfoEntity setupMobileNetworkInfoEntity(String subId,
- boolean isDataRoaming) {
- return new MobileNetworkInfoEntity(subId, false, false, true, false, false, false, false,
- false, false, false, isDataRoaming);
- }
-
- @Test
- public void getAvailabilityStatus_validSubId_returnAvailable() {
- assertThat(mController.getAvailabilityStatus()).isEqualTo(
- AVAILABLE);
- }
-
- @Test
- public void getAvailabilityStatus_invalidSubId_returnUnsearchable() {
- mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID,
- mMobileNetworkInfoEntity);
-
- assertThat(mController.getAvailabilityStatus(
- SubscriptionManager.INVALID_SUBSCRIPTION_ID)).isEqualTo(
- BasePreferenceController.AVAILABLE_UNSEARCHABLE);
- }
-
- @Test
- public void isDialogNeeded_roamingDisabledWithoutFlag_returnTrue() {
- final PersistableBundle bundle = new PersistableBundle();
- bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, false);
- doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
- mMobileNetworkInfoEntity = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), false);
- mController.setMobileNetworkInfoEntity(mMobileNetworkInfoEntity);
-
- assertThat(mController.isDialogNeeded()).isTrue();
- }
-
- @Test
- public void isDialogNeeded_roamingEnabled_returnFalse() {
- mMobileNetworkInfoEntity = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true);
- mController.setMobileNetworkInfoEntity(mMobileNetworkInfoEntity);
-
- assertThat(mController.isDialogNeeded()).isFalse();
- }
-
- @Test
- @UiThreadTest
- public void setChecked_needDialog_showDialog() {
- mMobileNetworkInfoEntity = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), false);
- mController.setMobileNetworkInfoEntity(mMobileNetworkInfoEntity);
- doReturn(null).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
- mController.setChecked(true);
-
- verify(mFragmentManager).beginTransaction();
- }
-
- @Test
- public void updateState_invalidSubId_disabled() {
- mMobileNetworkInfoEntity = setupMobileNetworkInfoEntity(
- String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID), false);
- mController.setMobileNetworkInfoEntity(mMobileNetworkInfoEntity);
- mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID,
- mMobileNetworkInfoEntity);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isEnabled()).isFalse();
- }
-
- @Test
- public void updateState_validSubId_enabled() {
- mMobileNetworkInfoEntity = setupMobileNetworkInfoEntity(String.valueOf(SUB_ID), true);
- mController.setMobileNetworkInfoEntity(mMobileNetworkInfoEntity);
-
- mController.updateState(mPreference);
-
- assertThat(mPreference.isEnabled()).isTrue();
- assertThat(mPreference.isChecked()).isTrue();
- }
-
- @Test
- public void updateState_isNotDisabledByAdmin_shouldInvokeSetEnabled() {
- when(mPreference.isDisabledByAdmin()).thenReturn(false);
-
- mController.updateState(mPreference);
-
- verify(mPreference).setEnabled(anyBoolean());
- }
-
- @Test
- public void updateState_isDisabledByAdmin_shouldNotInvokeSetEnabled() {
- when(mPreference.isDisabledByAdmin()).thenReturn(true);
-
- mController.updateState(mPreference);
-
- verify(mPreference, never()).setEnabled(anyBoolean());
- }
-
- @Test
- public void getAvailabilityStatus_carrierConfigIsNull_shouldReturnAvailable() {
- doReturn(null).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
- assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
- }
-
- @Test
- public void getAvailabilityStatus_forceHomeNetworkIsFalse_shouldReturnAvailable() {
- final PersistableBundle bundle = new PersistableBundle();
- bundle.putBoolean(CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL, false);
- doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
- assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
- }
-
- @Test
- public void getAvailabilityStatus_forceHomeNetworkIsTrue_shouldReturnConditionallyAvailable() {
- final PersistableBundle bundle = new PersistableBundle();
- bundle.putBoolean(CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL, true);
- doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
-
- assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
- }
-}